Centralite Pearl 3 Thermostat not presenting all HVAC modes in Home Assistant

Will do.

Sorry for the delay. This is what I get when I set the HA thermostat cool. It sends that command to the Pearl thermostat just fine.

2022-05-10 17:23:14 DEBUG (MainThread) [pydeconz.gateway] Sending "put" "{'mode': 'cool'}" to "http://core-deconz:40850/api/B513B2AC31/sensors/113/config"
2022-05-10 17:23:14 DEBUG (MainThread) [pydeconz.gateway] HTTP request response: [{'success': {'/sensors/113/config/mode': 'cool'}}]
2022-05-10 17:23:14 DEBUG (MainThread) [pydeconz.websocket] {"config":{"battery":1,"coolsetpoint":1800,"fanmode":null,"heatsetpoint":2000,"locked":false,"mode":"cool","offset":0,"on":true,"reachable":true},"e":"changed","id":"113","r":"sensors","t":"event","uniqueid":"00:0d:6f:00:05:78:15:a6-01-0201"}
2022-05-10 17:23:16 DEBUG (MainThread) [pydeconz.websocket] {"e":"changed","id":"113","r":"sensors","state":{"lastupdated":"2022-05-10T05:23:16.082","on":false,"temperature":2144},"t":"event","uniqueid":"00:0d:6f:00:05:78:15:a6-01-0201"}

But when I set modes on the Pearl, nothing seems to appear in the logs.

However, adjusting the setpoint on the Pearl does results in logs and subsequent action in HA. However, I see from the logs that the mode is stated as cool and it was not. I set it to Heat and then 28 degrees so the temp is being sent correctly but the mode is not.

2022-05-10 17:28:47 WARNING (MainThread) [homeassistant.components.sensor] Updating snmp sensor took longer than the scheduled update interval 0:00:10
2022-05-10 17:28:54 DEBUG (MainThread) [pydeconz.websocket] {"config":{"battery":1,"coolsetpoint":1800,"fanmode":null,"heatsetpoint":2800,"locked":false,"mode":"cool","offset":0,"on":true,"reachable":true},"e":"changed","id":"113","r":"sensors","t":"event","uniqueid":"00:0d:6f:00:05:78:15:a6-01-0201"}
2022-05-10 17:28:54 DEBUG (MainThread) [pydeconz.websocket] {"e":"changed","id":"113","r":"sensors","state":{"lastupdated":"2022-05-10T05:28:54.101","on":true,"temperature":2168},"t":"event","uniqueid":"00:0d:6f:00:05:78:15:a6-01-0201"}

So you changed the mode to heat on the device itself but (as stated by the logs) mode is still cool?

Could be a missing event between hardware and your thermostat or something is wrong with the device support. From what I can tell from what you say here the signalling and controls works as expected between Home Assistant and deCONZ.

Yes. I changed the mode from cool to heat on the device and adjusted the temp to 28 but the device mode did not get sent to HA, only the set temperature.

It works the other way around though. Any mode I set in HA does get sent to the device along with any temperature changes.

Anything I can try in DDF?

This is beyond me, if its not in the communication between HA and deCONZ I am of little help.

Best to report your findings here:

Once you’ve done that, I’ll re-open the issue.

Thank you. Post made Centralite Pearl Support · Issue #3240 · dresden-elektronik/deconz-rest-plugin · GitHub

Apparently, I have the exact same issue with another thermostat and the deCONZ integration.

The integration initially created an entity with the only heat mode available, while the thermostat itself supports cool mode as well.

Using deCONZ UI I can manually change the mode and I tried to edit the DFF file in order to expose the mode and coolsetpoint to the REST API.

It seems to have worked but when I try to change mode/setpoint it greys out after a few seconds:

2022-05-25 11:51:17 DEBUG (MainThread) [pydeconz.websocket] {"attr":{"id":"2","lastannounced":"2022-04-07T05:07:29Z","lastseen":"2022-05-25T09:51Z","manufacturername":"Bitron Home","modelid":"902010/32","name":"Thermostat 2","swversion":"V1b440-20210209","type":"ZHAThermostat","uniqueid":"00:0d:6f:00:15:eb:1a:87-01-0201"},"e":"changed","id":"2","r":"sensors","t":"event","uniqueid":"00:0d:6f:00:15:eb:1a:87-01-0201"}
2022-05-25 11:51:36 DEBUG (MainThread) [pydeconz.websocket] {"config":{"battery":0,"controlsequence":5,"coolsetpoint":2700,"heatsetpoint":1400,"mode":"cool","offset":0,"on":false,"reachable":true,"schedule":{},"schedule_on":false},"e":"changed","id":"2","r":"sensors","t":"event","uniqueid":"00:0d:6f:00:15:eb:1a:87-01-0201"}
2022-05-25 11:51:38 DEBUG (MainThread) [pydeconz.gateway] Sending "put" "{'coolsetpoint': 1200.0}" to "http://172.30.33.1:40850/api/30E27A7997/sensors/2/config"
2022-05-25 11:51:38 DEBUG (MainThread) [pydeconz.gateway] HTTP request response: [{'success': {'/sensors/2/config/coolsetpoint': 1200}}]
2022-05-25 11:51:38 DEBUG (MainThread) [pydeconz.websocket] {"config":{"battery":0,"controlsequence":5,"coolsetpoint":1200,"heatsetpoint":1400,"mode":"cool","offset":0,"on":false,"reachable":true,"schedule":{},"schedule_on":false},"e":"changed","id":"2","r":"sensors","t":"event","uniqueid":"00:0d:6f:00:15:eb:1a:87-01-0201"}
2022-05-25 11:51:48 DEBUG (MainThread) [pydeconz.websocket] {"config":{"battery":0,"controlsequence":5,"coolsetpoint":1200,"heatsetpoint":1400,"mode":"cool","offset":0,"on":false,"reachable":true,"schedule":{},"schedule_on":false},"e":"changed","id":"2","r":"sensors","t":"event","uniqueid":"00:0d:6f:00:15:eb:1a:87-01-0201"}
2022-05-25 11:51:49 DEBUG (MainThread) [pydeconz.websocket] {"config":{"battery":0,"controlsequence":5,"coolsetpoint":1200,"heatsetpoint":1400,"mode":"3","offset":0,"on":false,"reachable":true,"schedule":{},"schedule_on":false},"e":"changed","id":"2","r":"sensors","t":"event","uniqueid":"00:0d:6f:00:15:eb:1a:87-01-0201"}
2022-05-25 11:51:50 DEBUG (MainThread) [pydeconz.websocket] {"config":{"battery":0,"controlsequence":5,"coolsetpoint":2700,"heatsetpoint":1400,"mode":"3","offset":0,"on":false,"reachable":true,"schedule":{},"schedule_on":false},"e":"changed","id":"2","r":"sensors","t":"event","uniqueid":"00:0d:6f:00:15:eb:1a:87-01-0201"}
2022-05-25 11:51:50 DEBUG (MainThread) [pydeconz.websocket] {"config":{"battery":0,"controlsequence":5,"coolsetpoint":2700,"heatsetpoint":1400,"mode":"3","offset":0,"on":false,"reachable":true,"schedule":{},"schedule_on":false},"e":"changed","id":"2","r":"sensors","t":"event","uniqueid":"00:0d:6f:00:15:eb:1a:87-01-0201"}

If you edit the DDF further and make sure there is a default set for mode (off in my example), it should work.

image

1 Like

There was already a default value, also “off” in my case.

As you can see in my longs, at some point the mode changes from “cool” to “3” and the coolsetpoint from 12 to 27 (this is because 12 was lower than the minimum coolsetpoint, I guess).

However, at the moment when I switch from off to cool, it goes to heat by itself.

If I switch from off to heat, it will go back to off by itself.

2022-05-26 10:41:09 DEBUG (MainThread) [pydeconz.websocket] {"config":{"battery":0,"controlsequence":5,"coolsetpoint":1950,"heatsetpoint":1600,"mode":"heat","offset":0,"on":false,"reachable":true,"schedule":{},"schedule_on":false},"e":"changed","id":"2","r":"sensors","t":"event","uniqueid":"00:0d:6f:00:15:eb:1a:87-01-0201"}
2022-05-26 10:41:10 DEBUG (MainThread) [pydeconz.websocket] {"config":{"battery":0,"controlsequence":5,"coolsetpoint":1950,"heatsetpoint":1600,"mode":"4","offset":0,"on":false,"reachable":true,"schedule":{},"schedule_on":false},"e":"changed","id":"2","r":"sensors","t":"event","uniqueid":"00:0d:6f:00:15:eb:1a:87-01-0201"}

I guess it has some issue interpreting the reply.