Heatzy Compoment


If someone could integreate a heatzy compoment for control heatear.
Heatzy use an cloud API witch alow to control our heater from iPhone/Andoid device.
The full docs of this API is here:


PS: As a non dev, I will try to create a HASS compoment, but I realy not sure to success, if somenone could do this before iit will be amazing :wink:

I will begin some development to create a Heatzy component. I’m a developer but as a newcomer in HA (and Python), help are welcome :slight_smile:

1 Like

Hi guys,

I have written a small python library and an early Hass platform. You’ll find those at https://github.com/tmz42/python-heatzy, feedback is welcome. It just switches the Pilote & Pilote2 modules between modes.

In order for it to work with Home Assistant, add the opt/homeassistant/heatzy.py component under a /custom_components/climate directory, and add your login/password to your configuration.yaml file.

Hi guys,

Great job from @tmz42. However I’m still not convinced by Heatzy since this is not a pure on-prem solution. Do you think Heatzy could be managed with tokens or IDs without cloud authentication like most of Xiaomi WiFi devices for example?

Thanks and all the best for this new year!

Hi @PluViteKaFon,

From what I understand, Heatzy can’t be controlled locally, everything is linked to the Gizwits API… I think there is a Qubino module for pilot wires, but it is twice as expansive.

Have a nice new years end as well!

Hi @tmz42,

Thanks for your fast reply! As an alternative to Qubino I have found this local controller: http://www.wifipower.fr/fr/eth-panel/66-eth-panel-fp4.html. If you already have an installation with pilot wires centralized into your power distribution unit this DIN compatible module should be a great solution!

This module also exists with WiFi if you don’t have the possibility to connect it to your LAN via Ethernet from your power distribution unit.

Unfortunately I can’t give you feedback since I have not tried it, as far as I know you can send orders with HTTP requests so I assume that this thing could be easily integrated into HA.

Hi @tmz42 !
I tried to install your Heatzy component for HA, adding the Heatzy.py to the custom component folder, and change my configuration with my Heatzy credentials.
The script itself works fine when using from the CLI or using Python command line.

But I got the following error when loading the module in Hass.

2019-01-24 16:11:35 ERROR (MainThread) [homeassistant.components.climate] Error while setting up platform heatzy
Traceback (most recent call last):
File “/usr/local/lib/python3.6/site-packages/homeassistant/helpers/entity_platform.py”, line 128, in _async_setup_platform
SLOW_SETUP_MAX_WAIT, loop=hass.loop)
File “/usr/local/lib/python3.6/asyncio/tasks.py”, line 358, in wait_for
return fut.result()
File “/usr/local/lib/python3.6/concurrent/futures/thread.py”, line 56, in run
result = self.fn(*self.args, **self.kwargs)
File “/config/custom_components/climate/heatzy.py”, line 25, in setup_platform
import heatzy
ModuleNotFoundError: No module named ‘heatzy’

It seems that the import fails

Thanks for your help :slight_smile:

Hi @Nicolas_B,

Which platform are you using?

I’m finally ok after restarting my HASS / Raspberry :slight_smile:
I still have an issue when changing the operation mode in a card.
I have to submit the change two times before it really goes to Heatzy and my heater. is that normal ?
It seems the first request goes nowhere, and is just useful to refresh the state, and the second one is ok

In this example you can see that I select ECO a first time and then it goes back to CONFORT
I have to select ECO a second time to make the change

I noticed the same thing a few weeks ago, but it seems to be working fine at home right now. I think it is UI-related because it works consistently in automations.

Which hass version are you running?

I’m running 0.86.1
I was wondering if it could be due to a polling / refresh interval ?
I noticed that when it displays ‘Il y a 5 heures’ (or more) in the card, then it doesn’t work.
If the last refresh was 10min then it’s ok

Forget my last comment
Actually it does the same event of the last refresh was 1min ago.
But I think you’re right that’s an UI issue.
I checked on the Heatzy app, and when changing the operation mode from HASS, it sends the operation mode properly, but doesn’t reflect it in HASS.


@tmz42 Thanks a lot for your great jobs!

I have the same issue that @Nicolas_B. I run the last version 0.86.4 on a docker (HASS is still on test, my main setup is still on Jeedom). If I can help for fix this, feel free to ask :).

@tmz42 Did you manage to use your heatzy module with the generic thermostat?
On the doc, it seems that the generic thermostat need a toogle switch to activate the heating.
HASS apears to use HEAT, COOL or OFF operation, but since heatzy use CONFORT, HGEL…
Do you know if it’s possible to modify this on heatzy compoment?

Hi shellux,

Sorry, I won’t be able to send you the details of the config for some time (on vacation for two weeks), but the generic thermostat works well. I use a template switch to control the Heatzy combined with a mija bt sensor for the temperature.

@shellux A new Heatzy custom component has been created
Available here : https://github.com/Devotics/heatzy-home-hassistant
Works like a charm. You can also use the “on / off” mode and “vacation” mode.

1 Like

Hi @tmz42

Can you share your template switch / generic thermostat?

Thanks :slight_smile:

@shellux, here’s my configuration :slight_smile:

Basically :

  • I have a MQTT sensor for the temperature
  • I have a template sensor that gives the state of the Heatzy to the template switch
  • The template switch switches between CONFORT (ON) and ECO (OFF)
  • The generic thermostat glues everything up and works in Lovelace
# Template sensor
  - platform: template
        value_template: '{{ states.climate.salon.attributes.operation_mode }}'
        friendly_name: "Etat du chauffage du salon"

- platform: template
      value_template: "{{ is_state('sensor.etat_heatzy_salon', 'CONFORT') }}"
        service: climate.set_operation_mode
          entity_id: climate.salon
          operation_mode: 'CONFORT'
        service: climate.set_operation_mode
          entity_id: climate.salon
          operation_mode: 'ECO'

  - platform: heatzy
    username: 'login@heatzy'
    password: 'p@ssword'
  - platform: generic_thermostat
    name: Thermostat Salon
    heater: switch.heatzy_salon
    target_sensor: sensor.mqtt_temperature_salon 
    min_temp: 14
    max_temp: 22
    ac_mode: false
    target_temp: 19
    cold_tolerance: 0.3
    hot_tolerance: 0
      seconds: 60
    initial_operation_mode: "off"
    away_temp: 15.5
    precision: 0.1

Thanks a lot!