apella12
(Bob Eckhoff)
October 15, 2022, 9:03pm
41
I went ahead and updated the DB based on the attached manual. It also had the same parameters as a photocopied manual on the reference tab for the device, so I felt okay making the changes without owning the device. It was reviewed, approved and merged into the latest Zwave snapshot binding jar .
Rereading this post, I’m a little concerned the manuals do not match all the github zwave-js/node parameters (5 -17 are different), so there may be actually two versions (an older and newer?) and a separate DB entry may be needed. However, without a manual for another device it is really guessing.
What are the entries on the UI page for manufacturerRef
for your device? The DB entry has two 0010:0718,0010:0720
under the PIR 5 in 1
1 Like
higgers
(Steve Higton)
October 22, 2022, 3:38pm
42
I ordered one of these just for fun, it arrived today and I’ve included it in my OH 3.3 install. The thing properties are as follows:
zwave_class_basic BASIC_TYPE_ROUTING_SLAVE
zwave_class_generic GENERIC_TYPE_SENSOR_NOTIFICATION
zwave_frequent false
zwave_lastwakeup 2022-10-22T15:32:04Z
zwave_neighbours
modelId NAS-PD07Z
zwave_listening false
zwave_plus_devicetype NODE_TYPE_ZWAVEPLUS_NODE
zwave_version 2.6
manufacturerId 0258
manufacturerRef 0010:0718,0010:0720
dbReference 1428
zwave_deviceid 1824
zwave_nodeid 89
defaultAssociations 1
vendor Shenzhen Neo Electronics Co., Ltd
zwave_routing true
zwave_plus_roletype ROLE_TYPE_SLAVE_SLEEPING_REPORTING
zwave_beaming true
zwave_secure false
zwave_class_specific SPECIFIC_TYPE_NOTIFICATION_SENSOR
zwave_devicetype 16
zwave_manufacturer 600
I thought I might as well include all of them for completeness.
The node XML file contents are:
<node>
<homeId>0x184e68c</homeId>
<nodeId>89</nodeId>
<version>4</version>
<manufacturer>0x258</manufacturer>
<deviceId>0x720</deviceId>
<deviceType>0x10</deviceType>
<listening>false</listening>
<frequentlyListening>false</frequentlyListening>
<routing>true</routing>
<security>false</security>
<beaming>true</beaming>
<maxBaudRate>40000</maxBaudRate>
<sleepDelay>500</sleepDelay>
<nodeInformationFrame>
<commandClass>COMMAND_CLASS_ZWAVEPLUS_INFO</commandClass>
<commandClass>COMMAND_CLASS_SECURITY</commandClass>
<commandClass>COMMAND_CLASS_SECURITY_2</commandClass>
<commandClass>COMMAND_CLASS_SUPERVISION</commandClass>
<commandClass>COMMAND_CLASS_TRANSPORT_SERVICE</commandClass>
<commandClass>COMMAND_CLASS_VERSION</commandClass>
<commandClass>COMMAND_CLASS_POWERLEVEL</commandClass>
<commandClass>COMMAND_CLASS_ASSOCIATION</commandClass>
<commandClass>COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION</commandClass>
<commandClass>COMMAND_CLASS_ASSOCIATION_GRP_INFO</commandClass>
<commandClass>COMMAND_CLASS_MANUFACTURER_SPECIFIC</commandClass>
<commandClass>COMMAND_CLASS_DEVICE_RESET_LOCALLY</commandClass>
<commandClass>COMMAND_CLASS_INDICATOR</commandClass>
<commandClass>COMMAND_CLASS_BATTERY</commandClass>
<commandClass>COMMAND_CLASS_WAKE_UP</commandClass>
<commandClass>COMMAND_CLASS_ALARM</commandClass>
<commandClass>COMMAND_CLASS_SENSOR_BINARY</commandClass>
<commandClass>COMMAND_CLASS_SENSOR_MULTILEVEL</commandClass>
<commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
<commandClass>COMMAND_CLASS_FIRMWARE_UPDATE_MD</commandClass>
</nodeInformationFrame>
<associationGroups class="concurrent-hash-map">
<entry>
<int>1</int>
<associationGroup>
<index>1</index>
<maxNodes>0</maxNodes>
<name>Lifeline</name>
<profile1>0x0</profile1>
<profile2>0x1</profile2>
<commands>
<commandClass>COMMAND_CLASS_SENSOR_BINARY</commandClass>
<commandClass>COMMAND_CLASS_SENSOR_MULTILEVEL</commandClass>
<commandClass>COMMAND_CLASS_DEVICE_RESET_LOCALLY</commandClass>
<commandClass>COMMAND_CLASS_ALARM</commandClass>
<commandClass>COMMAND_CLASS_BATTERY</commandClass>
<commandClass>COMMAND_CLASS_INDICATOR</commandClass>
</commands>
<associations>
<associationMember>
<node>1</node>
</associationMember>
</associations>
</associationGroup>
</entry>
<entry>
<int>2</int>
<associationGroup>
<index>2</index>
<maxNodes>0</maxNodes>
<name>Basic Set</name>
<profile1>0x71</profile1>
<profile2>0x7</profile2>
<commands/>
<associations/>
</associationGroup>
</entry>
</associationGroups>
<endpoints class="concurrent-hash-map">
<entry>
<int>0</int>
<endPoint>
<deviceClass>
<basicDeviceClass>BASIC_TYPE_ROUTING_SLAVE</basicDeviceClass>
<genericDeviceClass>GENERIC_TYPE_SENSOR_NOTIFICATION</genericDeviceClass>
<specificDeviceClass>SPECIFIC_TYPE_NOTIFICATION_SENSOR</specificDeviceClass>
</deviceClass>
<endpointId>0</endpointId>
<secureCommandClasses/>
<supportedCommandClasses class="concurrent-hash-map">
<entry>
<commandClass>COMMAND_CLASS_NO_OPERATION</commandClass>
<COMMAND__CLASS__NO__OPERATION>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
</COMMAND__CLASS__NO__OPERATION>
</entry>
<entry>
<commandClass>COMMAND_CLASS_BASIC</commandClass>
<COMMAND__CLASS__BASIC>
<version>0</version>
<instances>0</instances>
<control>false</control>
<versionSupported>0</versionSupported>
<isGetSupported>true</isGetSupported>
</COMMAND__CLASS__BASIC>
</entry>
<entry>
<commandClass>COMMAND_CLASS_SENSOR_BINARY</commandClass>
<COMMAND__CLASS__SENSOR__BINARY>
<version>2</version>
<instances>1</instances>
<control>false</control>
<versionSupported>2</versionSupported>
<isGetSupported>true</isGetSupported>
<types>
<binarySensorType>TAMPER</binarySensorType>
<binarySensorType>MOTION</binarySensorType>
</types>
</COMMAND__CLASS__SENSOR__BINARY>
</entry>
<entry>
<commandClass>COMMAND_CLASS_SENSOR_MULTILEVEL</commandClass>
<COMMAND__CLASS__SENSOR__MULTILEVEL>
<version>10</version>
<instances>1</instances>
<control>false</control>
<versionSupported>11</versionSupported>
<sensors>
<entry>
<multilevelSensorType>TEMPERATURE</multilevelSensorType>
<multilevelSensor>
<sensorType>TEMPERATURE</sensorType>
<initialised>true</initialised>
</multilevelSensor>
</entry>
<entry>
<multilevelSensorType>LUMINANCE</multilevelSensorType>
<multilevelSensor>
<sensorType>LUMINANCE</sensorType>
<initialised>true</initialised>
</multilevelSensor>
</entry>
<entry>
<multilevelSensorType>RELATIVE_HUMIDITY</multilevelSensorType>
<multilevelSensor>
<sensorType>RELATIVE_HUMIDITY</sensorType>
<initialised>true</initialised>
</multilevelSensor>
</entry>
</sensors>
<isGetSupported>true</isGetSupported>
</COMMAND__CLASS__SENSOR__MULTILEVEL>
</entry>
<entry>
<commandClass>COMMAND_CLASS_ASSOCIATION_GRP_INFO</commandClass>
<COMMAND__CLASS__ASSOCIATION__GRP__INFO>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>3</versionSupported>
<autoSubscribeGroups>
<int>1</int>
</autoSubscribeGroups>
</COMMAND__CLASS__ASSOCIATION__GRP__INFO>
</entry>
<entry>
<commandClass>COMMAND_CLASS_DEVICE_RESET_LOCALLY</commandClass>
<COMMAND__CLASS__DEVICE__RESET__LOCALLY>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
</COMMAND__CLASS__DEVICE__RESET__LOCALLY>
</entry>
<entry>
<commandClass>COMMAND_CLASS_ZWAVEPLUS_INFO</commandClass>
<COMMAND__CLASS__ZWAVEPLUS__INFO>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
<zwPlusVersion>2</zwPlusVersion>
<zwPlusRole>ROLE_TYPE_SLAVE_SLEEPING_REPORTING</zwPlusRole>
<zwPlusNodeType>NODE_TYPE_ZWAVEPLUS_NODE</zwPlusNodeType>
<isGetSupported>true</isGetSupported>
</COMMAND__CLASS__ZWAVEPLUS__INFO>
</entry>
<entry>
<commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
<COMMAND__CLASS__CONFIGURATION>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>4</versionSupported>
<configParameters>
<entry>
<int>1</int>
<configurationParameter>
<index>1</index>
<size>1</size>
<value>1</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>2</int>
<configurationParameter>
<index>2</index>
<size>1</size>
<value>1</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>3</int>
<configurationParameter>
<index>3</index>
<size>1</size>
<value>1</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>4</int>
<configurationParameter>
<index>4</index>
<size>1</size>
<value>0</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>5</int>
<configurationParameter>
<index>5</index>
<size>1</size>
<value>1</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>6</int>
<configurationParameter>
<index>6</index>
<size>1</size>
<value>0</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>7</int>
<configurationParameter>
<index>7</index>
<size>1</size>
<value>0</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>8</int>
<configurationParameter>
<index>8</index>
<size>1</size>
<value>10</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>9</int>
<configurationParameter>
<index>9</index>
<size>1</size>
<value>20</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>10</int>
<configurationParameter>
<index>10</index>
<size>1</size>
<value>50</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>11</int>
<configurationParameter>
<index>11</index>
<size>1</size>
<value>100</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>12</int>
<configurationParameter>
<index>12</index>
<size>2</size>
<value>30</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>13</int>
<configurationParameter>
<index>13</index>
<size>2</size>
<value>30</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>14</int>
<configurationParameter>
<index>14</index>
<size>2</size>
<value>50</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>15</int>
<configurationParameter>
<index>15</index>
<size>2</size>
<value>180</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
<entry>
<int>99</int>
<configurationParameter>
<index>99</index>
<size>2</size>
<value>450</value>
<readOnly>false</readOnly>
<writeOnly>false</writeOnly>
</configurationParameter>
</entry>
</configParameters>
</COMMAND__CLASS__CONFIGURATION>
</entry>
<entry>
<commandClass>COMMAND_CLASS_ALARM</commandClass>
<COMMAND__CLASS__ALARM>
<version>8</version>
<instances>1</instances>
<control>false</control>
<versionSupported>8</versionSupported>
<alarms>
<entry>
<alarmType>BURGLAR</alarmType>
<alarmState>
<alarmType>BURGLAR</alarmType>
<reportedEvents/>
<outer-class reference="../../../.."/>
</alarmState>
</entry>
</alarms>
<v1Supported>true</v1Supported>
<isGetSupported>true</isGetSupported>
</COMMAND__CLASS__ALARM>
</entry>
<entry>
<commandClass>COMMAND_CLASS_MANUFACTURER_SPECIFIC</commandClass>
<COMMAND__CLASS__MANUFACTURER__SPECIFIC>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>2</versionSupported>
<initSerialNumber>false</initSerialNumber>
<deviceManufacturer>600</deviceManufacturer>
<deviceType>16</deviceType>
<deviceId>1824</deviceId>
</COMMAND__CLASS__MANUFACTURER__SPECIFIC>
</entry>
<entry>
<commandClass>COMMAND_CLASS_POWERLEVEL</commandClass>
<COMMAND__CLASS__POWERLEVEL>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
<powerLevel>0</powerLevel>
<powerTimeout>0</powerTimeout>
</COMMAND__CLASS__POWERLEVEL>
</entry>
<entry>
<commandClass>COMMAND_CLASS_FIRMWARE_UPDATE_MD</commandClass>
<COMMAND__CLASS__FIRMWARE__UPDATE__MD>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>5</versionSupported>
</COMMAND__CLASS__FIRMWARE__UPDATE__MD>
</entry>
<entry>
<commandClass>COMMAND_CLASS_BATTERY</commandClass>
<COMMAND__CLASS__BATTERY>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
<batteryLevel>100</batteryLevel>
<batteryLow>false</batteryLow>
<isGetSupported>true</isGetSupported>
</COMMAND__CLASS__BATTERY>
</entry>
<entry>
<commandClass>COMMAND_CLASS_WAKE_UP</commandClass>
<COMMAND__CLASS__WAKE__UP>
<version>2</version>
<instances>1</instances>
<control>false</control>
<versionSupported>2</versionSupported>
<targetNodeId>1</targetNodeId>
<interval>3600</interval>
<minInterval>20</minInterval>
<maxInterval>86400</maxInterval>
<defaultInterval>43200</defaultInterval>
<intervalStep>1</intervalStep>
<isGetSupported>true</isGetSupported>
</COMMAND__CLASS__WAKE__UP>
</entry>
<entry>
<commandClass>COMMAND_CLASS_ASSOCIATION</commandClass>
<COMMAND__CLASS__ASSOCIATION>
<version>2</version>
<instances>1</instances>
<control>false</control>
<versionSupported>2</versionSupported>
<maxGroups>2</maxGroups>
</COMMAND__CLASS__ASSOCIATION>
</entry>
<entry>
<commandClass>COMMAND_CLASS_VERSION</commandClass>
<COMMAND__CLASS__VERSION>
<version>2</version>
<instances>1</instances>
<control>false</control>
<versionSupported>3</versionSupported>
<libraryType>LIB_SLAVE_ENHANCED</libraryType>
<protocolVersion>7.13</protocolVersion>
<applicationVersion>2.6</applicationVersion>
<hardwareVersion>1</hardwareVersion>
</COMMAND__CLASS__VERSION>
</entry>
<entry>
<commandClass>COMMAND_CLASS_INDICATOR</commandClass>
<COMMAND__CLASS__INDICATOR>
<version>3</version>
<instances>1</instances>
<control>false</control>
<versionSupported>3</versionSupported>
<isGetSupported>true</isGetSupported>
<supportedIndicatorsInitialised>true</supportedIndicatorsInitialised>
<supportedIndicators>
<ZWaveIndicator>
<type>NODE_IDENTIFY</type>
</ZWaveIndicator>
</supportedIndicators>
</COMMAND__CLASS__INDICATOR>
</entry>
<entry>
<commandClass>COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION</commandClass>
<COMMAND__CLASS__MULTI__CHANNEL__ASSOCIATION>
<version>3</version>
<instances>1</instances>
<control>false</control>
<versionSupported>3</versionSupported>
<maxGroups>2</maxGroups>
</COMMAND__CLASS__MULTI__CHANNEL__ASSOCIATION>
</entry>
<entry>
<commandClass>COMMAND_CLASS_SECURITY</commandClass>
<COMMAND__CLASS__SECURITY>
<version>1</version>
<instances>1</instances>
<control>false</control>
<versionSupported>1</versionSupported>
</COMMAND__CLASS__SECURITY>
</entry>
</supportedCommandClasses>
</endPoint>
</entry>
</endpoints>
<nodeNeighbors/>
<lastReceived>2022-10-22 15:31:54.637 UTC</lastReceived>
</node>
I hope that helps.
Edit: I’ve just noticed that there’s no battery level channel, there are battery level channels on all the older PD03Z sensors I have.
apella12
(Bob Eckhoff)
October 22, 2022, 7:46pm
43
It does help, but first I have one question from my lack of knowledge, I’m a little surprised how your XML was created with the version of the device in the DB with OH 3.3. The version I edited had parameters 16, 17 and 18, but your XML doesn’t (correctly if what I believe is true). Does your UI page show those parameters?
On the helping side, the XML confirms my suspicions that the parameters in the manual attached above do not align with the device and need further editing. Leveraging the information on the zwave-js site there is a 5 in 1 device with numbers 0020:0718 & 0020:0720 that match the manual. The device you have and others in this thread possess have numbers 0010:0718 & 0010:0720. I was trying to get this split into two devices the Zwave DB and get a device owner to test an XML but had made no progress on either front .
At this point I’m just leaning towards a re-edit of the 0010:0718 & 0010:0720 device in the DB along these lines
Five in one -config1.pdf (228.5 KB)
I also manually created an XML as to what these changes would look like. If you are familiar with the process to update a .jar this could be tested. If not, that is okay.
naspd07z_0_0.xml (15.5 KB)
Lastly I think the battery channel is missing because the routing flag is set to true and that is only the case with USB inclusion. That can be fixed
chris
(Chris Jackson)
October 22, 2022, 8:01pm
44
The battery channel is missing because the battery command class is not defined in the database. The database will automatically create the battery channel if the command class is defined.
The battery command class is in the XML, but not the database, so I guess at some stage the device was included using non-battery power. The routing flag is indicative of this, but the routing flag is not in itself related in any way to the battery channel.
1 Like
higgers
(Steve Higton)
October 23, 2022, 5:34am
45
I’ve never included that sensor using USB power. I took it out of the box, took the back off, pulled the little tabs out that insulated the two CR123 batteries from the battery contacts and included it in my network. I did think it was odd that it listed itself as a routing device.
chris
(Chris Jackson)
October 23, 2022, 6:27am
46
Sorry - I wasn’t clear. The person who included this into the database had likely included using USB power because the BTTERY command class was not added to the database. Or maybe there’s another explanation, but this is likely to be the cause.
higgers
(Steve Higton)
October 23, 2022, 8:23am
47
chris:
Sorry - I wasn’t clear. The person who included this into the database had likely included using USB power
Reading comprehension fail on my part
higgers
(Steve Higton)
October 23, 2022, 8:24am
48
Yes, I’m quite happy to do that, no problem.
apella12
(Bob Eckhoff)
October 23, 2022, 2:18pm
49
Great. Based on your XML everything should work fine, but what I would like to confirm is that parameters 12,13,14,15 and 99 can be changed without the “pending”. Basically the “pending” means device did not accept the change either because it is out of range or not a valid parameter. Also I updated the test XML to include the battery channel.
naspd07z_0_0.xml (15.7 KB)
Thanks
higgers
(Steve Higton)
October 23, 2022, 7:55pm
50
Thanks for updating the database, that’s very kind of you.
I’m a bit confused about what you want me to do with the XML file you attached above. I thought you wanted me to install a new jar of the zwave binding once the DB changes have been incorporated into the latest build. I’ve done this in the past in various versions of OH. Is there something I can do with the XML file?
apella12
(Bob Eckhoff)
October 23, 2022, 8:50pm
51
Never mind. I haven’t updated the db yet. I usually test what I plan to update by using the jar -uf or use maven to create a custom jar. In this case, I’ll just update the db next week. It seems we are are on a weekly update cycle, so if all goes well, should be a new snapshot jar by next weekend.
higgers
(Steve Higton)
October 23, 2022, 10:13pm
52
I don’t have a dev environment set up so I can’t compile from source. What do you mean by jar -uf?
apella12
(Bob Eckhoff)
October 23, 2022, 11:36pm
53
[The general idea is explained with this 2.5 post](Modify a zwave binding jar to add/change a zwave device while waiting for a build - Tutorials & Examples - openHAB Community )
In this case it would look something like
jar -uf org.openhab.binding.zwave-3.4.0-SNAPSHOT.jar ./OH-INF/thing/shenzhen/naspd07z_0_0.xml
But don’t feel obligated. I think we are okay as is.
apella12
(Bob Eckhoff)
November 13, 2022, 6:01pm
54
@higgers Edited the DB basically to match your XML (and the zwave-js version) and went on vacation and forgot to mention here. Feel free to test. Changes were in 3.4M4 and zwave binding #189 and later.