New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for SECURITY_COMMANDS_SUPPORTED_GET on each endpoint #1639
Comments
The device only advertises ZWave+, Security S0 (Supported), Security S2 (Not Supported) and Supervision CC on Endpoint 1 but:
After reading the specs - It seems we should also do a SECURITY_CAPABILITIES_GET on each endpoint if S0/S2 is there. OZW doesn't do that currently. (and I have to read the specs a bit more to understand this). I would suggest trying to include this device non-secure and see if it works. |
@Fishwaldo thanks for replying so quickly! removed and readded (with security) the device with an older device db where the device doesn't exist yet. Like this I get seperate power/energy values for every endpoint and no errors when receiving updates about changed values. but the config parameters are missing. So the Cannot find endpoint map to instance for Command Class COMMAND_CLASS_METER endpoint 1 error probably has something to do with Then I reinstalled openzwave from master (latest version, commmit 0ca1320) which also has my device in the device db. When readding the device with security I still have the same problems. When adding it without security it seams to work so far. I didn't have time yet to doublecheck everything, but so far I didn't encounter any problems. Although I'd definitely prefer to turn on security. If I can help you with enabling security for this device, let me know. |
This requires some updates to the code. I need to see if I can get hold of this device to test. |
I discovered an other problem with this smart meter and the external IR realy. I'm not sure if this is related to the issue posted above or if I should open another issue. In my application I have a value to turn on/off the relay (command class 37, endpoint 2, index 0). During inclusion the logs tell me that endpoint 5 is a binary power switch and COMMAND_CLASS_SWITCH_BINARY is listed as a supported command class by this endpoint. I wonder why this value then ends up at endpoint 2 instead of 5. But turning the relay on and off with this works just fine. The problem is that whenever i turn the relay on/off either manually with the hardware switch or by zwave I get a notification that this value changed. But it always tells me that it is now off.
I always get exactly the same messages with the same received bytes, no matter if the relay is on or off. I also asked the qubino support about this. First they told me that this is probably caused by my software respectively openzwave but now they will check if it's a bug of the meter. For me dealing with the support it would be helpful to know what you think about this. |
"After reading the specs - It seems we should also do a SECURITY_CAPABILITIES_GET on each endpoint if S0/S2 is there" I don't recall from the specs that you could do that. It would mean to pack a security packet into a multi channel packet and that would be in a reverse order than the one allowed. |
read 3.29.3.1 - Multichannel handling. it would be SECURITY_CAPABILITIES_GET -> MultiChannel Encap Message -> S0/S2 encrypted. Not the other way around. |
Regardless of the Endpoint - If its always sending a "off" command even if you are turning it on, thats a bug in the device. Unless that endpoint is representing some other state of the device (but it doesn't seem like it). |
Sorry, I mean SECURITY_COMMANDS_SUPPORTED_GET |
I tried sending that to an individual channel (for a multi-channel that supports security) and it did not reply. My guess is that you should ask for multi-channel capabilities in an encrypted packet and you should get all the supported classes there, in the report. I don't think that sending SECURITY_COMMANDS_SUPPORTED_GET to individual channels is allowed. |
When reading the specs it says this is the way to do that, so either the device is buggy, or you got it wrong:
We already do that:
and it replies:
so its only exposing the Security CC, none of the other CC's that is needed. But this may not be the only issue. I have to check the code path, to make sure when we try to comunicate with a Security CC on a endpoint other than the root, we properly encapsulate it in the MultiChannel and then encrypt. So determining what CC's we need to encrypt on a endpoint might only be half the problem. |
Maybe I've got it wrong, I'll try again tomorrow and I'll let you know if it works. I'm not using open zwave, but my own code. |
I've got it wrong. The multi-channel device I have that is supporting S0 security, does not have the security class as supported for channels. So I must not send SECURITY_COMMANDS_SUPPORTED_GET to them. I would need a device that has 0x98 as a supported class for channels in order to test it... |
@Fishwaldo could you already organize this smart meter for testing? I'm still in contact with the qubino support about the wrong relay state sent by the meter. If you wan't I could ask them if they could send you a device for testing. |
I just got another device (Aeotec Doorbell 6) that supports the Security CC on endpoints. So I'll do some work on this soon. |
@Fishwaldo, I'm encountering the same behavior as described by @hoschid. I'm developing a multi-channel (3-endpoints) Z-Wave device. I am capable of reading out the command classes supported by each of the three endpoints in S0 and S2 security mode by using Silicon Labs' PC Controller software. If you like me to test things, let me know. It would be great to have this functionality implemented in OZW! |
… Not working for me, but I may have a buggy device
@ruudbeukema @hoschid (if needed, you can use your app to include it securely, then copy your existing options.xml file to the config directory for the Dev Branch you checked out, and run MinOZW for convenience... ) I suspect I have a buggy device... (it has a lot of other issues) and not responding:
|
Hi @Fishwaldo, Please find the MinOZW-log at the bottom of this comment. I've issued several unsolicited commands on my Z-Wave slave device from the different endpoints. These seem to get processed correctly now. I do notice that my Z-Wave device doesn't seem to send a SecurityCommandsSupportedReport when a SecurityCommandsSupportedGet is issued on an endpoint. I will look into that! Update:
|
Perfect. So this confirms my device is bugged out. And confirms my initial code is working. Question - Are the endpoints on this device now working correctly? (eg, try manually refreshing a Meter Reading on one of the endpoints). I can't test that CC's Secured on a endpoint are working with my device right now. |
@Fishwaldo I will get back to you on this later, due to other priorities... Maybe @hoschid can verify that it works in the meantime... |
@hoschid can you share your ozwcache.xml file? I'd like to see how your instances and endpoints mapped out for the ZMNHXD1. |
I have no access to my device until middle of February. Then I will test it with the latest version as soon as possible. |
I installed openzwave from the latest commit e991af5 of the dev branch. Then I removed the smart meter, stopped ozw, deleted the ozwcache xml file, started ozw and re-included the device with security enabled. It looks like the device gets added without errors but it lists only the values of the "main" endpoint. When power is consumed, the power value of the main endpoint updates and I don't get the errors from my original post anymore. Here are the logs from adding the device:
and this is how the device looks in the ozwcache xml file: <Node id="20" name="" location="" basic="4" generic="49" specific="3" roletype="5" devicetype="5888" nodetype="0" type="Whole Home Meter Simple" listening="true" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" secured="true" configrevision="0" query_stage="Complete">
<Manufacturer id="159" name="Qubino">
<Product type="7" id="54" name="ZMNHXDx 3-phase Smart Meter">
<MetaData />
</Product>
</Manufacturer>
<CommandClasses>
<CommandClass id="37" name="COMMAND_CLASS_SWITCH_BINARY" version="1" request_flags="1" issecured="true" innif="true">
<Instance index="1" />
<Value type="bool" genre="user" instance="1" index="0" label="Switch" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="True">
<Help>Turn On/Off Device</Help>
</Value>
</CommandClass>
<CommandClass id="50" name="COMMAND_CLASS_METER" version="4" request_flags="3" issecured="true" innif="true">
<Instance index="1" />
<Value type="decimal" genre="user" instance="1" index="0" label="Energy" units="kWh" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="5.3">
<Help></Help>
</Value>
<Value type="decimal" genre="user" instance="1" index="4" label="Energy" units="kVAh" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="5.6">
<Help></Help>
</Value>
<Value type="decimal" genre="user" instance="1" index="8" label="Power" units="W" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="3.9">
<Help></Help>
</Value>
<Value type="decimal" genre="user" instance="1" index="24" label="Power Factor" units="Power Factor" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0.0850">
<Help></Help>
</Value>
<Value type="decimal" genre="user" instance="1" index="28" label="Unknown" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="-44.3">
<Help></Help>
</Value>
<Value type="bool" genre="user" instance="1" index="32" label="Exporting" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False">
<Help></Help>
</Value>
<Value type="button" genre="system" instance="1" index="33" label="Reset" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0">
<Help></Help>
</Value>
</CommandClass>
<CommandClass id="86" name="COMMAND_CLASS_CRC_16_ENCAP" version="1" request_flags="5" innif="true">
<Instance index="1" />
</CommandClass>
<CommandClass id="90" name="COMMAND_CLASS_DEVICE_RESET_LOCALLY" version="1" request_flags="5" issecured="true" innif="true">
<Instance index="1" />
</CommandClass>
<CommandClass id="94" name="COMMAND_CLASS_ZWAVE_PLUS_INFO" version="1" request_flags="7" innif="true">
<Instance index="1" endpoint="1" />
<Instance index="2" endpoint="2" />
<Instance index="3" endpoint="3" />
<Instance index="4" endpoint="4" />
<Instance index="5" endpoint="5" />
<Instance index="6" endpoint="6" />
<Value type="byte" genre="system" instance="1" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="2" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="3" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="4" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="5" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="6" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="short" genre="system" instance="1" index="1" label="InstallerIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="5888">
<Help>Icon File to use for the Installer Application</Help>
</Value>
<Value type="short" genre="system" instance="2" index="1" label="InstallerIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="5888">
<Help>Icon File to use for the Installer Application</Help>
</Value>
<Value type="short" genre="system" instance="3" index="1" label="InstallerIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="5888">
<Help>Icon File to use for the Installer Application</Help>
</Value>
<Value type="short" genre="system" instance="4" index="1" label="InstallerIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="5888">
<Help>Icon File to use for the Installer Application</Help>
</Value>
<Value type="short" genre="system" instance="5" index="1" label="InstallerIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="7424">
<Help>Icon File to use for the Installer Application</Help>
</Value>
<Value type="short" genre="system" instance="6" index="1" label="InstallerIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="7424">
<Help>Icon File to use for the Installer Application</Help>
</Value>
<Value type="short" genre="system" instance="1" index="2" label="UserIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="5888">
<Help>Icon File to use for the User Application</Help>
</Value>
<Value type="short" genre="system" instance="2" index="2" label="UserIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="5888">
<Help>Icon File to use for the User Application</Help>
</Value>
<Value type="short" genre="system" instance="3" index="2" label="UserIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="5888">
<Help>Icon File to use for the User Application</Help>
</Value>
<Value type="short" genre="system" instance="4" index="2" label="UserIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="5888">
<Help>Icon File to use for the User Application</Help>
</Value>
<Value type="short" genre="system" instance="5" index="2" label="UserIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="7424">
<Help>Icon File to use for the User Application</Help>
</Value>
<Value type="short" genre="system" instance="6" index="2" label="UserIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="7424">
<Help>Icon File to use for the User Application</Help>
</Value>
</CommandClass>
<CommandClass id="96" name="COMMAND_CLASS_MULTI_INSTANCE/CHANNEL" version="4" request_flags="1" issecured="true" innif="true" mapping="endpoints">
<Instance index="1" />
</CommandClass>
<CommandClass id="112" name="COMMAND_CLASS_CONFIGURATION" version="1" request_flags="5" issecured="true" innif="true">
<Instance index="1" />
<Value type="list" genre="config" instance="1" index="7" label="Input switch function selection" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="5" vindex="0" size="1">
<Help>Key no.2 is not represented by any physical device except of devices on association list. This functionality prevents of lack of reaction on pressing key no.2 through polling devices from association list one by one and checking their actual statuses.</Help>
<Item label="disabled" value="0" />
<Item label="IR external relay control - mono stable push button" value="2" />
<Item label="IR external relay control - bi-stable switch" value="3" />
<Item label="External relay control - mono stable push button" value="4" />
<Item label="External relay control - bi-stable switch" value="5" />
</Value>
<Value type="byte" genre="config" instance="1" index="40" label="Reporting on power change" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="100" value="50">
<Help>This parameter is valid for Active Power Total, Active Power Phase1, Active Power Phase2 and Active Power Phase3. Set value means percentage from 0-100 = 0% - 100%</Help>
</Value>
<Value type="short" genre="config" instance="1" index="42" label="Reporting on time interval" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="65536" value="600">
<Help>This parameter is currently valid only for Active Energy Total Import/Export (kWh), Reactive Energy Total (kvarh), Total Energy (kVAh)</Help>
</Value>
<Value type="short" genre="config" instance="1" index="43" label="Other Values - Reporting on time interval" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="65536" value="600">
<Help>This parameter is valid only for Voltage (V of ph1, ph2, ph3), Current (A of ph1, ph2, ph3), Total Power Factor, Total Reactive Power (var)</Help>
</Value>
<Value type="list" genre="config" instance="1" index="100" label="Enable / Disable External IR relay (BICOM)" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="2" vindex="0" size="1">
<Help>Reset The Reporting Group Configuration (101 to 103) to default</Help>
<Item label="External IR relay disabled" value="0" />
<Item label="External IR relay enabled and connected to all 3 Phases" value="1" />
<Item label="External IR relay enabled and connected to a Phase 1" value="2" />
</Value>
<Value type="list" genre="config" instance="1" index="101" label="Enable / Disable External relay (IKA)" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="1" vindex="0" size="1">
<Help>Which reports need to send automatically in timing intervals for group 1. Bitmask: 10000000 - 128 - Luminance 01000000 - 64 - Humidity 00100000 - 32 - Temperature 00010000 - 16 - Ultraviolet 00000001 - 1 - Battery 10100000 - 160 - Luminance and Temperature (32+128) 11110001 - 241 - All (1+16+32+64+128)</Help>
<Item label="External relay disabled" value="0" />
<Item label="External relay enabled and connected to Phase 2" value="1" />
</Value>
<Value type="short" genre="config" instance="1" index="106" label="External IR relay (BICOM) power threshold settings - maximum power of all phases together" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="60000" value="0">
<Help>This parameter defines a threshold when External IR relay is being turned off. (If Parameter no. 100 is set to the value 1 or 2)</Help>
</Value>
<Value type="short" genre="config" instance="1" index="107" label="External relay (IKA) power threshold settings - maximum power on phase L2" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="20000" value="0">
<Help>This parameter defines a threshold when External relay is being turned off (if the parameter no. 100 is set to the value 1 or 2).</Help>
</Value>
<Value type="short" genre="config" instance="1" index="112" label="Power threshold - Delay before power on" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="32535" value="0">
<Help>External IR relay/ External relay is turned off due to detected overload (as set by parameter 106 and 107) and remains off for a time, defined in this parameter. After that time, the output turns on to check, if the overload is still present.</Help>
</Value>
</CommandClass>
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="2" request_flags="1" issecured="true" innif="true">
<Instance index="1" />
<Value type="int" genre="system" instance="1" index="0" label="Loaded Config Revision" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0">
<Help>Revision of the Config file currently loaded</Help>
</Value>
<Value type="int" genre="system" instance="1" index="1" label="Config File Revision" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0">
<Help>Revision of the Config file on the File System</Help>
</Value>
<Value type="int" genre="system" instance="1" index="2" label="Latest Available Config File Revision" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0">
<Help>Latest Revision of the Config file available for download</Help>
</Value>
<Value type="string" genre="system" instance="1" index="3" label="Device ID" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="">
<Help>Manufacturer Specific Device ID/Model</Help>
</Value>
<Value type="string" genre="system" instance="1" index="4" label="Serial Number" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="18140069">
<Help>Device Serial Number</Help>
</Value>
</CommandClass>
<CommandClass id="115" name="COMMAND_CLASS_POWERLEVEL" version="1" request_flags="5" issecured="true" innif="true">
<Instance index="1" />
<Value type="list" genre="system" instance="1" index="0" label="Powerlevel" units="dB" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Help>Output RF PowerLevel</Help>
<Item label="Normal" value="0" />
<Item label="-1dB" value="1" />
<Item label="-2dB" value="2" />
<Item label="-3dB" value="3" />
<Item label="-4dB" value="4" />
<Item label="-5dB" value="5" />
<Item label="-6dB" value="6" />
<Item label="-7dB" value="7" />
<Item label="-8dB" value="8" />
<Item label="-9dB" value="9" />
</Value>
<Value type="byte" genre="system" instance="1" index="1" label="Timeout" units="seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0">
<Help>Timeout till the PowerLevel is reset to Normal</Help>
</Value>
<Value type="button" genre="system" instance="1" index="2" label="Set Powerlevel" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0">
<Help>Apply the Output PowerLevel and Timeout Values</Help>
</Value>
<Value type="byte" genre="system" instance="1" index="3" label="Test Node" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0">
<Help>Node to Perform a test against</Help>
</Value>
<Value type="list" genre="system" instance="1" index="4" label="Test Powerlevel" units="dB" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Help>PowerLevel to use for the Test</Help>
<Item label="Normal" value="0" />
<Item label="-1dB" value="1" />
<Item label="-2dB" value="2" />
<Item label="-3dB" value="3" />
<Item label="-4dB" value="4" />
<Item label="-5dB" value="5" />
<Item label="-6dB" value="6" />
<Item label="-7dB" value="7" />
<Item label="-8dB" value="8" />
<Item label="-9dB" value="9" />
</Value>
<Value type="short" genre="system" instance="1" index="5" label="Frame Count" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0">
<Help>How Many Messages to send to the Note for the Test</Help>
</Value>
<Value type="button" genre="system" instance="1" index="6" label="Test" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0">
<Help>Perform a PowerLevel Test against the a Node</Help>
</Value>
<Value type="button" genre="system" instance="1" index="7" label="Report" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0">
<Help>Get the results of the latest PowerLevel Test against a Node</Help>
</Value>
<Value type="list" genre="system" instance="1" index="8" label="Test Status" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Help>The Current Status of the last PowerNode Test Executed</Help>
<Item label="Failed" value="0" />
<Item label="Success" value="1" />
<Item label="In Progress" value="2" />
</Value>
<Value type="short" genre="system" instance="1" index="9" label="Acked Frames" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0">
<Help>Number of Messages successfully Acked by the Target Node</Help>
</Value>
</CommandClass>
<CommandClass id="133" name="COMMAND_CLASS_ASSOCIATION" version="1" request_flags="5" issecured="true" innif="true">
<Instance index="1" />
<Associations num_groups="1">
<Group index="1" max_associations="1" label="Lifeline" auto="true" multiInstance="true">
<Node id="1" />
</Group>
</Associations>
</CommandClass>
<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="5" issecured="true" 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="3">
<Help>Z-Wave Library Version</Help>
</Value>
<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="4.61">
<Help>Z-Wave Protocol Version</Help>
</Value>
<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">
<Help>Application Version</Help>
</Value>
</CommandClass>
<CommandClass id="135" name="COMMAND_CLASS_INDICATOR" version="1" request_flags="5" issecured="true">
<Instance index="1" />
<Value type="byte" genre="user" instance="1" index="0" label="Indicator" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0">
<Help>Current Indicator State</Help>
</Value>
</CommandClass>
<CommandClass id="142" name="COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION" version="1" request_flags="5" issecured="true" innif="true" ForceInstances="false">
<Instance index="1" />
<Associations num_groups="1">
<Group index="1" max_associations="1" label="Lifeline" auto="true" multiInstance="true">
<Node id="1" />
</Group>
</Associations>
</CommandClass>
<CommandClass id="152" name="COMMAND_CLASS_SECURITY" version="1" request_flags="5" innif="true">
<Instance index="1" endpoint="1" />
<Instance index="2" endpoint="2" />
<Instance index="3" endpoint="3" />
<Instance index="4" endpoint="4" />
<Instance index="5" endpoint="5" />
<Instance index="6" endpoint="6" />
<Value type="bool" genre="system" instance="1" index="0" label="Secured" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False">
<Help>Is Communication with Device Encrypted</Help>
</Value>
<Value type="bool" genre="system" instance="2" index="0" label="Secured" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False">
<Help>Is Communication with Device Encrypted</Help>
</Value>
<Value type="bool" genre="system" instance="3" index="0" label="Secured" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False">
<Help>Is Communication with Device Encrypted</Help>
</Value>
<Value type="bool" genre="system" instance="4" index="0" label="Secured" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False">
<Help>Is Communication with Device Encrypted</Help>
</Value>
<Value type="bool" genre="system" instance="5" index="0" label="Secured" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False">
<Help>Is Communication with Device Encrypted</Help>
</Value>
<Value type="bool" genre="system" instance="6" index="0" label="Secured" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False">
<Help>Is Communication with Device Encrypted</Help>
</Value>
</CommandClass>
</CommandClasses>
</Node> |
…) and Fix a offbyone error when reading CC's that are encrypted (related to #1687)
I've just pushed a update to the Dev branch that should address this. Testing welcome! (in particular, testing the different instances/endpoints are mapped correctly). Obviously you need to include the device Securely for this code. |
I just did the test with the current dev source and it's still failing to report all values. Only the first endpoint is reported. Here is the log from ozwcp related to the node: https://pastebin.com/sfuhivHc Also you were right: it's exactly the same symptoms as with fgbs-222 (if I include the node without secure mode, the values are there but it requires to enable polling to have updates). |
@f-bor could you try this please: restart after removing any ozwcache_*.xml and reinclude the device from scratch. Thanks |
I feel ashamed, I made a stupid mistake and tested with the master branch yesterday. With the dev branch and without any modification, everything is working fine. All the values are there and polling is not needed anymore. Here is the log if you want to read it: https://pastebin.com/zURAxHe7 The reactive power has no unit (endpoint 1, index 28) but I'm not sure var (volt-ampere-reactive) is quite common. I'll test with an fgbs-222 later today. thank you very much |
It's also working very well with an fgbs-222 now. I tried to backport your 2 commits into the master branch. It's working well for the values enumeration but I still have to poll to get value changes. Could you please tell me which commit(s) I should try to backport to have automatic value changes working as well ? |
I did some more tests this morning and in the end, the polling is still required. Only one value on the first endpoint notifies its changes (the whole power consumption). |
Hi! I am very new to OZW but not new to Z-Wave. I am trying to help and understand at the same time. I think one possible cause of seeing only data reported on the first endpoint might be due to having "single channel" association instead of multichannel. If that does not ring a bell immediately, don't worry, I'll try to find out if what I say can be easily detected and changed... Will take some time... |
few more things:
Here are the files for fgbs-222:
And for ZMNHXD1:
|
I didnt saved the cache correctly for the fgbs222. Here is another run: |
Regarding the FGBS-222 Smart Implant, this is a long shot, but Fibaro recently released firmware update 5.1. You'll need a HC2 or HCL, or contact your supplier or support to update, since they do not provide FW updates in binary form. Please do not shoot the messenger. I am not saying this will fix it, but here are the release notes: Improved operation of external temperature sensors DHT22 and DS18B20 The first one might be relevant, though they do not explicitly say it has to do with detection of the temp sensors... And the "protection class" is about limiting access via RF or button, so that one seems irrelevant. I don't own a Smart Implant yet, so unfortunately I cannot test it. That said... When I look at your Log, I do see instances with temperature reports... I am not familiar with this part in the OZW code but this sounds strange to me: I search Node071.*SensorMultiLevel report and I get 3 relevant sections:
Based on the first line, that seems a MultiChannel report to me from instance 9 == endpoint 8 - this is probably one of the extra sensors, you might be able to tell if 18.8 makes sense... But when you look at the second line is says instance 1 == endpoint 0 == root of the device, this does not seem to match IMHO. But as I said, I am not familiar with the logic behind this and I don't want to jump to conclusions.
Notice it says temp changes from 18.8 (prev report) to 23.8 (this one) in about 20 seconds. Next:
Again, the first line says "endpoint 8" but the second one says "instance 1". Now the temperature decreases from 23.8 to 18.2 in about 6 seconds which seems implausible. To me it looks like reports from different sensors get mixed up. If I look at the cache file: And no mention of other endpoints. I would not want to jump to conclusions, it might be the device, it might be OZW, it might be the secure mode or even interpretation of the specifications... I'll try to discuss this with @Fishwaldo Because of (my) limited resources I am not dealing with the ZMNHXD1, I probably never wil own one of those, but I might buy a Smart Implant for testing and to use as a multi-temperature probe on my heating system. I'm sorry about that. |
Thanks for your efforts and inputs, I appreciate. Unfortunatly, I don't have a home center box to update the firmware. Also, it's working quite well with non-secure mode. The only real issue is the polling necessity. I also don't have real knowledge in zwave or openzwave. I gave a try to the command class spec but it's quite hard for a beginner. So I can't help on your analysis, even if the mixed up seems to make sense. I did a run in non-secure mode in case it would provide some interresting information: |
I haven’t got a chance to look at the logs, but you can try setting ForceInstances to true. Grep through the config files to find a example. (grep -R “ForceInstances” config/*) |
Sure. With the ZMNHXD1 or the fgbs222 ? (or both) |
It was already set at the end of ZMNHXD1 config file. I tried to force the value in the ozwcache file (it was set to false) and I tried to add it to fgbs222 and reinclude it => no change. |
Thank you for trying. I am going to toy a little with a Z-Uno, to better understand multichannel decoding in OZW and possible effect of encryption. With this device, I am able to simulate a device with arbitrary number of endpoints. I am sorry I am not able to help with your issue, yet, due to lack of understanding all the lovely details of multichannel encap... |
I'm closing this, as the current issue is different... can you reopen one if you still having issues? |
Hi everybody!
I have a Qubino 3-phase smart meter ZMNHXD1 together with the Qubino IR relay BICOM432-40-WM1. I try to use this device with openzwave v1.5 and the npm module openzwave-shared v1.4.6 for node.js.
My openzwave device database has the files for the ZMNHXD1 from this commit: 9441bdc.
I did the following steps so far:
Now I have the following problems:
but I'm missing some energy/power related values as in endpoint 1. And for endpoint 5 there should be a value to get the current state of the IR relay and toggle it.
Error, Node003, Cannot find endpoint map to instance for Command Class COMMAND_CLASS_METER endpoint 1 (the same error also occures for endpoint 2)
I would really appreciate any help with this issue!
Here are the logs from adding the device:
And from the received errors as power consumption changes:
The text was updated successfully, but these errors were encountered: