Closed ebaauw closed 5 years ago
I added support for ZHAThermostat and CLIPThermostat in the above commit, but cannot test it, as CLIPThermostat is not yet implemented in deCONZ (see https://github.com/dresden-elektronik/deconz-rest-plugin/pull/1003), and I don't have a thermostat myself.
Added (untested) support for Eve history in v0.11.8.
I would appreciate if some-one could post a screenshot of Eve, the full debug log (see https://github.com/ebaauw/homebridge-hue#debug-log-file), and the Eve history file, so I can check whether is works as intended.
Hi ebaauw which thermostat data do you need ? I have Netatmo and Tado....
I need the data homebridge-hue collects for a thermostat that talks Zigbee and connects to deCONZ, like the Bitron or the Eurotronic.
Ah OK, those one I dosn´t have.
I do not (yet) have a deCONZ/Zigbee thermostat to test this, but for my current integration of Z-Wave thermostats into HomeKit I set the characteristics as follows:
round(input*2)/2
to round to 0.5 degrees (values in between tend to be rejected by the thermostat)This shows in the Home app as follows: Orange circles indicate rooms where the thermostat is actually heating (device is configured to "Heat" and valve is >10% open), green circles indicate rooms where the mode in HomeKit is set to "Auto" (i.e. device mode = "Heat"), but the valve is currently closed, because the temperature is close to the target. (Not shown here but gray circles would show rooms where the thermostat is turned off)
Maybe this would be a nice addition here (provided that the current valve opening is reported, I don't know about that for the Zigbee thermostats).
Additionally, is there any chance to display errors reported (such as valve adjustment failures etc.) within HomeKit? deConz recently added the necessary clusters, at least for the eurotronics thermostat.
I have now tested with the Eurotronic thermostat. Adjusting the setpoint and showing the current temperature works. For the setpoint however, I had to insert
targetTemperature = Math.round(targetTemperature / 0.5) * 0.5
at line 2152 in HueSensor.js
, because even though the HomeKit-Apps only show 0.5 degree steps, at least the slider in Apple's Home app tends to return values in between.
The heating mode does not seem to be supported by this device at all. The only way to turn it off (e.g. when windows are opened) is by lowering the temperature. The minimum in the thermostat is 5°C, but the minimum in HomeKit is 10°C... However, I would not map "Off" -> 5°C, because there is no way to reverse it (e.g. switching from "Off" to "Heat", it's not clear what the temperature should be).
Mapping "Off" to a valve opening of 0% could be an alternative, but I also wouldn't recommend it, as this provides no anti-freeze protection (and is currently not exported through the REST API).
I have now tested with the Eurotronic thermostat. Adjusting the setpoint and showing the current temperature works.
So the Home app show the tiles as intended (as for the Z-Wave thermostats)?
but I call round(input*2)/2 to round to 0.5 degrees (values in between tend to be rejected by the thermostat) even though the HomeKit-Apps only show 0.5 degree steps, at least the slider in Apple's Home app tends to return values in between.
@tkintscher the best solution for this would be to set the minStep
property of the TargetTemperature characteristic to 0.5. To be on the safe side, we would also need to round the value retrieved from deCONZ to 0.5°C (instead of to 0.1°C).
UPDATE: in v0.11.13.
I have now tested with the Eurotronic thermostat. Adjusting the setpoint and showing the current temperature works.
So the Home app show the tiles as intended (as for the Z-Wave thermostats)?
Yes, in v0.11.13 👍
but I call round(input*2)/2 to round to 0.5 degrees (values in between tend to be rejected by the thermostat) even though the HomeKit-Apps only show 0.5 degree steps, at least the slider in Apple's Home app tends to return values in between.
@tkintscher the best solution for this would be to set the
minStep
property of the TargetTemperature characteristic to 0.5. To be on the safe side, we would also need to round the value retrieved from deCONZ to 0.5°C (instead of to 0.1°C).
Right, minStep
works even better. I wasn't aware of this feature.
Along these lines, we could also set minValue: 5, maxValue: 30
to match the range of this device.
Will include that in next version.
Did you try to control the thermostat from Eve? Does it show the temperature history?
Will include that in next version.
Many thanks for your effort and this great tool!
Did you try to control the thermostat from Eve? Does it show the temperature history?
Yes, the target temperature can be controlled from the Eve App as well. Eve also keeps a history of the local (measured) temperature (not much yet, because I reset it after some experimenting):
Hm, I expected Eve also to show the target temperature in the history, see https://github.com/simont77/fakegato-history/issues/11#issuecomment-357513406. What does it show when you expand the little triangle behind HEATING?
Could you please attach the history file (~/.homebridge/accessories/history_
mac.json
, where mac is the thermostat's Zigbee mac address, exposed as Serial Number in Eve under the Accessory Details), so I can check that homebridge-hue creates the right history entries?
That triangle doesn't show any history, there's an empty plot with no measurements:
Here is the file, the setTemp
entries exist: history_00158D000192D18D.json
Btw, what is "Mode" -- is it the "CurrentHeatingCoolingState" characteristic? I'm confused because the options for my other (Z-Wave, not using homebridge) thermostat are off-heat-cool-on. How did you hide the heat/cool options?
Thanks. The history file looks like what I expected. Re-reading the other topic, apparently there's a setting under the dots under the graph to select target temperature.
Btw, what is "Mode"
I map state.on
to CurrentHeatingCoolingState and config.scheduleron
to TargetHeatingCoolingState. Eve probably combines the two of them in Mode.
How did you hide the heat/cool options?
That shouldn't come as a surprise: https://github.com/ebaauw/homebridge-hue/blob/8d20dc94f7a0ec1cda3d33e840725278438e33ef/lib/HueSensor.js#L1267-L1268
I'm not sure why Eve is displaying the On|Off next to HEATING. I would expect to see Off and Heating. Maybe I should set validValues
as well, maybe I should limit CurrentHeatingCoolingState as well, or maybe Eve doesn't like me limiting the values at all. I'm afraid this is going to be a bit of trial and error.
For the characteristic definitions, see https://github.com/KhaosT/HAP-NodeJS/blob/414cd96ca9708596b1f71304bd4e6dff5ab045fc/lib/gen/HomeKitTypes.js#L2325-L2345
I guess you're refering to that comment. The three dots lead to a larger version of the graph. There's a "compare" toggle switch, which adds another line. It seems to be the same graph but shifted in time (it is not the setpoint, because that was set to 20C for the last hours). Actually the "Compare" option is the same as for all other measurements (like the Xiaomi multisensor):
Thanks for the explanation about the characteristics. I've always had trouble finding out which properties are supported by which device classes. If I find some time later this week, I can play around with the options and see what works best here.
Supported in v0.11.4, but needs https://github.com/dresden-elektronik/deconz-rest-plugin/pull/1230.
Apple's Home app: I linked Mode (TargetHeatingCoolingState) to TargetTemperature:
The Eve app shows history for Current Temperature and for valve position: I cannot get Eve to show the history for Target Temperature without also showing the (not supported) schedule, which is more trouble than benefits. Also the history for valve position then seems to disappear. Somehow, Eve doesn't support setting Mode to Auto. Neither Off nor On are highlighted when Mode is Auto.
Found a bug in thermostat history, fixed in https://github.com/ebaauw/homebridge-hue/commit/a45beee0abc61a5236e591eeffc401caf428e55a, which will be included in the next version.
Closing this for now. Until the schedule for the Eve Thermo has been reverse engineered, there's nothing I can do.
See https://github.com/dresden-elektronik/deconz-rest-plugin/issues/1098.