deconz-rest-plugin-v2
deconz-rest-plugin-v2 copied to clipboard
Current thermostat resource items and proposed candidates
Currently supported resource items:
State items
- state/errorcode The error code given by the device.
- state/floortemperature The measured floor temperatore (in contrast to air temperature).)
- state/heating Determines heating state for ELKO Super TR thermostat.
- state/mountingmodeactive The current mounting mode state.
- state/on True when device is on; false when off.
- state/temperature The current temperature in °C * 100.
- state/valve The open percentage of the thermostat valve.
- state/windowopen The current window state detected by the thermostat.
Config items
- config/coolsetpoint Target cooling temperature of a thermostat.
- config/displayflipped Displayed content is normal or upside down.
- config/externalsensortemp The temperature measured by an external sensor, can be used for regulation or displayed on screen.
- config/externalwindowopen The window state detected by an external sensor.
- config/fanmode Specifies the current speed of the fan for sensors.
- config/heatsetpoint Target temperature of a thermostat.
- config/hostflags The configuration flags for Eurotronic Spirit
- config/lastchange_amount Specifies the delta between the current active setpoint and the previous active setpoint.
- config/lastchange_source Determine whether changes to setpoints were initiated by manual interaction, scheduled programming or some other source.
- config/lastchange_time Specifies the time in UTC at which the setpoint change was recorded.
- config/locked Locks or unlocks the device. This item has to be understood as child-lock.
- config/mode Mode of the device.
- config/mountingmode Determines if the device has entered the mounting state.
- config/offset Relative offset to the main measured value.
- config/preset
- config/schedule On-device heating schedules.
- config/schedule_on Determines if on-device schedules for setting the heatsetpoint are currently used or if the thermostat is operated manually.
- config/setvalve
- config/swingmode Indicates the position of Louver on the AC.
- config/temperaturemeasurement
Overview of supported resource items by device
Stelpro smt402ad
- config/externalsensortemp
- config/heatsetpoint
- config/mode
- config/offset
- state/on
- state/temperature
- state/valve
Danfoss Ally
- config/displayflipped
- config/externalsensortemp
- config/externalwindowopen
- config/heatsetpoint
- config/locked
- config/mountingmode
- config/offset
- config/schedule
- config/schedule_on
- state/errorcode
- state/mountingmodeactive
- state/on
- state/temperature
- state/valve
- state/windowopen
Namron 4512737, 4512738
- config/heatsetpoint
- config/mode
- config/offset
- config/schedule
- config/schedule_on
- state/on
- state/temperature
Sinope Th1124zb
- config/externalsensortemp
- config/heatsetpoint
- config/mode
- config/offset
- config/schedule
- config/schedule_on
- state/on
- state/temperature
Eurotronic Spirit SPZB0001
- config/displayflipped
- config/heatsetpoint
- config/locked
- config/mode
- config/offset
- state/on
- state/temperature
- state/valve
eCozy thermostat
- config/heatsetpoint
- config/lastchange_amount
- config/lastchange_source
- config/lastchange_time
- config/offset
- config/schedule
- config/schedule_on
- state/on
- state/temperature
- state/valve
Proposed candidates
Danfoss Ally and derivatives
Already included in PR 6175
config/heatavailable-> Indicate if central heating is active. Set to true when heating period ends to prevent unnecessary valve adjustments.config/loadbalancing-> Thermostat runs stand alone (false) or shares load with others in the same room (true).config/radiatorcovered-> Radiator is standing freely (false) or is covered (true). Set this to true for Danfoss Ally to use external temp sensor.config/windowopendetectionenabled-> Turns the window open detection feature on or off.
Not yet part of a PR
config/adaptationrun-> String, supposed to start or cancel thermostat calibration.config/adaptationsetting-> String, supposed to configure when thermostat calibration shall start.state/adaptationstatus-> String, supposed to provide the current thermostat calibration status.state/loadestimate-> Int16, the current load value. This is required to appropriately use and calculate the load balancing feature.config/meanloadroom-> Int16, the average load over all thermostats in a room. This is required to appropriately use and calculate the load balancing feature.
Bosch Thermostat II
Not yet part of a PR
config/displayedtemperature-> String, supposed set which temperature to display (measured vs. setpoint).config/displayontime-> Uint8, set how long the display shall be active (can also be used generically).config/displaybrightness-> Uint8, set the brightness of the display (can also be used generically).
state/windowopen Not better to use config/windowsopen ? It's an internal setting, managed by the device, that is enabled or not by the user.
config/locked can make conflict with doorlock, less problem with "childlock"
Some tuya TRV have (at least) 2 heatpoint, one for the day and one for night.
state/windowopen Not better to use config/windowsopen ? It's an internal setting, managed by the device, that is enabled or not by the user.
Erm, no? It's a state and cannot be set.
config/locked can make conflict with doorlock, less problem with "childlock"
Thermostats are longer part of the code than door locks. The description was taken from the respective attribute and changing that would be a breaking change to all thermostats using it. Door locks are supposed to use this as well from my perspective.
Some tuya TRV have (at least) 2 heatpoint, one for the day and one for night.
Sorry, I don't know anything about that.
Erm, no? It's a state and cannot be set.
Arf, ok so it s not same for tuya device, on all of them it's a setting not a return, if it's on it s the device itself that stop the heating according to a delay and a temperature drop.
There is also a config/windowopen_set already, the variable is wrongly named RConfigWindowOpen ;)
const char *RConfigWindowOpen = "config/windowopen_set";
Used in https://github.com/dresden-elektronik/deconz-rest-plugin/pull/6054
I have a few questions about the window items:
-
state/windowopenThe current window state detected by the thermostat.Q: This is read-only if I understand right?
-
config/externalwindowopenThe window state detected by an external sensor.Q: Why not
state/externalwindowopen, is this supposed to be configured by an API client, or implicitly handled by the thermostat? -
config/windowopen_setEnable or disable the window open detection.Q: This already exists and seems to have the same purpose as
config/windowopendetectionenabled, which has a better name. -
config/windowopendetectionenabledTurns the window open detection feature on or off.Q1: Does the thermostat itself detect that a window is open with an open/close or temperature sensor? Q2: If this is set to false, the
state/windowopenis garbage or should be set to null, or does it have still a valid value which just isn't used by the thermostat?
The answer is yes 😄
config/externalwindowopenyou actively write an attribute on the device for that. Iirc, this allows overriding the internal measurement done by a different attributeconfig/windowopendetectionenabledwhen using this item, the device itself is capable to detect an open window, and this item is supposed to turn the feature on and off. If I recall correctly,state/windowopendoesn't just get updated anymore, but retains its last value.
Ok thanks, I start to understand this more :) We should extend/clarify the description for items in the /generic/items JSON files.
I'd suggest we deprecate config/windowopen_set in favor for config/windowopendetectionenabled, imho the name is more descriptive. @Smanar I can add a few lines so that the code supports both in the meantime, like an alias. For the #6054 PR it could use config/windowopendetectionenabled from the beginning.
...and perhaps name it config/windowopen_detection_enabled
...and perhaps name it
config/windowopen_detection_enabled
In pydeconz I named it window_open_detection https://github.com/Kane610/deconz/blob/0b5b0b5cfa5d31ac12f121aee2f99c234ad9c426/pydeconz/models/sensor/thermostat.py#L388
...and perhaps name it
config/windowopen_detection_enabled
Hm, do we have a naming convention here? 😃 The vast majority is without any underscores.
In pydeconz I named it window_open_detection [...]
I wanted to eliminate any room for interpretation or ambiguity here.
Currently we don't but would be nice to have one :) The underscores were introduced for some newer items like for the alarm system config/armed_away_trigger_duration.
Personally I increasingly like the underscore versions better, especially for the long names. On the other hand consistency is important too.. But perhaps moving forward we can vote for a certain style and stick to it.
I need too state/outdoor_temperature for exemple, the attribute 0x0001.
Proposed candidates
config/backlight for Sinopé Thermostat #5904
As addition to the proposed candidates for Danfoss Ally and derivates:
config/MountingOrientation - Orientation is the actual direction in which the eTRVis mounted
config/HeatAvailable - Heat from heat source is available
config/LoadRadiatorRoomMean - Mean radiator load for room calculated by gateway
~~config/SetPointOffset - Offset from the setpoint to adjust over-/underheating~~
config/StartStopAdaptationRun - Control adaption run
~~config/KeypadLockout - Childlock~~
state/LoadEstimateOnThisRadiator - Reported load from radiator
state/HeadSupplyRequest - Heat request from radiator
state/AdaptationRunStatus - Status of adaption run
Childlock is config/locked for me and already in the code, (and using config/lock for doorlock)
Offset from the setpoint to adjust over-/underheating
This one is not config/offset ?
You are totally right. I overlooked them both. Updated my list above for better overview.
Some one wana make a PR for them ?
I realy need a second heatsetpoint, lot of tuya stuff use a heatpoint classic, and (at least) one more for manu mode or away mode.
I could really use the load balancing feature on my Ally thermostats. I have 2 merged living rooms with 4 radiators. And the radiators tend to work against each other. I'm pretty sure that load balancing would solve that. It's also a standard feature in the Ally hub.
So the following Ally features would be very appreciated: state/loadestimate config/meanloadroom