itavero / homebridge-z2m

Expose your Zigbee devices to HomeKit with ease, by integrating 🐝 Zigbee2MQTT with 🏠 Homebridge.
https://z2m.dev
Apache License 2.0
325 stars 49 forks source link

[Device] Support for climate devices (thermostats / radiator valves) #40

Closed itavero closed 3 years ago

itavero commented 3 years ago

Given that several people are requesting support for climate devices, I decided to make one central issue to discuss the implementation and post updates.

Related issues on GitHub:

It seems that these devices are best mapped as a Thermostat service. In #32, @sjorge shared the mapping he uses in node-red.

Implementing a Service Handler for climate devices will probably bring support for the following devices (and their white label variants) to this plugin:

itavero commented 3 years ago

Looks like I'll have at least a couple of hours tomorrow to start setting up the Service Handler for these kind of devices.

In the meantime I've also added all the devices currently in zigbee2mqtt (except for the white label ones) that expose a climate type. Hopefully other people will be able to find this issue, instead of opening up a new one. πŸ˜„

itavero commented 3 years ago

Started on the implementation today. Not a lot of progress yet.

Most devices only expose one property for the setpoint, except for the following two devices which expose both a occupied_heating_setpoint and a occupied_cooling_setpoint:

HomeKit doesn't specify separate heating and cooling setpoints as far as I'm aware. For now I will ignore these exceptions and focus on an implementation that should work for the majority of the devices (with only a single setpoint).

itavero commented 3 years ago

So far I've setup the ServiceHandler class today. I still need to add the code to actually map/handle the characteristics (right now I've only added a monitor to publish the local_temperature to HomeKit). Hopefully I'll be able to do the rest of the implementation this week. Not sure if I'll have enough time to also add the automated tests this week (which I would like to do before releasing it, but since where still in the "beta" phase, I might release it before these tests have been written).

itavero commented 3 years ago

Not sure what the Temperature Display Units characteristic is for. I think it is intended to change the unit on the device itself. As I don't see a device that supports changing this via Zigbee2MQTT (and if it does it's probably a one time thing), I'm fixing this characteristic to degrees Celcius for now.

itavero commented 3 years ago

I think I finished the implementation, but I haven't tested it at all (except for npm run build, npm run test and regenerating the device documentation πŸ˜…). If you want to have a peek at the implementation, please look at #43 (and ignore all the changes in the docs/devices/ folder as these are all generated files). I'll probably have some time to write (some) automated tests tomorrow evening.

So, if you are waiting for this, you might be in luck and be able to control your heating system via HomeKit before this heating season is over. πŸ˜‰

itavero commented 3 years ago

On a related note: I plan to put the new major version on the latest channel in February. Before I do that, I'll release this new feature in another beta release to gather some feedback from people that actually have this climate devices.

itavero commented 3 years ago

Added an automated test and updated the documentation as well (see PR #43 ). Also thanks to @jukben for already given my code from the PR a test run.

It's late in the evening now, so I'm not going to make a release right now. I do plan to make a new beta release with this new feature this weekend. I'll post another update once it is available via npm i homebridge-z2m@next πŸ˜‰

itavero commented 3 years ago

Version 1.1.0-beta.2 has just been released and can be installed with npm i homebridge-z2m@next.

@jhm47 / @Kepro / @mojijafari If you have some time to give it a try, that would be awesome. I'm closing this issue as, the implementation is available via the next channel now. Feedback can still be added to this issue (or you can open up a new one).

If someone would still like to see support for the Leviton RC-2000WH or Centralite 3157100, please open up a new issue and propose how to deal with the dual setpoint property "problem".

Kepro commented 3 years ago

@itavero I'm using homebridge-z2m v1.1.0-beta.3 and nothing :(

image image

itavero commented 3 years ago

@Kepro Can you start Homebridge with debugging logging enabled and post the logs from the startup? It should mention which services are being created.

jhm47 commented 3 years ago

Thx Arno! This is awesome!!

Just did a very quick check (updated to beta3) – seems to work … I could change the temperature on my Eurotronics TRV through my iPhone.

(I will need to do some more testing …)

Cheers

Kepro commented 3 years ago

hmm, checking zigbee2MQTT version and it's 1.17.0

[31/01/2021, 11:32:49] Loaded plugin: homebridge-z2m@1.1.0-beta.3
[31/01/2021, 11:32:49] Registering platform 'homebridge-z2m.zigbee2mqtt'
[31/01/2021, 11:32:49] ---

[31/01/2021, 11:32:50] [zigbee2mqtt] Restoring old (pre v1.0.0) accessory Thermostat Living Room (0x5c0272fffedaad9e). This accessory will not work until updated device information is received from Zigbee2MQTT v1.17.0 or newer.
[31/01/2021, 11:32:50] [zigbee2mqtt] Restoring old (pre v1.0.0) accessory Thermostat Bed Room (0x847127fffe963e13). This accessory will not work until updated device information is received from Zigbee2MQTT v1.17.0 or newer.
[31/01/2021, 11:32:50] [zigbee2mqtt] Restoring old (pre v1.0.0) accessory Thermostat Kids Room (0x5c0272fffedabf6d). This accessory will not work until updated device information is received from Zigbee2MQTT v1.17.0 or newer.

update:

[31/01/2021, 11:38:48] [zigbee2mqtt] Failed to setup switch for accessory Thermostat Living Room from expose "{"features":[{"access":7,"description":"Enables/disables physical input on the device","name":"state","property":"child_lock","type":"binary","value_off":"UNLOCK","value_on":"LOCK"}],"type":"lock"}": Error: Required "lock_state" property not found for Lock.
[31/01/2021, 11:38:48] [zigbee2mqtt] Configuring Thermostat for Thermostat Living Room
[31/01/2021, 11:38:48] [zigbee2mqtt] Configuring Battery Service for Thermostat Living Room
[31/01/2021, 11:38:48] [zigbee2mqtt] Failed to setup switch for accessory Thermostat Bed Room from expose "{"features":[{"access":7,"description":"Enables/disables physical input on the device","name":"state","property":"child_lock","type":"binary","value_off":"UNLOCK","value_on":"LOCK"}],"type":"lock"}": Error: Required "lock_state" property not found for Lock.
[31/01/2021, 11:38:48] [zigbee2mqtt] Configuring Thermostat for Thermostat Bed Room
[31/01/2021, 11:38:48] [zigbee2mqtt] Configuring Battery Service for Thermostat Bed Room
[31/01/2021, 11:38:48] [zigbee2mqtt] Failed to setup switch for accessory Thermostat Kids Room from expose "{"features":[{"access":7,"description":"Enables/disables physical input on the device","name":"state","property":"child_lock","type":"binary","value_off":"UNLOCK","value_on":"LOCK"}],"type":"lock"}": Error: Required "lock_state" property not found for Lock.

but it's working now :)

montanaishome commented 2 years ago

Have a zen zen-01-w thermostat connected to z2m. Showing as unsupported in HomeKit. Was working in the past, but I recently re-installed z2m after a SD card crash. Any ideas?

itavero commented 2 years ago

Have a zen zen-01-w thermostat connected to z2m. Showing as unsupported in HomeKit. Was working in the past, but I recently re-installed z2m after a SD card crash. Any ideas?

Perhaps the exposes information provided by Zigbee2MQTT has changed. Our website also mentions it is unsupported now, was that different in the past? https://z2m.dev/devices/zen/zen-01-w.html

montanaishome commented 2 years ago

Yes, it was supported when I bought it.

Aaron Weissman @.***

On Aug 21, 2022, at 10:50 AM, Arno Moonen @.***> wrote:

ο»Ώ Have a zen zen-01-w thermostat connected to z2m. Showing as unsupported in HomeKit. Was working in the past, but I recently re-installed z2m after a SD card crash. Any ideas?

Perhaps the exposes information provided by Zigbee2MQTT has changed. Our website also mentions it is unsupported now, was that different in the past? https://z2m.dev/devices/zen/zen-01-w.html

β€” Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.

itavero commented 2 years ago

I would suggest to look into the changes made in recent versions of zigbee-herdsman-converters, and/or downgrading Zigbee2MQTT itself to find a working version. After that you can open up a PR/issue on zigbee-herdsman-converters