Z-Wave unknown device - Aidoo Z-Wave Plus AZAI6ZWxXXX

I have a Aidoo Z-Wave Plus AZAI6ZWxXXX which is currently not identified by the current version of OpenHAB, but present within the zwavedatabase. I guess it is because the entry is incomplete. Is there anything I can do, to support the completion of this entry?

This post has the link to the blog on how to get write access. Guidance for “unknown” Zwave Device - Tutorials & Examples / Solutions - openHAB Community

I have update the binding:

296 │ Active │  80 │ 4.3.0.202408010348    │ openHAB Add-ons :: Bundles :: ZWave Binding

But device is still not identified:

:29:13.621 [INFO ] [ve.internal.protocol.ZWaveController] - Starting ZWave controller
:29:13.622 [INFO ] [ve.internal.protocol.ZWaveController] - ZWave timeout is set to 5000ms. Soft reset is false.
:29:18.048 [WARN ] [wave.discovery.ZWaveDiscoveryService] - NODE 2: Device discovery could not resolve to a thingType! 044E:0004:0001::10.21

The blog post states:

If you find that there is already a device in the database with the same Type and ID as the one you want to add, don’t just change them or add duplicates. Please flag this on the openHAB forum and we’ll try and work out how best to handle it - for example, the device might be a newer (or older!) version of a similar device with different firmware.

So that’s what I am trying to do here. :slight_smile:

I’ll need to add a clarification in my post that a ZW DB entry without a first approval date is not in the database (in the sense it is not merged into the binding). Sorry about that.

It looks like you have registered on the ZW database, so now you need to open a ticket so the ZW developer can grant you write access.

The main concern extracted from the blog is that changes to an existing item will affect others using the entry. In this case there is no one using the device since it hasn’t been merged into the binding, so the changes you make won’t affect anyone else.

Lastly, the one thing that will not be changed are the command classes on the Endpoints Tab (everything else can be changed). Those got set by the person that uploaded the XML from their userdata/zwave folder to create the partial entry. To head off a possible problem could you post your node2 XML from that folder so I can take a look? It might be better to follow the blog process add a new device with a version difference and basically ignore the existing stub.

Here is my node2 XML:

<node>
  <homeId>0x00000000</homeId>
  <nodeId>2</nodeId>
  <version>4</version>
  <manufacturer>0x44e</manufacturer>
  <deviceId>0x1</deviceId>
  <deviceType>0x4</deviceType>
  <listening>true</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_THERMOSTAT_FAN_MODE</commandClass>
    <commandClass>COMMAND_CLASS_THERMOSTAT_MODE</commandClass>
    <commandClass>COMMAND_CLASS_THERMOSTAT_SETPOINT</commandClass>
    <commandClass>COMMAND_CLASS_SENSOR_MULTILEVEL</commandClass>
    <commandClass>COMMAND_CLASS_ALARM</commandClass>
    <commandClass>COMMAND_CLASS_ASSOCIATION</commandClass>
    <commandClass>COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION</commandClass>
    <commandClass>COMMAND_CLASS_ASSOCIATION_GRP_INFO</commandClass>
    <commandClass>COMMAND_CLASS_TRANSPORT_SERVICE</commandClass>
    <commandClass>COMMAND_CLASS_VERSION</commandClass>
    <commandClass>COMMAND_CLASS_MANUFACTURER_SPECIFIC</commandClass>
    <commandClass>COMMAND_CLASS_DEVICE_RESET_LOCALLY</commandClass>
    <commandClass>COMMAND_CLASS_INDICATOR</commandClass>
    <commandClass>COMMAND_CLASS_POWERLEVEL</commandClass>
    <commandClass>COMMAND_CLASS_SECURITY</commandClass>
    <commandClass>COMMAND_CLASS_SECURITY_2</commandClass>
    <commandClass>COMMAND_CLASS_SUPERVISION</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>
        <associations/>
      </associationGroup>
    </entry>
  </associationGroups>
  <endpoints class="concurrent-hash-map">
    <entry>
      <int>0</int>
      <endPoint>
        <deviceClass>
          <basicDeviceClass>BASIC_TYPE_ROUTING_SLAVE</basicDeviceClass>
          <genericDeviceClass>GENERIC_TYPE_THERMOSTAT</genericDeviceClass>
          <specificDeviceClass>SPECIFIC_TYPE_THERMOSTAT_GENERAL_V2</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>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>2</versionSupported>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__BASIC>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_SENSOR_MULTILEVEL</commandClass>
            <COMMAND__CLASS__SENSOR__MULTILEVEL>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>1</versionSupported>
              <sensors>
                <entry>
                  <multilevelSensorType>TEMPERATURE</multilevelSensorType>
                  <multilevelSensor>
                    <sensorType>TEMPERATURE</sensorType>
                    <initialised>true</initialised>
                  </multilevelSensor>
                </entry>
              </sensors>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__SENSOR__MULTILEVEL>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_THERMOSTAT_MODE</commandClass>
            <COMMAND__CLASS__THERMOSTAT__MODE>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>3</versionSupported>
              <modeTypes>
                <modeType>OFF</modeType>
                <modeType>HEAT</modeType>
                <modeType>COOL</modeType>
                <modeType>FAN_ONLY</modeType>
                <modeType>DRY_AIR</modeType>
                <modeType>AUTO_CHANGEOVER</modeType>
              </modeTypes>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__THERMOSTAT__MODE>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_THERMOSTAT_SETPOINT</commandClass>
            <COMMAND__CLASS__THERMOSTAT__SETPOINT>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>1</versionSupported>
              <setpoints>
                <entry>
                  <setpointType>HEATING</setpointType>
                  <setpoint>
                    <setpointType>HEATING</setpointType>
                    <initialised>true</initialised>
                    <initCount>0</initCount>
                    <outer-class reference="../../../.."/>
                  </setpoint>
                </entry>
                <entry>
                  <setpointType>COOLING</setpointType>
                  <setpoint>
                    <setpointType>COOLING</setpointType>
                    <initialised>true</initialised>
                    <initCount>0</initCount>
                    <outer-class reference="../../../.."/>
                  </setpoint>
                </entry>
              </setpoints>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__THERMOSTAT__SETPOINT>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_THERMOSTAT_FAN_MODE</commandClass>
            <COMMAND__CLASS__THERMOSTAT__FAN__MODE>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>2</versionSupported>
              <fanModeTypes>
                <fanModeType>AUTO_LOW</fanModeType>
                <fanModeType>ON_LOW</fanModeType>
                <fanModeType>ON_HIGH</fanModeType>
                <fanModeType>UNKNOWN_4</fanModeType>
                <fanModeType>UNKNOWN_5</fanModeType>
              </fanModeTypes>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__THERMOSTAT__FAN__MODE>
          </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/>
            </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>2</versionSupported>
              <zwPlusVersion>2</zwPlusVersion>
              <zwPlusRole>ROLE_TYPE_SLAVE_ALWAYS_ON</zwPlusRole>
              <zwPlusNodeType>NODE_TYPE_ZWAVEPLUS_NODE</zwPlusNodeType>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__ZWAVEPLUS__INFO>
          </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>SYSTEM</alarmType>
                  <alarmState>
                    <alarmType>SYSTEM</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>1102</deviceManufacturer>
              <deviceType>4</deviceType>
              <deviceId>1</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_ASSOCIATION</commandClass>
            <COMMAND__CLASS__ASSOCIATION>
              <version>2</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>2</versionSupported>
              <maxGroups>1</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.16</protocolVersion>
              <applicationVersion>10.21</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>1</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>
    <int>1</int>
  </nodeNeighbors>
  <lastReceived>2024-08-06 06:47:40.681 UTC</lastReceived>
</node>

I think it going to be better to create a new device when you get write access. You have more command classes and more endpoints. The issue is that you can’t upload a new device with the same Type:ID. I’m not sure that if I change the Type:ID on the old one whether yours will work or we have todo something like in the blog.`

Before adding the new version (ie uploading the XML), change the type/id to a random number. This avoids any consistency issues when importing into the database. After the file is imported, change the type/id back, and set the firmware versions appropriately.

` I hate to take away your fun, but I could try to pave the way a bit while you apply for write access, if that’s okay?

I didn’t find any button or link or … where I can request write access on the ZW database page or any entry of the ZW database. Neither do I see a “Create Device” button. Even if I am logged in. So I am grateful for any help you can give me.

I tried to load the XML, but there seems to be a problem. Also opened a ticket to get that fixed.

This I have already done. But a day has not passed since then. :slight_smile:

Ok Did get your XML loaded here You need to add some information on the first page and the parameters and Association. Mark for review when done.

Now everything looks fine in the database. After updating the zwave binding, OpenHAB shows zwave:device:controller:node2 as online and I see the following channels:

zwave:device:controller:node2:sensor_temperature
zwave:device:controller:node2:thermostat_mode
zwave:device:controller:node2:thermostat_setpoint_heating
zwave:device:controller:node2:thermostat_setpoint_cooling
zwave:device:controller:node2:thermostat_fanmode
zwave:device:controller:node2:alarm_number

So, thanks for your help.

1 Like