[SOLVED] Neo pd03z using incorrect XML for config

Tags: #<Tag:0x00007f616e109f10>

I have the Neo PD03Z manufacture ref: 0003:108D

The issue I am seeing is that the device is using the DB XML motionsensor_0_0.xml instead of the correct pd03z_0_0.xml

I am using the 2.5.0M1 snapshot on openhabian.

<node>
  <homeId>0xcd606d63</homeId>
  <nodeId>17</nodeId>
  <version>4</version>
  <manufacturer>0x258</manufacturer>
  <deviceId>0x108d</deviceId>
  <deviceType>0x3</deviceType>
  <listening>false</listening>
  <frequentlyListening>false</frequentlyListening>
  <routing>true</routing>
  <security>false</security>
  <beaming>true</beaming>
  <maxBaudRate>40000</maxBaudRate>
  <sleepDelay>1000</sleepDelay>
  <nodeInformationFrame>
    <commandClass>COMMAND_CLASS_ZWAVEPLUS_INFO</commandClass>
    <commandClass>COMMAND_CLASS_VERSION</commandClass>
    <commandClass>COMMAND_CLASS_MANUFACTURER_SPECIFIC</commandClass>
    <commandClass>COMMAND_CLASS_DEVICE_RESET_LOCALLY</commandClass>
    <commandClass>COMMAND_CLASS_POWERLEVEL</commandClass>
    <commandClass>COMMAND_CLASS_BATTERY</commandClass>
    <commandClass>COMMAND_CLASS_SENSOR_MULTILEVEL</commandClass>
    <commandClass>COMMAND_CLASS_ALARM</commandClass>
    <commandClass>COMMAND_CLASS_SENSOR_BINARY</commandClass>
    <commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
    <commandClass>COMMAND_CLASS_ASSOCIATION</commandClass>
    <commandClass>COMMAND_CLASS_ASSOCIATION_GRP_INFO</commandClass>
    <commandClass>COMMAND_CLASS_WAKE_UP</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_DEVICE_RESET_LOCALLY</commandClass>
          <commandClass>COMMAND_CLASS_SENSOR_MULTILEVEL</commandClass>
          <commandClass>COMMAND_CLASS_ALARM</commandClass>
          <commandClass>COMMAND_CLASS_SENSOR_BINARY</commandClass>
          <commandClass>COMMAND_CLASS_BATTERY</commandClass>
        </commands>
        <associations>
          <associationMember>
            <node>1</node>
          </associationMember>
        </associations>
      </associationGroup>
    </entry>
    <entry>
      <int>2</int>
      <associationGroup>
        <index>2</index>
        <maxNodes>0</maxNodes>
        <name>Sensor Basic Set</name>
        <profile1>0x71</profile1>
        <profile2>0x7</profile2>
        <commands>
          <commandClass>COMMAND_CLASS_BASIC</commandClass>
        </commands>
        <associations/>
      </associationGroup>
    </entry>
    <entry>
      <int>3</int>
      <associationGroup>
        <index>3</index>
        <maxNodes>0</maxNodes>
        <name>Sensor notifi rep</name>
        <profile1>0x71</profile1>
        <profile2>0x7</profile2>
        <commands>
          <commandClass>COMMAND_CLASS_ALARM</commandClass>
        </commands>
        <associations/>
      </associationGroup>
    </entry>
    <entry>
      <int>4</int>
      <associationGroup>
        <index>4</index>
        <maxNodes>0</maxNodes>
        <name>Sensor notifi rep</name>
        <profile1>0x71</profile1>
        <profile2>0x7</profile2>
        <commands>
          <commandClass>COMMAND_CLASS_SENSOR_BINARY</commandClass>
        </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</genericDeviceCla                                                                                                                                                             ss>
          <specificDeviceClass>SPECIFIC_TYPE_NOTIFICATION_SENSOR</specificDevice                                                                                                                                                             Class>
        </deviceClass>
        <endpointId>0</endpointId>
        <secureCommandClasses/>
        <supportedCommandClasses class="concurrent-hash-map">
          <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_ZWAVEPLUS_INFO</commandClass>
            <COMMAND__CLASS__ZWAVEPLUS__INFO>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>2</versionSupported>
              <zwPlusVersion>1</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_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_VERSION</commandClass>
            <COMMAND__CLASS__VERSION>
              <version>2</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>2</versionSupported>
              <libraryType>LIB_SLAVE_ROUTING</libraryType>
              <protocolVersion>4.38</protocolVersion>
              <applicationVersion>3.80</applicationVersion>
              <hardwareVersion>66</hardwareVersion>
            </COMMAND__CLASS__VERSION>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_ASSOCIATION_GRP_INFO</commandClass>
            <COMMAND__CLASS__ASSOCIATION__GRP__INFO>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>1</versionSupported>
              <autoSubscribeGroups>
                <int>1</int>
                <int>3</int>
                <int>4</int>
              </autoSubscribeGroups>
            </COMMAND__CLASS__ASSOCIATION__GRP__INFO>
          </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>3</deviceType>
              <deviceId>4237</deviceId>
            </COMMAND__CLASS__MANUFACTURER__SPECIFIC>
          </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_SENSOR_MULTILEVEL</commandClass>
            <COMMAND__CLASS__SENSOR__MULTILEVEL>
              <version>7</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>7</versionSupported>
              <sensors>
                <entry>
                  <multilevelSensorType>LUMINANCE</multilevelSensorType>
                  <multilevelSensor>
                    <sensorType>LUMINANCE</sensorType>
                    <initialised>true</initialised>
                  </multilevelSensor>
                </entry>
                <entry>
                  <multilevelSensorType>TEMPERATURE</multilevelSensorType>
                  <multilevelSensor>
                    <sensorType>TEMPERATURE</sensorType>
                    <initialised>true</initialised>
                  </multilevelSensor>
                </entry>
                <entry>
                  <multilevelSensorType>VELOCITY</multilevelSensorType>
                  <multilevelSensor>
                    <sensorType>VELOCITY</sensorType>
                    <initialised>false</initialised>
                  </multilevelSensor>
                </entry>
              </sensors>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__SENSOR__MULTILEVEL>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
            <COMMAND__CLASS__CONFIGURATION>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>1</versionSupported>
              <configParameters>
                <entry>
                  <int>1</int>
                  <configurationParameter>
                    <index>1</index>
                    <size>1</size>
                    <value>12</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>2</int>
                  <configurationParameter>
                    <index>2</index>
                    <size>2</size>
                    <value>30</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>3</int>
                  <configurationParameter>
                    <index>3</index>
                    <size>1</size>
                    <value>255</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>4</int>
                  <configurationParameter>
                    <index>4</index>
                    <size>1</size>
                    <value>-1</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>5</int>
                  <configurationParameter>
                    <index>5</index>
                    <size>2</size>
                    <value>10</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>6</int>
                  <configurationParameter>
                    <index>6</index>
                    <size>1</size>
                    <value>8</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>7</int>
                  <configurationParameter>
                    <index>7</index>
                    <size>2</size>
                    <value>60</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>8</int>
                  <configurationParameter>
                    <index>8</index>
                    <size>1</size>
                    <value>0</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>9</int>
                  <configurationParameter>
                    <index>9</index>
                    <size>1</size>
                    <value>5</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>10</int>
                  <configurationParameter>
                    <index>10</index>
                    <size>1</size>
                    <value>1</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_WAKE_UP</commandClass>
            <COMMAND__CLASS__WAKE__UP>
              <version>2</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>2</versionSupported>
              <targetNodeId>1</targetNodeId>
              <interval>600</interval>
              <minInterval>300</minInterval>
              <maxInterval>16777200</maxInterval>
              <defaultInterval>43200</defaultInterval>
              <intervalStep>60</intervalStep>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__WAKE__UP>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_BASIC</commandClass>
            <COMMAND__CLASS__BASIC>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>1</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>MOTION</binarySensorType>
              </types>
            </COMMAND__CLASS__SENSOR__BINARY>
          </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_ASSOCIATION</commandClass>
            <COMMAND__CLASS__ASSOCIATION>
              <version>2</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>2</versionSupported>
              <maxGroups>4</maxGroups>
            </COMMAND__CLASS__ASSOCIATION>
          </entry>
        </supportedCommandClasses>
      </endPoint>
    </entry>
  </endpoints>
  <nodeNeighbors>
    <int>1</int>
    <int>8</int>
    <int>15</int>
  </nodeNeighbors>
  <lastReceived>2019-07-02 01:50:30.859 UTC</lastReceived>

I have tried reinitialising the device which hasn’t changed anything so I have assumed something is wrong.

@chris, you may want to check this out.

This sort of issue is either caused by an error in the database, or the manufacturer using the same device type and ID for multiple products (which is not allowed for ZWave certification, but it does happen).

We need to somehow work out what the correct device codes are - ie we need to know if the codes used by this device are used by another device or if it’s an error.

1 Like

It did work on the 2.4 as I changed the value on the same sensor just a different node.

Looking at the Node XML vs the DB XML they looked the same but that is to my untrained eye.

Just something that clocked my eye could it be the D is not is caps in the discoverery but is in the DB?

But I guess the point is that the database has changed from 2.4 to 2.5? The node XML file isn’t really relevant - this will always reflect the data from the device.

I’m not sure what D you are referring to, but it’s unlikely do be a problem?

Node output

0x108d

DB
0003:108D

Thats fine if this isn’t an issue just trying to understand why the other DB XML is being used.

I know the database changed from 2.5M1 to the current snapshots. I am running a snapshot and all my devices are recognized properly. They are not all recognized with 2.5M1.

Hmm something went wrong then between 2.4 and 2.5M1 but now resolved again. @Bruce_Osborne are you running a fresh build of the snapshot from source?

It would be cool to have the function where the pluggin can update live for the database instead of having to generate a new jar file.

I updated my snapshot earlier this week.
I notice the REST API Docs appear broken in my latest snapshot though. for me everything else appears to work fine.
The REST Docs worked in an earlier snapshot.

I think I have a PD03Z at home with different ID string. I need to check this weekend safter I get home.

@Bruce_Osborne Did you manage to check the snapshot at the weekend?

Actually, my system “ate itself” & I forgot.
Just checked nowin Paper UI.
Mfg ID 0259
device id 141
device type 3

So my device ID is 0141 & yours is 108D.

Hmm thank you for the update:

pd03z_0_0.xml

<property name="modelId">PD03Z</property>
  <property name="manufacturerId">0258</property>
  <property name="manufacturerRef">0003:108D</property>
<property name="dbReference">973</property>

motionsensor_0_0.xml

<property name="modelId">Motion Sensor</property>
<property name="manufacturerId">0258</property>
<property name="manufacturerRef">0003:0083,0003:008D,0003:1083,0003:2083</property>
<property name="dbReference">401</property>

I can’t see to see your code.

Right I have found the issue.

From paper UI
Mau ID: 0258
manufacturerRef: 0003:0083,0003:008D,0003:1083,0003:108D

The device is crossing over the two config XML’s although the node walk as posed above doesn’t show that.

@chris Is there an easy fix as I am confused why the node walk shows one thing and paperui is different.

I don’t know what the “node walk” is? Can you explain please?

1 Like

My appologies confusion of terms on my side. On openhabian under /srv/openhab2-userdata/zwave the node .xml there for these sensors shows:

  <manufacturer>0x258</manufacturer>
  <deviceId>0x108d</deviceId>

Ok, so I guess you mean what I normally call the interrogation?

This gets the data from the device - it will ALWAYS return the value from the device and this is what is placed into the XML that OH creates. This value is then used to correlate the data in the database which brings us back to the same issue I mentioned a few days back -:

Yes thank you too used to SNMP terms.

So I understand more then the way the z-wave plugin works is that it interrogates the “node” and in this case gets:

  <manufacturer>0x258</manufacturer>
  <deviceId>0x108d</deviceId>

Then somewhere in the DB lookup and if I follow right is what gets into paperUI I end up with:
manufacturerRef: 0003:0083,0003:008D,0003:1083,0003:108D

Sorry for taking time on this one just trying to understand what is going on under the hood.

Yes - you roughly have it correct.

Thank you appropriate your help.

Looking at the XML themselves:
motionsensor_0_0.xml
motionsensorin_0_0.xml
pd03z_0_0.xml
pd03z_3_80.xml

Looking at the 2.50 branch they look correct. I have tried to compile myself and failed miserably so I haven’t built from the latest to try. So looking at them I not able to see the issue myself.