Would love to be able to control Recteq smoker via Home Assistant Tuya Smart Life integration. It shows up as unsupported.
I’ve been reading that some people are getting it added into Smart Life and then it is appearing in Home Assistant already. I sold my smoker during a move, so can’t test nor confirm.
Have you already successfully integrated the smoker into Smart Life? That’s step 1. If successful, then will it display in Home Assistant?
Yeah it’s in Smart Life, but shows up in HA as
recteq (unsupported)
by Tuya
With no entities
When you add to Smart Life you have to reset the WiFi so it gets removed from the recteq app.
Found this on Reddit and helped me get local Tuya to work
https://www.reddit.com/r/recteq/s/kFriwnC0Dl
HomeAssistant + Recteq + RT-700 (“The Bull”)
Overview
This will quickly describe some of the steps needed to get the recteq configured in the latest versions of HA & (Local)Tuya.
If configured, you will be able to:
- Display Current and Target Temperatures, Probe A & B Temperatures
- Turn Smoker on and off
- Set Target Temperature NEW
Requirements
- HomeAssistant
- Tuya/LocalTuya
- Steps here are for LocalTuya, but should be similar for normal Tuya users
- Tuya IoT Platform
- Recteq Pellet Smoker
- This has only been tested with an RT-700.
Steps
- Install LocalTuya into HA as described in their docs.
- Configure the Tuya IoT Platform account. Details described in the LocalTuya docs above.
- Local Keys are hard to find, but the easiest way in the Tuya IoT Platform is by going to:
- Cloud (left-toolbar) > API Explorer
- Navigating the tree to Smart Home Device System > Device Management > Get device details
- Pasting the
device_id
from the previous steps - Reading the JSON Response and looking for
"local_key"
with the corresponding value.
- In HA, configure your first device after loading the integration and connecting the Tuya IoT Cloud Account
- My configuration has never allowed me to use the auto-discover and here it helps because I can configure each
dps
- BE CAREFUL doing the following as there is no chance to edit anything in the Device/Entity after it has been added to HA. You will always need to delete and start from scratch.
- For Power On/Off: name Smoker Entity Type = switch, ID/DPS = 1
- For Probe A: name Smoker Probe A Temperature Entity Type = sensor, ID/DPS = 105, Device Class = temperature, Unit of Measurement = F
- For Probe B:name Smoker Probe B Temperature Entity Type = sensor, ID/DPS = 106, Device Class = temperature, Unit of Measurement = F
- For Smoker Temperatures: name Smoker Entity Type = climate, ID/DPS = 102, Target Temperature = 102, Current Temperature = 103, Precision = 1
- At this point should be have a working device with 4 entities. Now, if you would like to have a working Lovelace Thermostat card, you will need to customize the entity itself via YAML configuration.
- You may also want to customize the entity IDs as it was not something available during set-up.
Lovelace Thermostat Card Fix
This is required because the LocalTuya configuration for the entity will not take free-text values and none of the DPS parameters from the smoker itself provide the max/min. We are going to hard-code these. I assume you’ve never configured a customization before below. If you have, you know where to start
- Create a new
customize.yaml
file in the root of the config folder. I use the Visual Code Studio host add-on so this is very easy from within HA. - Include the following in the new
customize.yaml
file, replacing theclimate.smoker_temperature
with the appropriate entity ID:
climate.smoker:
max_temp: 500
min_temp: 180
- Save the file.
- Open the
configuration.yaml
file and locate a line that stateshomeassistant:
; if this does not exist, add it on a new line at the bottom. - Indent two spaces, and add
customize: !include customize.yaml
and save the file. The added text should be:
homeassistant:
customize: !include customize.yaml
- Restart HA
Then I did this for a dashboard
type: vertical-stack
cards:
- type: conditional
conditions:
- entity: switch.smoker
state: 'off'
card:
type: glance
entities:
- entity: switch.smoker
tap_action:
action: toggle
- type: conditional
conditions:
- entity: switch.smoker
state: 'on'
card:
type: custom:simple-thermostat
header: false
control: false
toggle:
entity: switch.smoker
layout:
step: row
mode:
headings: false
icons: false
names: false
entity: climate.smoker
decimals: 0
step_size: 1
hide:
state: true
- type: conditional
conditions:
- condition: state
entity: switch.smoker
state: 'on'
- condition: numeric_state
entity: sensor.smoker_probe_a_temperature
above: '0'
card:
type: glance
entities:
- entity: sensor.smoker_probe_a_temperature
name: Probe-A
- entity: input_number.smoker_probe_a_target
name: Target
- entity: sensor.smoker_probe_a_status
name: Status
state_color: true
- type: conditional
conditions:
- condition: state
entity: switch.smoker
state: 'on'
- condition: numeric_state
entity: sensor.smoker_probe_b_temperature
above: '0'
card:
type: glance
entities:
- entity: sensor.smoker_probe_b_temperature
name: Probe-B
- entity: input_number.smoker_probe_b_target
name: Target
- entity: sensor.smoker_probe_b_status
name: Status
state_color: true
- type: conditional
conditions:
- condition: state
entity: switch.smoker
state: 'on'
- condition: numeric_state
entity: sensor.smoker_probe_a_temperature
above: '0'
- condition: numeric_state
entity: sensor.smoker_probe_b_temperature
below: '1'
card:
type: history-graph
entities:
- entity: sensor.smoker_target_temperature
name: Target
- entity: sensor.smoker_actual_temperature
name: Actual
- entity: sensor.smoker_probe_a_temperature
name: Probe-A
refresh_interval: 0
hours_to_show: 8
- type: conditional
conditions:
- condition: state
entity: switch.smoker
state: 'on'
- condition: numeric_state
entity: sensor.smoker_probe_a_temperature
below: '1'
- condition: numeric_state
entity: sensor.smoker_probe_b_temperature
above: '0'
card:
type: history-graph
entities:
- entity: sensor.smoker_target_temperature
name: Target
- entity: sensor.smoker_actual_temperature
name: Actual
- entity: sensor.smoker_probe_b_temperature
name: Probe-B
refresh_interval: 0
hours_to_show: 8
- type: conditional
conditions:
- entity: switch.smoker
state: 'on'
- entity: sensor.smoker_probe_a_temperature
state: unavailable
- entity: sensor.smoker_probe_b_temperature
state: unavailable
card:
type: history-graph
entities:
- entity: sensor.smoker_target_temperature
name: Target
- entity: sensor.smoker_actual_temperature
name: Actual
refresh_interval: 0
hours_to_show: 8
- type: conditional
conditions:
- condition: state
entity: switch.smoker
state: 'on'
- condition: numeric_state
entity: sensor.smoker_probe_a_temperature
above: '0'
- condition: numeric_state
entity: sensor.smoker_probe_b_temperature
above: '0'
card:
type: history-graph
entities:
- entity: sensor.smoker_target_temperature
name: Target
- entity: sensor.smoker_actual_temperature
name: Actual
- entity: sensor.smoker_probe_a_temperature
name: Probe-A
- entity: sensor.smoker_probe_b_temperature
name: Probe-B
refresh_interval: 0
hours_to_show: 8
Thanks for adding instructions to the post. I’ll likely be coming back for it later after I get another Recteq. Hopefully this summer.
Thank you so much! I got mine up this weekend.
Recteq 1070 ID/DPS below
Device on/off = 1
Target Temp = 101
Current Temp = 102
Probe A = 104
Probe B = 105
@mclever
Thanks for the awesome input here. This is amazing!
My climate.smoker_temperature comes back as Unavailable while everything else seems to be flawless. Target and Actual did show up for a bit before I set the max and min, but now nothing. I’ve seen other reports of this, but no solutions. Did you run into this at all?
Having issues getting tuya (iOS) to pair with my recteq. I am holding down the wifi button on the controller but it never shows in the app.
any ideas?
Thank you
I’m not a pro here, but there are a few things I can say:
Make sure your wifi is 2.4gHz. I’ve heard people say you should temp disable your 5.0 while doing this pairing, but I read that after I got mine up.
Keep trying-- It took me about 20 attempts
My climate.smoker_temperature comes back as Unavailable while everything else seems to be flawless.
I’m running into this similar right now, I’m seeing Unknown for my climate entity. Looking at the entity history, I see the temperature values getting properly displayed over time, but the entity itself shows nothing.
Did you ever find a solution?
Forgot I had this in config too
template:
sensor:
- name: smoker_probe_a_status
state: >
{% if states('sensor.smoker_probe_a_temperature') != unavailable %}
{% set target = states('input_number.smoker_probe_a_target')|int %}
{% set actual = states('sensor.smoker_probe_a_temperature')|int %}
{% set offset = actual - target %}
{% if offset > 5 %}Over Temp!
{% elif offset > -5 %}At Target
{% elif offset > -15 %}Approaching...
{% else %}Not Cooked Enough{% endif %}
{%- endif %}
- name: smoker_probe_b_status
state: >
{% if states('sensor.smoker_probe_b_temperature') != unavailable -%}
{% set target = states('input_number.smoker_probe_b_target')|int %}
{% set actual = states('sensor.smoker_probe_b_temperature')|int %}
{% set offset = actual - target %}
{% if offset > 5 %}Over Temp!
{% elif offset > -5 %}At Target
{% elif offset > -15 %}Approaching...
{% else %}Not Cooked Enough{% endif %}
{%- endif %}
Is there a template for input_number as well? Mine shows up as unavailable.
Just noting for my smoker, the inputs needed were slightly different. Guessing this could vary for each model.
RT-410 for the ID/DPS
On/Off: 1
Smoker Temp: 102
Target Temp : 101
Probe A: 103
Probe B: 104
I’m still getting mine set up but when I do device debug from Tuya IoT Platform I got these values for my smoker so wanted so save someone the time.
B380X
2 switch (ON/OFF)
101 set point (250) - in F
102 actual temp (100)
103 probe temp (0)
104 min feed rate (20)
105 temp adjust (0)
106 power failure (on/off)
107 ignite failure (on/off)
I’ve got a Recteq 590, and found a way to dump all of the available data points along with their supported values via the Tuya API (API Explorer > Device Control > Query Things Data Model). Lots of interesting stuff in here, some of which I’ll never use but neat that it’s there.
Short summary:
2: Switch
101: Set point
102: Actual temp
103: Min feed rate
104: Probe A
105: Probe B
106: Temp adjust
107: Temp unit
108: Power failure
109: Ignite failure
110: RTD Failure
111: Probe A arrive
112: Probe B arrive
113: Actual low deviate
114: Actual high deviate
115: Probe A setpoint
116: Probe B setpoint
117: Actual float range
And finally, here’s a JSON dump of the full list of data points, along with their supported values & types:
Latest localtuya update breaks the control of my 700, haven’t figured out why yet
Did you get this working? I have not updated the Local Tuya integration and am now leery to do so after seeing this.
Was able to get it to work again by reconfiguring cloud api account on latest version