Closed bieniu closed 4 years ago
I have exactly the same issue with multiple Devolo and Danfoss Z-Wave devices after upgrading to 0.103. Needed to downgrade to 0.102 again, since these devices are very important during the winter ;-)
Same issue here with the climate
entities for Danfoss 014G0013.
Maybe this issue is related to this https://github.com/home-assistant/home-assistant/pull/27040
@bieniu it looks like it is. https://products.z-wavealliance.org/products/967/classes
Notice how the thermostat is missing COMMAND_CLASS_THERMOSTAT_MODE
which is what that PR is looking for.
CC: @oandrew
Hey there @home-assistant/z-wave, mind taking a look at this issue as its been labeled with a integration (zwave
) you are listed as a codeowner for? Thanks!
Same issue here.
Same issue here, affects both the danfoss/devolo 014g0013 and the POPP variant of the valve.
Same issue here, I added
climate:
- platform: zwave
to my config, as per the docs (https://www.home-assistant.io/integrations/zwave/#climate is that new??) but it didn't seem to make any difference.
The worst thing is, I roll back to 0.102.3 but still no thermostats! With or without this new?config.
Same issues none of my Danfoss Thermostat are showing in the UI. It shows them when im at the Integration Page as: This entity is not currently available.
Same Issue here. 7 Devolo thermostats and all of them lost the climate setpoint (Command Class Thermostat Setpoint) part of the integration although current temperature, battery level and Z-Wave status still working fine.
Happened after upgrading to 0.103.
Manufacturer name: Devolo Home Control Radiator Thermostat (014G0013)
Same here. zwave. entity is there also a sensor. entity but the climate.* entity are all gone for my Danfoss Z Thermostat 014G0013
Same issue here, I added
climate: - platform: zwave
to my config, as per the docs (https://www.home-assistant.io/integrations/zwave/#climate is that new??) but it didn't seem to make any difference.
No that not new, at least not in 0.103
Exactly same issue here.
Exactly same issue here.
I have 5 thermostats and that same issue, try remove and add again thermostat and nothing. Only Battery can see
Unfortunately https://github.com/home-assistant/home-assistant/pull/27040 assumed that every thermostat implements the COMMAND_CLASS_THERMOSTAT_MODE
, but comments here prove otherwise. Would have been better to test it with different thermostats before merging and releasing it.
Anyone having this issue needs to either:
Imho, since it is winter in the northern hemisphere, it is not wise to break the thermostats' functions just now.
Since I'm also affected I tried debugging this issue and it seems it has something to do with the changes in the base command class here: https://github.com/home-assistant/home-assistant/pull/27040/files#diff-4969ac1f2c73099aaf2558a6097c4912. Turning on debug logging for the Z-Wave component also gives me thousends of command class issues, which are quite annoying to debug.
However according to spec (pdf) it seems that Thermostat Mode and Thermostat Setpoint are two completely different Z-Wave command classes. That's why I suppose the solutation is somewhere around there.
I tried to add a new Climate entry with the correct command class in the device discovery dict but this doesn't seem to work. Perhaps I'm missing something here? Otherwise this could solve this issue.
{
const.DISC_COMPONENT: "climate", # Thermostat Setpoint devices
const.DISC_GENERIC_DEVICE_CLASS: [
const.GENERIC_TYPE_THERMOSTAT,
const.GENERIC_TYPE_SENSOR_MULTILEVEL,
],
const.DISC_VALUES: dict(
DEFAULT_VALUES_SCHEMA,
**{
const.DISC_PRIMARY: {
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_THERMOSTAT_SETPOINT]
},
"temperature": {
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SENSOR_MULTILEVEL],
const.DISC_INDEX: [const.INDEX_SENSOR_MULTILEVEL_TEMPERATURE],
const.DISC_OPTIONAL: True,
},
}
)
},
@oandrew the devices that aren't working (mostly Danfoss / Devolo / Popp) only expose command class 67 (See also Open Z Wave).
@electrofloat Appearently we found the same thing 😄. The thing is though, that @oandrew correctly amended the tests with this change. Even leaving a setpoint device in place. So maybe there is something going on there as well....
Having this issue with a Honeywell T6 Pro
My devolo thermostats are also impacted.
Sorry about this, everyone.
I will try to take a look at it/fix it tomorrow/this weekend.
Also It would be super helpful if you could share xml definitions of problematic devices from
your zwcfg_*.xml
file. e.g. <Node> ... </Node>
.
Thanks!
@oandrew Danfoss 014G0013
<Node id="4" name="Danfoss 014G0013" location="sypialnia" basic="4" generic="8" specific="4" type="Setpoint Thermostat" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
<Manufacturer id="2" name="Danfoss">
<Product type="5" id="4" name="Z Thermostat 014G0013" />
</Manufacturer>
<CommandClasses>
<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="1" request_flags="4" override_precision="2" innif="true" base="0">
<Instance index="1" />
<Value type="decimal" genre="user" instance="1" index="1" label="Heating 1" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="21.00" />
</CommandClass>
<CommandClass id="70" name="COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE" version="1" request_flags="4" innif="true" change_counter="0">
<Instance index="1" />
<Value type="schedule" genre="user" instance="1" index="1" label="Monday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="2" label="Tuesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="3" label="Wednesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="4" label="Thursday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="5" label="Friday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="6" label="Saturday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="7" label="Sunday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="list" genre="user" instance="1" index="8" label="Override State" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="None" value="0" />
<Item label="Temporary" value="1" />
<Item label="Permanent" value="2" />
</Value>
<Value type="byte" genre="user" instance="1" index="9" label="Override Setback" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="127" />
</CommandClass>
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
<CommandClass id="117" name="COMMAND_CLASS_PROTECTION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="system" instance="1" index="0" label="Protection" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="Unprotected" value="0" />
<Item label="Protection by Sequence" value="1" />
<Item label="No Operation Possible" value="2" />
</Value>
</CommandClass>
<CommandClass id="128" name="COMMAND_CLASS_BATTERY" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="byte" genre="user" instance="1" index="0" label="Battery Level" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="48" />
</CommandClass>
<CommandClass id="129" name="COMMAND_CLASS_CLOCK" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="user" instance="1" index="0" label="Day" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="4" size="1">
<Item label="Monday" value="1" />
<Item label="Tuesday" value="2" />
<Item label="Wednesday" value="3" />
<Item label="Thursday" value="4" />
<Item label="Friday" value="5" />
<Item label="Saturday" value="6" />
<Item label="Sunday" value="7" />
</Value>
<Value type="byte" genre="user" instance="1" index="1" label="Hour" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="5" />
<Value type="byte" genre="user" instance="1" index="2" label="Minute" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="31" />
</CommandClass>
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="2" request_flags="2" innif="true">
<Instance index="1" />
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="1" label="Minimum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
<Value type="int" genre="system" instance="1" index="2" label="Maximum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="1800" />
<Value type="int" genre="system" instance="1" index="3" label="Default Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="4" label="Wake-up Interval Step" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
</CommandClass>
<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="string" genre="system" instance="1" index="0" label="Library Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="6" />
<Value type="string" genre="system" instance="1" index="1" label="Protocol Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="3.67" />
<Value type="string" genre="system" instance="1" index="2" label="Application Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="1.01" />
</CommandClass>
<CommandClass id="143" name="COMMAND_CLASS_MULTI_CMD" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
</CommandClasses>
</Node>
Here is the xml definition for the POPP Wireless Thermostatic Valve TRV, shown as Danfoss Popp Radiator Thermostat in HA: https://pastebin.com/MBt1fbJB
Unfortunately #27040 assumed that every thermostat implements the
COMMAND_CLASS_THERMOSTAT_MODE
, but comments here prove otherwise. Would have been better to test it with different thermostats before merging and releasing it.Anyone having this issue needs to either:
- revert back to previous version of HA, or
- revert #27040 manually while HA is stopped.
Imho, since it is winter in the northern hemisphere, it is not wise to break the thermostats' functions just now.
I went back to 0.102.3 and my Devolos are working now! Thanks for the advice!
I hope we can solve this issue asap.
Same issue with Eurotronic and Fibaro for me
My Devolo thermostats were gone after updating to 0.103, too. After downgrading back to 0.102.3 everything is working again.
Here's how to perform a downgrade using SSH:
hassio homeassistant update --version 0.102.3
@oandrew Danfoss Z Thermostat 014G0013 xml defintion:
<Node id="4" name="" location="" basic="4" generic="8" specific="4" type="Setpoint Thermostat" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
<Manufacturer id="2" name="Danfoss">
<Product type="5" id="4" name="Z Thermostat 014G0013" />
</Manufacturer>
<CommandClasses>
<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="1" request_flags="4" override_precision="2" innif="true" base="0" typeInterpretation="B">
<Instance index="1" />
<Value type="decimal" genre="user" instance="1" index="1" label="Heating 1" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="23.00" />
</CommandClass>
<CommandClass id="70" name="COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE" version="1" request_flags="4" innif="true" change_counter="0">
<Instance index="1" />
<Value type="schedule" genre="user" instance="1" index="1" label="Monday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="2" label="Tuesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="3" label="Wednesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="4" label="Thursday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="5" label="Friday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="6" label="Saturday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="7" label="Sunday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="list" genre="user" instance="1" index="8" label="Override State" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="None" value="0" />
<Item label="Temporary" value="1" />
<Item label="Permanent" value="2" />
</Value>
<Value type="byte" genre="user" instance="1" index="9" label="Override Setback" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="127" />
</CommandClass>
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
<CommandClass id="117" name="COMMAND_CLASS_PROTECTION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="system" instance="1" index="0" label="Protection" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="Unprotected" value="0" />
<Item label="Protection by Sequence" value="1" />
<Item label="No Operation Possible" value="2" />
</Value>
</CommandClass>
<CommandClass id="128" name="COMMAND_CLASS_BATTERY" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="byte" genre="user" instance="1" index="0" label="Battery Level" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="40" />
</CommandClass>
<CommandClass id="129" name="COMMAND_CLASS_CLOCK" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="user" instance="1" index="0" label="Day" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="5" size="1">
<Item label="Monday" value="1" />
<Item label="Tuesday" value="2" />
<Item label="Wednesday" value="3" />
<Item label="Thursday" value="4" />
<Item label="Friday" value="5" />
<Item label="Saturday" value="6" />
<Item label="Sunday" value="7" />
</Value>
<Value type="byte" genre="user" instance="1" index="1" label="Hour" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="2" />
<Value type="byte" genre="user" instance="1" index="2" label="Minute" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="25" />
</CommandClass>
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="2" request_flags="2" innif="true">
<Instance index="1" />
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="1" label="Minimum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
<Value type="int" genre="system" instance="1" index="2" label="Maximum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="1800" />
<Value type="int" genre="system" instance="1" index="3" label="Default Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="4" label="Wake-up Interval Step" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
</CommandClass>
<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="string" genre="system" instance="1" index="0" label="Library Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="6" />
<Value type="string" genre="system" instance="1" index="1" label="Protocol Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="3.67" />
<Value type="string" genre="system" instance="1" index="2" label="Application Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="1.01" />
</CommandClass>
<CommandClass id="143" name="COMMAND_CLASS_MULTI_CMD" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
</CommandClasses>
</Node>
For Z-Wave Plus there are two defined types of thermostats (see SDS11847 Z-Wave Plus Device Type Specification):
Section 4.26 Thermostat - HVAC
The Thermostat (HVAC) Device Type is intended by thermostats that support set points and modes. It is typically used for all mainstream thermostats that can support e.g. Heating, Cooling and Fans.
Device Type: Thermostat - HVAC Identifiers: GENERIC_TYPE_THERMOSTAT, SPECIFIC_TYPE_THERMOSTAT_GENERAL_V2 Mandatory Command Classes: Thermostat Mode, Thermostat Set Point, etc.
Section 4.27 Thermostat - Setback
The Thermostat Setback Device Type is intended for thermostats that typically do not allow for actual temperature settings but rather adjust the temperature up and down to certain thresholds.
Device Type: Thermostat - Setback Identifiers: GENERIC_TYPE_THERMOSTAT, SPECIFIC_TYPE_SETBACK_THERMOSTAT Mandatory Command Classes: Thermostat Setback, etc., NOT Thermostat Mode
The Danfoss, etc. are Setback/Setpoint types, which you can see in the XML (so OZW is certainly aware of that):
<Node id="4" name="" location="" basic="4" generic="8" specific="4" type="Setpoint Thermostat" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
Here is my "Generic" thermostat which provides Mode and Set Point classes, and is working great in 0.103:
<Node id="5" name="" location="" basic="4" generic="8" specific="6" roletype="7" devicetype="4608" nodetype="0" type="General Thermostat V2" listening="false" frequentListening="true" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
type Setpoint Thermostat vs. General Thermostat V2.
Probably want to check the (specific) type, and use the old behavior for Setback thermostats, and new behavior for General V2.
Non Z-Wave plus have other specific types. Most of them define mandatory classes, some don't (see SDS10242).
OZW exposes all the specific types here.
Same issue here with maxcube, no climate.*
same issue also here :( with popp
Hello,
The definitions of some if my thermostats
Popp
<Node id="10" name="" location="" basic="4" generic="8" specific="4" type="Setpoint Thermostat" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
<Manufacturer id="2" name="Danfoss">
<Product type="115" id="a010" name="Popp Radiator Thermostat" />
</Manufacturer>
<CommandClasses>
<CommandClass id="49" name="COMMAND_CLASS_SENSOR_MULTILEVEL" version="6" innif="true">
<Instance index="1" />
<Value type="decimal" genre="user" instance="1" index="1" label="Temperature" units="C" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="20.50" />
</CommandClass>
<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="2" request_flags="2" override_precision="2" innif="true" base="0">
<Instance index="1" />
<Value type="decimal" genre="user" instance="1" index="1" label="Heating 1" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="20.50" />
</CommandClass>
<CommandClass id="70" name="COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE" version="1" request_flags="4" innif="true" change_counter="0">
<Instance index="1" />
<Value type="schedule" genre="user" instance="1" index="1" label="Monday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="2" label="Tuesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="3" label="Wednesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="4" label="Thursday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="5" label="Friday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="6" label="Saturday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="7" label="Sunday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="list" genre="user" instance="1" index="8" label="Override State" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="None" value="0" />
<Item label="Temporary" value="1" />
<Item label="Permanent" value="2" />
</Value>
<Value type="byte" genre="user" instance="1" index="9" label="Override Setback" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="127" />
</CommandClass>
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
<CommandClass id="117" name="COMMAND_CLASS_PROTECTION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="system" instance="1" index="0" label="Protection" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="Unprotected" value="0" />
<Item label="Protection by Sequence" value="1" />
<Item label="No Operation Possible" value="2" />
</Value>
</CommandClass>
<CommandClass id="128" name="COMMAND_CLASS_BATTERY" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="byte" genre="user" instance="1" index="0" label="Battery Level" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="69" />
</CommandClass>
<CommandClass id="129" name="COMMAND_CLASS_CLOCK" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="user" instance="1" index="0" label="Day" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="1" size="1">
<Item label="Monday" value="1" />
<Item label="Tuesday" value="2" />
<Item label="Wednesday" value="3" />
<Item label="Thursday" value="4" />
<Item label="Friday" value="5" />
<Item label="Saturday" value="6" />
<Item label="Sunday" value="7" />
</Value>
<Value type="byte" genre="user" instance="1" index="1" label="Hour" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="22" />
<Value type="byte" genre="user" instance="1" index="2" label="Minute" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="21" />
</CommandClass>
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="2" request_flags="2" innif="true">
<Instance index="1" />
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="1" label="Minimum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
<Value type="int" genre="system" instance="1" index="2" label="Maximum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="1800" />
<Value type="int" genre="system" instance="1" index="3" label="Default Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="4" label="Wake-up Interval Step" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
</CommandClass>
<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="string" genre="system" instance="1" index="0" label="Library Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="6" />
<Value type="string" genre="system" instance="1" index="1" label="Protocol Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="3.67" />
<Value type="string" genre="system" instance="1" index="2" label="Application Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="1.00" />
</CommandClass>
<CommandClass id="143" name="COMMAND_CLASS_MULTI_CMD" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
</CommandClasses>
</Node>
Original Danfoss without themp report
<Node id="16" name="" location="" basic="4" generic="8" specific="4" type="Setpoint Thermostat" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
<Manufacturer id="2" name="Danfoss">
<Product type="5" id="4" name="Z Thermostat 014G0013" />
</Manufacturer>
<CommandClasses>
<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="2" request_flags="2" override_precision="2" innif="true" base="0">
<Instance index="1" />
<Value type="decimal" genre="user" instance="1" index="1" label="Heating 1" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="20.50" />
</CommandClass>
<CommandClass id="70" name="COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE" version="1" request_flags="4" innif="true" change_counter="0">
<Instance index="1" />
<Value type="schedule" genre="user" instance="1" index="1" label="Monday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="2" label="Tuesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="3" label="Wednesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="4" label="Thursday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="5" label="Friday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="6" label="Saturday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="7" label="Sunday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="list" genre="user" instance="1" index="8" label="Override State" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="None" value="0" />
<Item label="Temporary" value="1" />
<Item label="Permanent" value="2" />
</Value>
<Value type="byte" genre="user" instance="1" index="9" label="Override Setback" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="127" />
</CommandClass>
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
<CommandClass id="117" name="COMMAND_CLASS_PROTECTION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="system" instance="1" index="0" label="Protection" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="Unprotected" value="0" />
<Item label="Protection by Sequence" value="1" />
<Item label="No Operation Possible" value="2" />
</Value>
</CommandClass>
<CommandClass id="128" name="COMMAND_CLASS_BATTERY" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="byte" genre="user" instance="1" index="0" label="Battery Level" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="83" />
</CommandClass>
<CommandClass id="129" name="COMMAND_CLASS_CLOCK" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="user" instance="1" index="0" label="Day" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="5" size="1">
<Item label="Monday" value="1" />
<Item label="Tuesday" value="2" />
<Item label="Wednesday" value="3" />
<Item label="Thursday" value="4" />
<Item label="Friday" value="5" />
<Item label="Saturday" value="6" />
<Item label="Sunday" value="7" />
</Value>
<Value type="byte" genre="user" instance="1" index="1" label="Hour" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="12" />
<Value type="byte" genre="user" instance="1" index="2" label="Minute" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
</CommandClass>
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="2" request_flags="2" innif="true">
<Instance index="1" />
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="1" label="Minimum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
<Value type="int" genre="system" instance="1" index="2" label="Maximum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="1800" />
<Value type="int" genre="system" instance="1" index="3" label="Default Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="4" label="Wake-up Interval Step" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
</CommandClass>
<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="string" genre="system" instance="1" index="0" label="Library Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="6" />
<Value type="string" genre="system" instance="1" index="1" label="Protocol Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="3.67" />
<Value type="string" genre="system" instance="1" index="2" label="Application Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="1.01" />
</CommandClass>
<CommandClass id="143" name="COMMAND_CLASS_MULTI_CMD" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
</CommandClasses>
</Node>
Devolo version of the hardware
<Node id="18" name="" location="" basic="4" generic="8" specific="4" type="Setpoint Thermostat" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
<Manufacturer id="2" name="Danfoss">
<Product type="5" id="175" name="Devolo Home Control Radiator Thermostat" />
</Manufacturer>
<CommandClasses>
<CommandClass id="49" name="COMMAND_CLASS_SENSOR_MULTILEVEL" version="6" innif="true">
<Instance index="1" />
<Value type="decimal" genre="user" instance="1" index="1" label="Temperature" units="C" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="19.47" />
</CommandClass>
<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="1" request_flags="4" override_precision="2" innif="true" base="0">
<Instance index="1" />
<Value type="decimal" genre="user" instance="1" index="1" label="Heating 1" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="19.00" />
</CommandClass>
<CommandClass id="70" name="COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE" version="1" request_flags="4" innif="true" change_counter="0">
<Instance index="1" />
<Value type="schedule" genre="user" instance="1" index="1" label="Monday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="2" label="Tuesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="3" label="Wednesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="4" label="Thursday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="5" label="Friday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="6" label="Saturday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="7" label="Sunday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="list" genre="user" instance="1" index="8" label="Override State" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="None" value="0" />
<Item label="Temporary" value="1" />
<Item label="Permanent" value="2" />
</Value>
<Value type="byte" genre="user" instance="1" index="9" label="Override Setback" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="127" />
</CommandClass>
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
<CommandClass id="117" name="COMMAND_CLASS_PROTECTION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="system" instance="1" index="0" label="Protection" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="Unprotected" value="0" />
<Item label="Protection by Sequence" value="1" />
<Item label="No Operation Possible" value="2" />
</Value>
</CommandClass>
<CommandClass id="128" name="COMMAND_CLASS_BATTERY" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="byte" genre="user" instance="1" index="0" label="Battery Level" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="82" />
</CommandClass>
<CommandClass id="129" name="COMMAND_CLASS_CLOCK" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="user" instance="1" index="0" label="Day" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="Monday" value="1" />
<Item label="Tuesday" value="2" />
<Item label="Wednesday" value="3" />
<Item label="Thursday" value="4" />
<Item label="Friday" value="5" />
<Item label="Saturday" value="6" />
<Item label="Sunday" value="7" />
</Value>
<Value type="byte" genre="user" instance="1" index="1" label="Hour" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="14" />
<Value type="byte" genre="user" instance="1" index="2" label="Minute" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="28" />
</CommandClass>
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="2" request_flags="2" innif="true">
<Instance index="1" />
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="1" label="Minimum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
<Value type="int" genre="system" instance="1" index="2" label="Maximum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="1800" />
<Value type="int" genre="system" instance="1" index="3" label="Default Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="4" label="Wake-up Interval Step" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
</CommandClass>
<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="string" genre="system" instance="1" index="0" label="Library Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="6" />
<Value type="string" genre="system" instance="1" index="1" label="Protocol Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="3.67" />
<Value type="string" genre="system" instance="1" index="2" label="Application Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="1.00" />
</CommandClass>
<CommandClass id="143" name="COMMAND_CLASS_MULTI_CMD" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
</CommandClasses>
</Node>
Philippe
Can someone test the fix with real devices? Thanks
Can someone test the fix with real devices? Thanks
Hi Andrew, let me know what I need to do
Can someone test the fix with real devices? Thanks
Hi Andrew, let me know what I need to do
I don't know what the recommended way is - in this case - to test out a commit, but on linux I would do something like the following:
systemctl stop homeassistant.service
cd homeassistant/lib/python3.7/site-packages/homeassistant/components/zwave
cp climate.py climate.py_
cp discovery_schemas.py discovery_schemas.py_
wget https://raw.githubusercontent.com/home-assistant/home-assistant/f62167d60c94f9ced9aeb71de37054d966743f9b/homeassistant/components/zwave/climate.py
wget https://raw.githubusercontent.com/home-assistant/home-assistant/f62167d60c94f9ced9aeb71de37054d966743f9b/homeassistant/components/zwave/discovery_schemas.py
systemctl start homeassistant.service
If it works, great. If it doesn't, stop HA again, cp back .py_ files, start HA and you get back where you were.
You can copy homeassistant/components/zwave
from my branch into your config directory custom_components/zwave
to override a component.
More info here: https://developers.home-assistant.io/docs/en/creating_component_loading.html
You can copy
homeassistant/components/zwave
from my branch into your config directorycustom_components/zwave
to override a component.More info here: https://developers.home-assistant.io/docs/en/creating_component_loading.html
no change...
<Node id="19" name="" location="" basic="4" generic="8" specific="4" type="Setpoint Thermostat" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
<Manufacturer id="2" name="Danfoss">
<Product type="5" id="4" name="Z Thermostat 014G0013" />
</Manufacturer>
<CommandClasses>
<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="1" request_flags="4" override_precision="2" innif="true" base="0" typeInterpretation="B">
<Instance index="1" />
<Value type="decimal" genre="user" instance="1" index="1" label="Heating 1" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="1" min="0" max="0" value="21.00" />
</CommandClass>
<CommandClass id="70" name="COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE" version="1" request_flags="4" innif="true" change_counter="0">
<Instance index="1" />
<Value type="schedule" genre="user" instance="1" index="1" label="Monday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="2" label="Tuesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="3" label="Wednesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="4" label="Thursday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="5" label="Friday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="6" label="Saturday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="7" label="Sunday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="list" genre="user" instance="1" index="8" label="Override State" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="None" value="0" />
<Item label="Temporary" value="1" />
<Item label="Permanent" value="2" />
</Value>
<Value type="byte" genre="user" instance="1" index="9" label="Override Setback" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="127" />
</CommandClass>
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
<CommandClass id="117" name="COMMAND_CLASS_PROTECTION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="system" instance="1" index="0" label="Protection" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="Unprotected" value="0" />
<Item label="Protection by Sequence" value="1" />
<Item label="No Operation Possible" value="2" />
</Value>
</CommandClass>
<CommandClass id="128" name="COMMAND_CLASS_BATTERY" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="byte" genre="user" instance="1" index="0" label="Battery Level" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
</CommandClass>
<CommandClass id="129" name="COMMAND_CLASS_CLOCK" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="user" instance="1" index="0" label="Day" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="3" size="1">
<Item label="Monday" value="1" />
<Item label="Tuesday" value="2" />
<Item label="Wednesday" value="3" />
<Item label="Thursday" value="4" />
<Item label="Friday" value="5" />
<Item label="Saturday" value="6" />
<Item label="Sunday" value="7" />
</Value>
<Value type="byte" genre="user" instance="1" index="1" label="Hour" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="5" />
<Value type="byte" genre="user" instance="1" index="2" label="Minute" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="26" />
</CommandClass>
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="2" request_flags="2" innif="true">
<Instance index="1" />
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="1" label="Minimum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
<Value type="int" genre="system" instance="1" index="2" label="Maximum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="1800" />
<Value type="int" genre="system" instance="1" index="3" label="Default Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="4" label="Wake-up Interval Step" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
</CommandClass>
<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="string" genre="system" instance="1" index="0" label="Library Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="6" />
<Value type="string" genre="system" instance="1" index="1" label="Protocol Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="3.67" />
<Value type="string" genre="system" instance="1" index="2" label="Application Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="1.01" />
</CommandClass>
<CommandClass id="143" name="COMMAND_CLASS_MULTI_CMD" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
</CommandClasses>
</Node>
I already tried a similar fix earlier. But it seems that this COMMAND_CLASS
is not picked up correctly. This is easily spotted by turning on debug logging on the Z-Wave component.
I also think your earlier PR and tests were fine already. Except that Z-Wave (non plus) thermostats were not picked up correctly some way or another.
@oandrew I moved zwave
code from your PR to my custom_components folder and did the update to 0.103 (again) and everything is working as expected. Didn't lose the setpoint (climate.*) entity of my Devolo thermostats. So should be fine to merge into master for the next release.
If you need any info / logs just tell me.
EDIT: Here is one of my thermostats from zwcfg*.xml https://pastebin.com/4ztZDVWM
And thanks for the quick fix !
@Idanit did you download the zwave folder from the correct branch?
https://github.com/oandrew/home-assistant/archive/zwave-thermostat-bugfix.zip
homeassitant/components/zwave
folder to your config/custom_components
folder and restart HA.Oh no, my mistake, very sorry for for misleading. I did this "You can copy homeassistant/components/zwave from my branch into your config directory custom_components/zwave to override a component." Gimme couple of minutes...
Still nothing.
<Node id="19" name="" location="" basic="4" generic="8" specific="4" type="Setpoint Thermostat" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Session">
<Manufacturer id="2" name="Danfoss">
<Product type="5" id="4" name="Z Thermostat 014G0013" />
</Manufacturer>
<CommandClasses>
<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="1" request_flags="4" override_precision="2" innif="true" base="0" typeInterpretation="B">
<Instance index="1" />
<Value type="decimal" genre="user" instance="1" index="1" label="Heating 1" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="1" min="0" max="0" value="22.00" />
</CommandClass>
<CommandClass id="70" name="COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE" version="1" request_flags="4" innif="true" change_counter="0">
<Instance index="1" />
<Value type="schedule" genre="user" instance="1" index="1" label="Monday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="2" label="Tuesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="3" label="Wednesday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="4" label="Thursday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="5" label="Friday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="6" label="Saturday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="schedule" genre="user" instance="1" index="7" label="Sunday" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="list" genre="user" instance="1" index="8" label="Override State" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="None" value="0" />
<Item label="Temporary" value="1" />
<Item label="Permanent" value="2" />
</Value>
<Value type="byte" genre="user" instance="1" index="9" label="Override Setback" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="127" />
</CommandClass>
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
<CommandClass id="117" name="COMMAND_CLASS_PROTECTION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="system" instance="1" index="0" label="Protection" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="Unprotected" value="0" />
<Item label="Protection by Sequence" value="1" />
<Item label="No Operation Possible" value="2" />
</Value>
</CommandClass>
<CommandClass id="128" name="COMMAND_CLASS_BATTERY" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="byte" genre="user" instance="1" index="0" label="Battery Level" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
</CommandClass>
<CommandClass id="129" name="COMMAND_CLASS_CLOCK" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="user" instance="1" index="0" label="Day" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="3" size="1">
<Item label="Monday" value="1" />
<Item label="Tuesday" value="2" />
<Item label="Wednesday" value="3" />
<Item label="Thursday" value="4" />
<Item label="Friday" value="5" />
<Item label="Saturday" value="6" />
<Item label="Sunday" value="7" />
</Value>
<Value type="byte" genre="user" instance="1" index="1" label="Hour" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="15" />
<Value type="byte" genre="user" instance="1" index="2" label="Minute" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="16" />
</CommandClass>
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="2" request_flags="2" innif="true">
<Instance index="1" />
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="1" label="Minimum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
<Value type="int" genre="system" instance="1" index="2" label="Maximum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="1800" />
<Value type="int" genre="system" instance="1" index="3" label="Default Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
<Value type="int" genre="system" instance="1" index="4" label="Wake-up Interval Step" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
</CommandClass>
<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="string" genre="system" instance="1" index="0" label="Library Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="6" />
<Value type="string" genre="system" instance="1" index="1" label="Protocol Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="3.67" />
<Value type="string" genre="system" instance="1" index="2" label="Application Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="1.01" />
</CommandClass>
<CommandClass id="143" name="COMMAND_CLASS_MULTI_CMD" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
</CommandClasses>
</Node>
@Idanit Can you verify that the custom component was loaded? You should see this in the HA log:
2019-12-15 13:29:08 INFO (SyncWorker_0) [homeassistant.loader] Loaded zwave from custom_components.zwave
2019-12-15 13:29:08 WARNING (MainThread) [homeassistant.loader] You are using a custom integration for zwave which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you do experience issues
with Home Assistant.
and logs with custom_components.zwave
:
2019-12-15 13:29:27 INFO (Dummy-2) [custom_components.zwave] Z-Wave network is ready for use. All awake nodes have been queried. Sleeping nodes will be queried when they awake.
If you don't see the WARNING, or custom_components.zwave, then the custom component was not loaded.
2019-12-15 21:47:22 WARNING (MainThread) [homeassistant.loader] You are using a custom integration for zwave which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you do experience issues with Home Assistant.
@Idanit what's the output of shasum custom_components/zwave/climate.py
?
To throw in another positiv confirmation: Fix works on 0.103.0
.
I have the climate entity back.
(sha of climate.py
is d8f0abf4f43b8eb220588e1a7d9404bf0751a794
)
@Idanit could you please run this command from your config
directory.
shasum custom_components/zwave/*
You should see exactly the following:
$ shasum custom_components/zwave/*
d626a14486c11b5c429ba181cd176c2759e04094 custom_components/zwave/binary_sensor.py
d8f0abf4f43b8eb220588e1a7d9404bf0751a794 custom_components/zwave/climate.py
50e14d34e4e2f974945429b1e532b70447bf3552 custom_components/zwave/config_flow.py
148d68e2c4c0c688af14058c788e123ca9294d13 custom_components/zwave/const.py
733e13fa8d692906527cf85fa2792a88fc91b6b5 custom_components/zwave/cover.py
04ca95605a7f6affd4692677ecc792f94e9aa49d custom_components/zwave/discovery_schemas.py
05b565acf54c30fd3899f42d6e5ca1dd03996a60 custom_components/zwave/fan.py
d33470bf054ab12ee0a926008f55fcb3b378a07c custom_components/zwave/__init__.py
49b8849fd60d249944ce67d937e08c96b2fe1284 custom_components/zwave/light.py
b9adbd51836ad265e017b1a826afd66e5f1443eb custom_components/zwave/lock.py
d1ac2f3f9a642b209f523ab549043af1c4237df8 custom_components/zwave/manifest.json
fe45ad09adaaa78e0eef27aee63d358310600565 custom_components/zwave/node_entity.py
781bb3af49abe5f16457a6909bbb2f35880c8f60 custom_components/zwave/sensor.py
33eb30b92f25dd714c30b1a783932e41cfc55ab8 custom_components/zwave/services.yaml
93ec040f32ffd92a90d54f1f9e3b160e555eaabb custom_components/zwave/strings.json
334fd3e0e53580be693bcbd403403ead3064e2be custom_components/zwave/switch.py
1266c1ff69e2255d0d3393021f1c31be128966e7 custom_components/zwave/util.py
fcb94aaef371e1c25969afde4f202274b1833dd8 custom_components/zwave/websocket_api.py
16bc27e64d231448f416dde12d7a426229b97477 custom_components/zwave/workaround.py
You could also try enabling debug logs and see if it might show something. Here's an example to add to configuration.yaml
when using the custom component:
logger:
default: info
logs:
custom_components.zwave: debug
Then restart HA and it will show debug logs for zwave. Maybe post a copy of home-assistant.log
after doing so.
@Idanit please edit your comment and remove all the pasted stuff.
From terminal run shasum custom_components/zwave/*.py
and paste your result here.
It should look something like this:
$ shasum custom_components/zwave/*.py
d626a14486c11b5c429ba181cd176c2759e04094 custom_components/zwave/binary_sensor.py
c30c658e3b458f6eaf655e507f3a465d64dcedce custom_components/zwave/climate.old.py
d8f0abf4f43b8eb220588e1a7d9404bf0751a794 custom_components/zwave/climate.py
50e14d34e4e2f974945429b1e532b70447bf3552 custom_components/zwave/config_flow.py
148d68e2c4c0c688af14058c788e123ca9294d13 custom_components/zwave/const.py
733e13fa8d692906527cf85fa2792a88fc91b6b5 custom_components/zwave/cover.py
04ca95605a7f6affd4692677ecc792f94e9aa49d custom_components/zwave/discovery_schemas.py
05b565acf54c30fd3899f42d6e5ca1dd03996a60 custom_components/zwave/fan.py
d33470bf054ab12ee0a926008f55fcb3b378a07c custom_components/zwave/__init__.py
49b8849fd60d249944ce67d937e08c96b2fe1284 custom_components/zwave/light.py
b9adbd51836ad265e017b1a826afd66e5f1443eb custom_components/zwave/lock.py
fe45ad09adaaa78e0eef27aee63d358310600565 custom_components/zwave/node_entity.py
781bb3af49abe5f16457a6909bbb2f35880c8f60 custom_components/zwave/sensor.py
334fd3e0e53580be693bcbd403403ead3064e2be custom_components/zwave/switch.py
1266c1ff69e2255d0d3393021f1c31be128966e7 custom_components/zwave/util.py
fcb94aaef371e1c25969afde4f202274b1833dd8 custom_components/zwave/websocket_api.py
16bc27e64d231448f416dde12d7a426229b97477 custom_components/zwave/workaround.py
0.103.0
Hello,
Another positive feedback of the fix. d8f0abf4f43b8eb220588e1a7d9404bf0751a794 custom_components/zwave/climate.py
All variants of Danfoss zwave devices I have (Popp, original Danfoss & Devolo) still have the climate part on 0.103.0 with the zwave part override
Philippe
@Idanit How about md5sum instead? Please just copy and paste the command as given so it shows all the files. Make sure you are in the config directory first.
md5sum custom_components/zwave/*.py
Expected output:
$ md5sum custom_components/zwave/*.py
b19eabe4f8601a6f9d8392cf039ddb92 custom_components/zwave/__init__.py
992e77c89f8622104845e3e0188694ce custom_components/zwave/binary_sensor.py
4b53034a0899981a22577f16e09349fa custom_components/zwave/climate.py
d8ecd39f7ed33f943992f34d024a514c custom_components/zwave/config_flow.py
9967ff09a77a77459cb6c46413ff9c50 custom_components/zwave/const.py
b60898066d7018996dd46a2cd8b7a448 custom_components/zwave/cover.py
bd47fc19d1db5ca3b4f02da6b5bebb69 custom_components/zwave/discovery_schemas.py
718205b7f4aee920f794adec943243d9 custom_components/zwave/fan.py
d94537eee62311f1827ec7e29e0f62a3 custom_components/zwave/light.py
fc5866a04ffd89734edbc9baab68c909 custom_components/zwave/lock.py
a8f1464d8243cd64b56eb8bfe810b7bb custom_components/zwave/node_entity.py
7f2edf3a9754a778b6361f8078e5c017 custom_components/zwave/sensor.py
8afcaf8a5a26cf25b5816865b9a85d97 custom_components/zwave/switch.py
3bb277d42541a7094fb4a832894e6a35 custom_components/zwave/util.py
f7735c1321237aa13f4d85ce7fd9d45c custom_components/zwave/websocket_api.py
98ed321a103458404f88674431bb5d81 custom_components/zwave/workaround.py
On my (now working) setup:
# md5sum custom_components/zwave/*.py
992e77c89f8622104845e3e0188694ce custom_components/zwave/binary_sensor.py
4b53034a0899981a22577f16e09349fa custom_components/zwave/climate.py
d8ecd39f7ed33f943992f34d024a514c custom_components/zwave/config_flow.py
9967ff09a77a77459cb6c46413ff9c50 custom_components/zwave/const.py
b60898066d7018996dd46a2cd8b7a448 custom_components/zwave/cover.py
bd47fc19d1db5ca3b4f02da6b5bebb69 custom_components/zwave/discovery_schemas.py
718205b7f4aee920f794adec943243d9 custom_components/zwave/fan.py
b19eabe4f8601a6f9d8392cf039ddb92 custom_components/zwave/__init__.py
d94537eee62311f1827ec7e29e0f62a3 custom_components/zwave/light.py
fc5866a04ffd89734edbc9baab68c909 custom_components/zwave/lock.py
a8f1464d8243cd64b56eb8bfe810b7bb custom_components/zwave/node_entity.py
7f2edf3a9754a778b6361f8078e5c017 custom_components/zwave/sensor.py
8afcaf8a5a26cf25b5816865b9a85d97 custom_components/zwave/switch.py
3bb277d42541a7094fb4a832894e6a35 custom_components/zwave/util.py
f7735c1321237aa13f4d85ce7fd9d45c custom_components/zwave/websocket_api.py
98ed321a103458404f88674431bb5d81 custom_components/zwave/workaround.py
Home Assistant release with the issue: 0.103
Last working Home Assistant release (if known): 0.102.3
Operating environment (Hass.io/Docker/Windows/etc.): RPi3B, Raspbian, Python 3.7.2, venv
Integration: zwave/climate
Description of problem: After update HA to 0.103 there are no
climate
entities for Danfoss 014G0013 radiator thermostats. Onlyzwave.*
andsensor.battery*
entities are in HA.Problem-relevant
configuration.yaml
entries and (fill out even if it seems unimportant): Configuration via Integrations:Traceback (if applicable): No related errors in log.