Tasmota Thermostat Support please

The Tasmota Firmware supports a Thermostate mode. The Integration with the Stock Thermostat Tile is naerly impossible to accomplish for Beginner like me. Right, the stock one is not suited for this purpose, because the logic is in Hassio. We need a frotend tile, able to send and receive values via MQTT to the Tasmota Thermostat. Then we finally can set Target temperature and can display the room temperature.
And if the tile as a nice look withe dial, the better!

Did you miss this? MQTT HVAC - Home Assistant

No i didn´t mis that. Maybe iam to stupid to understand…
Maybe you are able to guide me in to the light…

Tasmota Thermostat is a fully independet device. All the logic is inside. It only needs to inputs.
target temperature and measured temperature from a room sensor.
It publishs its status in stat.
You can set the target temperature and the measured temperature in the cmnd section like shown in mqtt explorer scrennshot below.

grafik

I want to doo:

Temperature slider should work and transmit data to topic : cmnd/tasmota_57B008/temptargetset
If switch on it should Highlight the Heat symol. (cmnd/tasmota_57B008/Power1)
Optional show measured temperature and selectet target temperature.

I think i hav to do a lot of templating to accomplish that. If you can give my some hints then iam a happy customer :slight_smile:

Try turning discovery on in tasmota and in your home assistant mqtt integration, it should do it all for you.

Hello again…

Okay discovery is on. All Shellys with tasmota thermostat firmware are in discovery mode and detected by tasmota integration. So i can use these with generc thermostat.
The problem is that you can not send the dialed temperatur to the device.
Again these Tasmota devices are programmed to be independent.
as you can read here: Klick
So i dont need the control logic fom hassio.
I googled for some help and found a example how to use a tosmota flashed tuya thermostat with hassio. its more complex as i thougt. But i came up with a config. that will not work as i thought.

mqtt:
  climate:
    - name: Marcos Room
      modes: ["heat","off"]
      mode_command_topic: "cmnd/tasmota_32B246/Power1"
type: thermostat
entity: climate.marcos_room
mode_command_topic: cmnd/tasmota_32B246/Power1
mode_command_template: '{{''1'' if value == ''heat'' else ''0''}}'
mode_state_topic: tele/tasmota_32B246/STATE
mode_state_template: '{{''heat'' if value_json.POWER1 == ''ON'' else ''off''}}'

until here i understand the templating code, i geuss at least.
mode_command_template: if hvac sends heat, payload gets 1 and the relay switches on, all other results in off right?
mode_state_template should dig in the state output for POWER1 and sets it to heat, if it detects on.
All other results in off. Right?
Bud what so ever, it does not work. I can´t toggle on only off.
What i doing wrong–?
Next Part… its like programming in Brainfuck at least for me :slight_smile:

current_temperature_topic: stat/tasmota_32B246/RESULT
current_temperature_template: '{{ value_json.TempMeasuredSet1 }}'
temperature_state_topic: tele/tasmota_32B246/SENSOR
temperature_state_template: '{{ value_json["TempTargetSet"] }}'

now iam totally confused, how the templates must be formated that they will parse TempMeasuredSet1 at the result topic below?

stat/tasmota_32B246/RESULT={"TempMeasuredSet1":23.2}

and

tele/tasmota_32B246/SENSOR={"Time":"2022-07-22T01:49:26","Switch1":"OFF","Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":21.00,"CtrDutyCycleRead":0}}

for TempTargetSet?

i dont get it…
and at least the rest from the config file…

temperature_command_topic: cmnd/tasmota_32B246/TempTargetSet
temperature_command_template: 

how to complete the temperature command template, so that we get a valid integer Payload?

And to prevent these naggy lamer questions, the developer team really should consider to make integration of a Tasmota Thermostat device much easier… :rofl:

Tasmota : SetOption26 1
Local sensor DS18B20

mqtt:
  climate:
    - name: MQTT Heater
      modes:
        - "off"
        - "heat"
      mode_command_topic: "cmnd/tasmota_DCAXXX/POWER1"
      mode_command_template: "{{'1' if value == 'heat' else '0'}}"
      mode_state_topic: "tele/tasmota_DCAXXX/STATE"
      mode_state_template: "{{'heat' if value_json.POWER1 == 'ON' else 'off'}}"
      current_temperature_topic: "tele/tasmota_DCAXXX/SENSOR"
      current_temperature_template: "{{ value_json['DS18B20'].Temperature }}"
      temperature_state_topic: "tele/tasmota_DCAXXX/SENSOR"
      temperature_state_template: "{{ value_json['Thermostat0'].TempTargetSet }}"
      min_temp: 7
      max_temp: 28
      precision: 1.0
      temperature_command_topic: "cmnd/tasmota_DCAXXX/TempTargetSet"
      availability_topic: tele/tasmota_DCAXXX/LWT
      payload_available: Online
      payload_not_available: Offline

Screenshot 2022-10-22 at 13-27-45 Обзор – Home Assistant

3 Likes

does this work ?

@Capture456 Thank you very much. I owe you a Beer.

Based on your Post i came up with my modificatin and it works flawless

climate:
    - name: "Heizung Marco"
      modes:
        - "off"
        - "heat"
      unique_id: klima_heizung_marco
      mode_command_topic: "cmnd/tasmota_marco/THERMOSTATMODESET"
      mode_command_template: "{{'1' if value == 'heat' else '0'}}"
      mode_state_topic: "tele/tasmota_marco/STATE"
      mode_state_template: "{{'heat' if value_json.POWER1 == 'ON' else 'off'}}"
      current_temperature_topic: "stat/tasmota_marco/RESULT"
      current_temperature_template: "{{ value_json['TempMeasuredSet1']}}"
      temperature_state_topic: "tele/tasmota_marco/SENSOR"
      temperature_state_template: "{{ value_json['Thermostat0'].TempTargetSet }}"
      min_temp: 15
      max_temp: 21
      precision: 0.1
      temp_step: 0.1
      retain: true
      initial: 18
      temperature_command_topic: "cmnd/tasmota_marco/TempTargetSet"
      availability_topic: tele/tasmota_marco/LWT
      payload_available: Online
      payload_not_available: Offline
1 Like

Could you kindly let us know how you managed to flash your thermostat. What model was it by the way? I’ve got an ME81H that was supposed to be flashable. But I discovered that the current production units feature WBR3 module. So I had to buy EPS12S that I succeeded to flash and solder as a replacement. I’m still facing an issue. The unit is working but it not “talking” to the hardware part of the module. I’m wondering whether I should solder resistors as it is explained here:

Iam sorry. i use tasmota thermostat flashed shellys as thermostat.
so i dont know anything about your hardware.

Hey, I am trying to do something similar with a Sonoff 4CH to control my underfloor heating. However, I am having a bit of an issue with getting the measured temperature to my Sonoff device. How have you done this? Does your Shelly have an internal temperature sensor? WHere odes your shelly get the current temperature from?

Yes he is using a sensor attached to the device. But you can use any sensor

Hey @nickrout thanks. Okay, but when using an external sensor, how do I get the measured temperature to the thermostat?

@mor3dr3ad Oops iam a little late i hope you found a solution.

My Automation sends evry 2 minutes a temperature to my thermostats.
type SENSORINPUTSET 0 into tasmota console to set the temperature via mqtt.

alias: sensor2shelly
description: Überträgt Sensordaten
trigger:
  - platform: time_pattern
    minutes: /2
condition: []
action:
  - service: mqtt.publish
    data:
      topic: cmnd/badluefter/temptargetset
      payload_template: "{{ (states('sensor.lumi_lumi_weather_humidity_3')|float) + 15}}"

But remember you have to use temptargersetX X stands for 1-4 accordind to your channels. Did you compile tasmota correctly for 4 Channel Thermostat?

I want to do the same thing as you did, so I ordered a Shelly 1 plus with the add-on and DHT22 sensor.

Now I’m just wondering how I should wire this, the current thermostat is a Honeywell T40 with 2 wires (blue and red) and if I read it correctly is operates on 24V, how did you do the wiring or does anybody now how mine should look like?

I solved it like this:

    - name: "Erdgeschoss Badezimmer HeizlĂĽfter"
      modes:
        - "off"
        - "heat"
      unique_id: erdgeschoss_EG_Badezimmer_Heizluefter
      mode_command_topic: "cmnd/EG_Badezimmer_Heizluefter/THERMOSTATMODESET"
      mode_command_template: "{{'1' if value == 'heat' else '0'}}"
      mode_state_topic: "stat/EG_Badezimmer_Heizluefter/RESULT"
      mode_state_template: >-
         {% if value_json.ThermostatModeSet1 is defined %}
            {{ 'heat' if value_json.ThermostatModeSet1 == 1 else 'off' }}
         {% elif value_json.ThermostatModeSet0 is defined %}
            {{ 'off' if value_json.ThermostatModeSet0 == 0 else 'heat' }}
         {% else %}
            'unknown'
         {% endif %}
      current_temperature_topic: "stat/EG_Badezimmer_Heizluefter/RESULT"
      current_temperature_template: "{{ value_json['TempMeasuredSet1']}}"
      temperature_state_topic: "tele/EG_Badezimmer_Heizluefter/SENSOR"
      temperature_state_template: "{{ value_json['Thermostat0'].TempTargetSet }}"
      min_temp: 17
      max_temp: 24
      precision: 0.1
      temp_step: 0.1
      retain: true
      initial: 18
      temperature_command_topic: "cmnd/EG_Badezimmer_Heizluefter/TempTargetSet"
      availability_topic: tele/EG_Badezimmer_Heizluefter/LWT
      payload_available: Online
      payload_not_available: Offline