Latest and greatest thermostats? No cloud preferable. We all saw what happened with nest

The developer of the Honeywell Evohome integration has started on the local integration using HGI-80. It will be very powerful and comprehensive when finished. And the thermostat itself doesn’t require cloud to work.

I just ordered one too. This one seems exactly what I need for a good price.

Can you tell my why you didn’t use the MQTT HVAC platform to control this? https://www.home-assistant.io/integrations/climate.mqtt/

The documentation also lacks information about the MQTT possibilities. Is it, for example, possible to change the heating mode from schedule to manual using MQTT? And is it possible to set the temperature on it, using MQTT?

Can you also tell me something about your configuration? Do you need automations/templates to get this working properly?

So, for the MQTT stuff, I have no idea. I’ve never bothered to set up Mosquitto or anything as nothing I have needs it. The web control panel for the relay does have MQTT settings in it, so I presume you can change temps, heating modes etc, but I haven’t actually done it.

As for the rest setup, my setup is below. Two rest sensors (relay on/off and the temp sensor value), two rest services (turn relay on/off), a switch that ties all the relay state and services together and then a climate.generic_thermostat. My setup uses a statistics sensor (flat_avg_temperature, the average of about 5-6 Zigbee temp sensors in various rooms) for the target temp of the thermostat, but you can just drop the temp sensor in there just fine. Once you have that all set up, it’s just the usual climate automation stuff (turn the heating off if no-ones home or the doors are open, set different temps for day and night, that sort of thing). There’s things like Schedy or Node Red for that.

binary_sensor:
  - platform: rest
    resource: http://192.168.0.10/control/relay.cgi
    method: GET
    name: Heating
    value_template: '{{ value_json.relay1 }}'

sensor:
  - platform: rest
    resource: http://192.168.0.10/control/thermostat.cgi?param=state
    name: Kitchen Temperature
    value_template: '{{ ( value_json.temperature | float - 2.0 ) | round(1) }}'
    device_class: temperature
    unit_of_measurement: °C

rest_command:
  relay_on:
    url: "http://192.168.0.10/control/relay.cgi?relay1=1"
  relay_off:
    url: "http://192.168.0.10/control/relay.cgi?relay1=0"

switch:
  - platform: template
    switches:
      heating:
        friendly_name: Heating
        value_template: >
          {{states.binary_sensor.heating.state}}
        turn_on:
          service: rest_command.relay_on
        turn_off:
          service: rest_command.relay_off

climate:
  - platform: generic_thermostat
    name: Thermostat
    heater: switch.heating
    target_sensor: sensor.kitchen_temperature

Edit: Ah, I’ve just reread your post. The scheduler on the relay is intended to be standalone, I personally moved all the scheduling duties over to HA with a bunch of automations. If you do that, it’s much easier to do device_tracker/door sensor type things, you just set the relay to manual mode and interact with it through a generic_thermostat.

This is what I have running for 6 months now. It’s cheap and can do everything the more expensive thermostats can do as well! Temperature changes in zones based on presence, time etc.

1 Like

Thanks a lot for taking the time to post this!

Yesterday I received the Openenergymonitor WiFi thermostat and I used your information to get it working. I also experimented with the MQTT and got that working too. So I decided to rely on that, instead of the rest commands.

With NodeRED I’m changing temps based on our presence. I also like the idea of the open doors. Do you simply turn off the thermostat when a door is open? What if a door only opens for a few seconds to let someone through?

My place has standard UK central heating, so no zoned heating or anything cool. I’ve added door sensors to the external doors and an automation that just turns the thermostat off if either of them is open. It only updates every 60 secs, so quick open/closes are unlikely to be caught. No point running the radiators full blast if it’s 5 degrees outside and the door is left open…

I’ve listed my two template sensors and the two really basic automations that do everything heating related in my set up.

automation:
  - id: heatingtempschedule
    alias: Heating Temperature Schedule
    trigger:
     - entity_id: sensor.heating_schedule_temperature
       platform: state
    condition: []
    action:
      service: climate.set_temperature
      entity_id: climate.thermostat
      data_template:
        temperature: "{{ states('sensor.heating_schedule_temperature') | float }}"

  - id: heatingmodeschedule
    alias: Heating Mode Schedule
    trigger:
     - entity_id: sensor.heating_schedule_mode
       platform: state
    condition: []
    action:
      service: climate.set_hvac_mode
      entity_id: climate.thermostat
      data_template:
        hvac_mode: "{{ states('sensor.heating_schedule_mode') }}"

sensor:
  - platform: template
    sensors:
      heating_schedule_temperature:
        entity_id: sensor.time
        value_template: >-
          {% set default_temp = states('input_number.heating_night_temperature') %}
          {% set now_timestamp = (now().second + (now().minute * 60) + (now().hour * 3600)) %}
          {% if state_attr('input_datetime.heating_morning_time', 'timestamp') <= now_timestamp < state_attr('input_datetime.heating_night_time', 'timestamp') %}
          {% set default_temp = states('input_number.heating_morning_temperature') %}
          {% endif %}
          {% if is_state('group.people', 'not_home') %}
          {% set default_temp = "6" %}
          {% endif %}
          {{ default_temp }}
        friendly_name: Heating Schedule Temperature
        unit_of_measurement: °C
        device_class: temperature

      heating_schedule_mode:
        value_template: >-
          {% set default_mode = "heat" %}
          {% if is_state('binary_sensor.back_door', 'on') %}
          {% set default_mode = "off" %}
          {% endif %}
          {% if states('sensor.outside_temperature') | float + 1 >= states('sensor.heating_schedule_temperature') | float %}
          {% set default_mode = "off" %}
          {% endif %}
          {{ default_mode }}
        friendly_name: Heating Schedule Mode

input_datetime:
  heating_morning_time:
    name: Heating Morning Time
    has_date: false
    has_time: true
  heating_night_time:
    name: Heating Night Time
    has_date: false
    has_time: true

input_number:
  heating_morning_temperature:
    name: Heating Morning Temperature
    initial: 18
    min: 0
    max: 32
    step: 0.5
  heating_night_temperature:
    name: Heating Night Temperature
    initial: 12
    min: 0
    max: 32
    step: 0.5

1 Like

I’m going to buy a tado Wired Smart Thermostat, may you confirm that is still working fine through homekit controller?

As far as I know it still works.

I bought a tado V3+ thermostat and a smart radiator and then both connected to HA by homekit controller as mentioned above. After some days I can say they work well. I’m using home assistant for automation and scheduler, leaving the temp in tado app unchanged. Now I’m working to a method to reproduce the smart heating feature of the tado app, using derivative sensor to calculate a heating time to achieve a desiderate temp at a desidered hour.