ebaauw / homebridge-hue

Homebridge plugin for Philips Hue
Apache License 2.0
898 stars 91 forks source link

Centralite Thermostat - No Options Besides Heat Set Point #1046

Closed sudoischenny closed 2 years ago

sudoischenny commented 2 years ago

Issue

With the Centralite 3-Series Pearl Thermostat. I can only control the heat setpoint. Nothing else is controllable in homekit: modes (off, heat, cool), cooling setpoint, fan. Weirdly, the options show up in homebridge's accessories tab, although they still result in an error when I adjust them. Despite, those attributes are fully controllable through DeconzGUI.

Perhaps this is an issue with the thermostat as it does not have an auto mode? No need to rush solving this issue. It's the cold months now, no need for cooling :)

Please let me know if more information is needed to get to the bottom of this issue. Or if I blatantly missed something. I really appreciate any help you can provide.

Log Messages

[Hue] Conbee: request 8169: PUT /sensors/17/config {"mode":"off"}
[Hue] Conbee: request 8169: api error 6: parameter, mode, not available
[Hue] Conbee: request 8242: PUT /sensors/17/config {"mode":"auto"}
[Hue] Conbee: request 8242: api error 6: parameter, mode, not available

Debug Files

homebridge-hue.json.gz

Sorry, I am unable to attach a log file as I can't reproduce the options for modes, and the cooling setpoint is not available in homekit, native app, or eve.

ebaauw commented 2 years ago

Nothing else is controllable in homekit: modes (off, heat, cool), cooling setpoint, fan.

I don't see these exposed by the deCONZ REST API?

{
          "config": {
            "battery": 80,
            "heatsetpoint": 1950,
            "offset": 0,
            "on": true,
            "reachable": true,
            "schedule": {},
            "schedule_on": false
          },
          "ep": 1,
          "etag": "e846ffc944473d5cc012e81da4b0ad4d",
          "lastannounced": "2021-11-09T20:47:59Z",
          "lastseen": "2021-11-09T22:08Z",
          "manufacturername": "Centralite",
          "modelid": "3157100-E",
          "name": "Thermostat 17",
          "state": {
            "lastupdated": "2021-11-09T22:08:04.140",
            "on": false,
            "temperature": 1906
          },
          "type": "ZHAThermostat",
          "uniqueid": "00:0d:6f:00:0a:93:f8:40-01-0201"
        }

Despite, those attributes are fully controllable through DeconzGUI.

The GUI provides direct interaction with the Zigbee device. Homebridge Hue, like Phoscon and other clients, uses the REST API. In other words: we need REST API support before features can be exposed to HomeKit.

[Hue] Conbee: request 8169: api error 6: parameter, mode, not available

I thought all thermostats were supposed to expose mode? HomeKit differentiates between target and current mode (Heating Cooling State in HomeKit lingo), where target can be Off, Heat, Cool, or Auto (automatically switch between heating and cooling), and current Off, Heating or Cooling. I don't think there's a standard way in Zigbee to expose these, and I don't think the REST API plugin normalises these across different models of thermostats. Also HomeKit only has one target temperature and cannot differentiate between heating and cooling setpoints. Currently, cooling set point is not supported by Homebridge Hue (because I haven't seen any thermostat that actually supports it). I suppose Homebridge Hue could use the mode to determine which setpoint to use.

With #1042 you should be able to enable/disable the schedule (from Eve).

keness521 commented 2 years ago

I also just installed this same thermostat a couple of days ago. I'm not sure if I can be of any help because I don't run deCONZ GUI, but if there is anything I can do, please let me know.

Mine is installed to a furnace only, no AC, so in the Pearl's own setup menu system, I set it as a Heating Only system, no 2nd (electric) stage.

The basic function works fine, though it is a little quirky because I think the thermostat itself, or the REST implementation, are doing some odd things. For example, I can also NOT turn it off using the HomeKit/Home app control, I will get the same "mode not available" error. However, if it IS off, and I turn it on to a certain set point, it will turn on, even though I do again get the "mode not available" error.

So when I want to turn it "off" I just set it to a crazy low temperature so it has no chance of coming on.

ebaauw commented 2 years ago

A Thermostat service in HomeKit has mandatory characteristics for current vs target temperature and state. Homebridge Hue maps these to the corresponding ZHAThermostat attributes:

Characteristic attribute
Current Temperature state.temperature
Target Temperature config.heatsetpoint
Current Heating Cooling State state.on
Target Heating Cooling State config.mode

Note that the read-only state attributes correspond to the current values, where the read/write config attributes correspond to the target values.

A ZHAThermostat resource without config.mode is simply incompatible with HomeKit. Above commit will issue a warning for these. Other than not exposing the incompatible ZHAThermostat, there's nothing I can do here. The thermostat needs to be exposed properly by deCONZ.