Sorry I’m new at this forum so i don’t know if this is the right place. But i wanted to share my integration with the Meater temperature stick.
First you need to find your Meater api code. This is done by starting this curl script (reference: https://github.com/apption-labs/meater-cloud-public-rest-api) :
I formatted the temperatures to fahrenheit, converted the elapsed time and remaining time to Days, HH:MM, and converted the “updated_at” time from its UNIX timestamp to something useful.
To leave the temperatures in celsius just delete the ‘* (9/5) + 32’ from the value_template and the change the ‘°F’ to ‘°C’ in the unit_of_meaurement.
- platform: template
sensors:
internal_temperature_1_f:
unit_of_measurement: '°F'
friendly_name: "Meat Temperature"
icon_template: mdi:food-steak
value_template: "{{ '%.1f' | format(states('sensor.internal_temperature_1') | float * (9/5) + 32) }}"
ambient_temperature_1_f:
unit_of_measurement: '°F'
friendly_name: "Grill Temperature"
value_template: "{{ '%.1f' | format(states('sensor.ambient_temperature_1') | float * (9/5) + 32) }}"
icon_template: mdi:grill
cook_temperature_target_1_f:
unit_of_measurement: '°F'
friendly_name: "Target Temperature"
value_template: "{{ '%.1f' | format(states('sensor.cook_temperature_target_1') | float * (9/5) + 32) }}"
icon_template: mdi:thermometer-lines
cook_temperature_peak_1_f:
unit_of_measurement: '°F'
friendly_name: "Peak Temperature"
value_template: "{{ '%.1f' | format(states('sensor.cook_temperature_peak_1') | float * (9/5) + 32) }}"
icon_template: mdi:thermometer-lines
cook_time_elapsed_1_formatted:
friendly_name: "Elapsed Time"
icon_template: mdi:timer-sand
value_template: >-
{% set time = (states('sensor.cook_time_elapsed_1') | int * 100) | int %}
{% set minutes = ((time % 360000) / 6000) | int %}
{% set hours = ((time % 8640000) / 360000) | int %}
{% set days = (time / 8640000) | int %}
{%- if time < 6000 -%}
Less than a minute
{%- else -%}
{%- if days > 0 -%}
{{ days }}d
{%- endif -%}
{%- if hours > 0 -%}
{%- if days > 0 -%}
{{ ' ' }}
{%- endif -%}
{{ hours }}h
{%- endif -%}
{%- if minutes > 0 -%}
{%- if days > 0 or hours > 0 -%}
{{ ' ' }}
{%- endif -%}
{{ minutes }}m
{%- endif -%}
{%- endif -%}
cook_time_remaining_1_formatted:
friendly_name: "Remaining Time"
icon_template: mdi:timer-sand
value_template: >-
{% set time = (states('sensor.cook_time_remaining_1') | int * 100) | int %}
{% set minutes = ((time % 360000) / 6000) | int %}
{% set hours = ((time % 8640000) / 360000) | int %}
{% set days = (time / 8640000) | int %}
{%- if time < 6000 -%}
Unknown
{%- else -%}
{%- if days > 0 -%}
{{ days }}d
{%- endif -%}
{%- if hours > 0 -%}
{%- if days > 0 -%}
{{ ' ' }}
{%- endif -%}
{{ hours }}h
{%- endif -%}
{%- if minutes > 0 -%}
{%- if days > 0 or hours > 0 -%}
{{ ' ' }}
{%- endif -%}
{{ minutes }}m
{%- endif -%}
{%- endif -%}
updated_at_1_formatted:
friendly_name: "Last Updated"
value_template: "{{ states.sensor.updated_at_1.state | int | timestamp_custom('%-I:%M %p')}}"
icon_template: mdi:update
Hello, i am working on a similar project where i’m attempting to get MEATER temperatures sent to a Raspberry Pi via Python, and using those values as triggers. May I ask what software you are using to code this?
Well, I was searching for a way to connect a Meater block to a temperature controller.
Any idea how I should do that?
With a short google search I saw that it might be possible to achieve this with HA.
I didn’t buy anything yet, but I was thinking about a flameboss or a Smobot. Maybe even a combination of the two.
I also wondered if I could use a BBQ Dragon Chimny fan instead as I can use that for multiple purchases.
Hi There,
First of all: Nice integration of the meater!!
I’m a bit of a noob. I have my token and placed it in my secrets.
I copied the parts of @PeterFleur and teh part of @afishe2000 in my configuration.yaml :
# Meater
meater:
- platform: rest
name: meater
json_attributes:
- data
resource: https://public-api.cloud.meater.com/v1/devices/
headers:
Authorization: !secret meater
value_template: "OK"
- platform: template
sensors:
internal_temperature_1_f:
unit_of_measurement: '°F'
friendly_name: "Meat Temperature"
icon_template: mdi:food-steak
value_template: "{{ '%.1f' | format(states('sensor.internal_temperature_1') | float * (9/5) + 32) }}"
ambient_temperature_1_f:
unit_of_measurement: '°F'
friendly_name: "Grill Temperature"
value_template: "{{ '%.1f' | format(states('sensor.ambient_temperature_1') | float * (9/5) + 32) }}"
icon_template: mdi:grill
cook_temperature_target_1_f:
unit_of_measurement: '°F'
friendly_name: "Target Temperature"
value_template: "{{ '%.1f' | format(states('sensor.cook_temperature_target_1') | float * (9/5) + 32) }}"
icon_template: mdi:thermometer-lines
cook_temperature_peak_1_f:
unit_of_measurement: '°F'
friendly_name: "Peak Temperature"
value_template: "{{ '%.1f' | format(states('sensor.cook_temperature_peak_1') | float * (9/5) + 32) }}"
icon_template: mdi:thermometer-lines
cook_time_elapsed_1_formatted:
friendly_name: "Elapsed Time"
icon_template: mdi:timer-sand
value_template: >-
{% set time = (states('sensor.cook_time_elapsed_1') | int * 100) | int %}
{% set minutes = ((time % 360000) / 6000) | int %}
{% set hours = ((time % 8640000) / 360000) | int %}
{% set days = (time / 8640000) | int %}
{%- if time < 6000 -%}
Less than a minute
{%- else -%}
{%- if days > 0 -%}
{{ days }}d
{%- endif -%}
{%- if hours > 0 -%}
{%- if days > 0 -%}
{{ ' ' }}
{%- endif -%}
{{ hours }}h
{%- endif -%}
{%- if minutes > 0 -%}
{%- if days > 0 or hours > 0 -%}
{{ ' ' }}
{%- endif -%}
{{ minutes }}m
{%- endif -%}
{%- endif -%}
cook_time_remaining_1_formatted:
friendly_name: "Remaining Time"
icon_template: mdi:timer-sand
value_template: >-
{% set time = (states('sensor.cook_time_remaining_1') | int * 100) | int %}
{% set minutes = ((time % 360000) / 6000) | int %}
{% set hours = ((time % 8640000) / 360000) | int %}
{% set days = (time / 8640000) | int %}
{%- if time < 6000 -%}
Unknown
{%- else -%}
{%- if days > 0 -%}
{{ days }}d
{%- endif -%}
{%- if hours > 0 -%}
{%- if days > 0 -%}
{{ ' ' }}
{%- endif -%}
{{ hours }}h
{%- endif -%}
{%- if minutes > 0 -%}
{%- if days > 0 or hours > 0 -%}
{{ ' ' }}
{%- endif -%}
{{ minutes }}m
{%- endif -%}
{%- endif -%}
updated_at_1_formatted:
friendly_name: "Last Updated"
value_template: "{{ states.sensor.updated_at_1.state | int | timestamp_custom('%-I:%M %p')}}"
icon_template: mdi:update
When I restart Hass I get the folowing error.
The system cannot restart because the configuration is not valid: Component error: meater - Integration ‘meater’ not found.
Probably i do something very stupid. please help me.
Thanks!
Restart a couple of times, that is what I read multiple times
Go to integration and add the meater integration, it will be in the list of possible integrations and configure it with your cloud credentials.
No erros anymore so I hope this works
UPDATE: yes it works, but only with internal and external temp. seems like not all the options are available this way
someone give instructions on how to install this? I am fairly new at this home assistant and not sure how to follow the MEATER Cloud REST API raspatory. I been able to install UI stuff but I think this isnt in the UI yet. I assume I have to install it in a card manually?