[Solved] Adding new device on opensmarthouse

Not sure if this is the right place to post this, but I recently got a Nexa Smoke Detector (ZSD-109) that doesn’t exist in the database. I’m trying to add it but just get an error without any description. I’m using the node XML from OpenHAB as stated in the docs.

Not sure if there’s some error on opensmarthouse site itself, because I can’t post a ticket there either (won’t save it). Maybe @chris know’s whats happening here? :slight_smile:

Here’s the XML I try to use anyway.

<node>
  <homeId>0xe2fb1d4d</homeId>
  <nodeId>3</nodeId>
  <version>4</version>
  <manufacturer>0x266</manufacturer>
  <deviceId>0x1</deviceId>
  <deviceType>0x5</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_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_POWERLEVEL</commandClass>
    <commandClass>COMMAND_CLASS_BATTERY</commandClass>
    <commandClass>COMMAND_CLASS_SECURITY_2</commandClass>
    <commandClass>COMMAND_CLASS_ALARM</commandClass>
    <commandClass>COMMAND_CLASS_WAKE_UP</commandClass>
    <commandClass>COMMAND_CLASS_SUPERVISION</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_ALARM</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>SensorSmok Basic set(ON/OFF)</name>
        <profile1>0x71</profile1>
        <profile2>0x1</profile2>
        <commands/>
        <associations/>
      </associationGroup>
    </entry>
    <entry>
      <int>3</int>
      <associationGroup>
        <index>3</index>
        <maxNodes>0</maxNodes>
        <name>Smok Alarm Report</name>
        <profile1>0x71</profile1>
        <profile2>0x1</profile2>
        <commands>
          <commandClass>COMMAND_CLASS_ALARM</commandClass>
        </commands>
        <associations/>
      </associationGroup>
    </entry>
    <entry>
      <int>4</int>
      <associationGroup>
        <index>4</index>
        <maxNodes>0</maxNodes>
        <name>SensorHeat Basic set(ON/OFF)</name>
        <profile1>0x71</profile1>
        <profile2>0x4</profile2>
        <commands/>
        <associations/>
      </associationGroup>
    </entry>
    <entry>
      <int>5</int>
      <associationGroup>
        <index>5</index>
        <maxNodes>0</maxNodes>
        <name>Heat Alarm Report</name>
        <profile1>0x71</profile1>
        <profile2>0x4</profile2>
        <commands>
          <commandClass>COMMAND_CLASS_ALARM</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</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_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>
                <int>3</int>
                <int>5</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>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_CONFIGURATION</commandClass>
            <COMMAND__CLASS__CONFIGURATION>
              <version>0</version>
              <instances>0</instances>
              <control>false</control>
              <versionSupported>0</versionSupported>
              <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>SMOKE</alarmType>
                  <alarmState>
                    <alarmType>SMOKE</alarmType>
                    <reportedEvents>
                      <int>2</int>
                      <int>3</int>
                      <int>4</int>
                      <int>6</int>
                    </reportedEvents>
                    <outer-class reference="../../../.."/>
                  </alarmState>
                </entry>
                <entry>
                  <alarmType>HEAT</alarmType>
                  <alarmState>
                    <alarmType>HEAT</alarmType>
                    <reportedEvents>
                      <int>2</int>
                      <int>7</int>
                      <int>8</int>
                      <int>9</int>
                    </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>614</deviceManufacturer>
              <deviceType>5</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_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>7200</interval>
              <minInterval>3600</minInterval>
              <maxInterval>86400</maxInterval>
              <defaultInterval>7200</defaultInterval>
              <intervalStep>60</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>5</maxGroups>
            </COMMAND__CLASS__ASSOCIATION>
          </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.61</protocolVersion>
              <applicationVersion>1.1</applicationVersion>
              <hardwareVersion>255</hardwareVersion>
            </COMMAND__CLASS__VERSION>
          </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>5</maxGroups>
            </COMMAND__CLASS__MULTI__CHANNEL__ASSOCIATION>
          </entry>
        </supportedCommandClasses>
      </endPoint>
    </entry>
  </endpoints>
  <nodeNeighbors>
    <int>1</int>
  </nodeNeighbors>
  <lastReceived>2023-02-25 13:36:12.16 UTC</lastReceived>
</node>

My guess is that this is a new manufacturer (0x0266) for OH. On another site it is listed as
“0x0266”: “Siterwell Technology HK Co., Ltd.”,

However neither (Nexa or Siterwell) is listed in DB. Chris will have to add.

There shouldn’t be an issue with tickets on the OSH site - I see tickets from other people at least, so it is working for others.

Sorry for the potentially silly questions, but I guess you have an account and I gave you access (sorry - I’m travelling at the moment so can’t log on to check).

Just for reference:

https://products.z-wavealliance.org/products/2599?selectedFrequencyId=-1

Hmm, might be something here then. Tried both Firefox, Falkon and Firefox on Android. Know it have worked, I created a ticket in january :slight_smile:

Yepp, I have an account and have access to adding new things to the database. Tried pasting the above XML, but just get an error when trying to add it.

Might use the same hardware or something? Nexa is a Swedish company that started its business 1997.

I’ve added this manufacturer now…

Great! Could add it now :slight_smile:

1 Like

If you are done, don’t forget to “Request review” on the overview tab.

I’m aware, trying to get some information about the device from the company but haven’t heard from them yet.

@anon71759204 Just talked to Nexa them self, but the didn’t have any extended manual. But the links you provided should do the trick I think. Any nice soul wanna help adding it, never done it before. Don’t wanna mess it up :slight_smile:

[EDIT] Think I got it :smiley:

1 Like

Can confirm that the info I added to the z-wave database about the device is working. Triggers on smoke (didn’t test heat), and battery is reporting it’s status. Only available in snapshot at the time of writing though.

1 Like

Hijacking this thread. Bought three of the same smoke detector (ZSD-109) based on this thread, and can confirm that they are all being discovered, but none of the detectors report anything, all channels (linked to items, of course) say NULL, eventhough I triggered the test several times.
I have tried to wake them up (although not sure that this can be done in similar fashion as Fibaro’s door sensors etc.) by tripple-clicking the button. Nothing is reported in the logs when this is done. They have been laying close to the z-wave bridge for 24h now. Any suggestions?

Unfortunately not, I had some other devices that didn’t work with OpenHAB at all, so I ended up migrating everything to Home Assistant. There both smoke detectors and and other devices (some from Aqara) worked without any issues.

The only thing I see in reviewing the ZW DB is that the controller is not automatically put in Lifeline. (group 1). add that and test again.

First I’ll concede that Zwave-js (the zwave “binding” or “Integration”) for HA has more devices configured as the HA user base is bigger. However, any ZW device can be added to the OH binding (like you did in solving this thread). In addition, I have added devices from the OH ZW DB that were missing from Zwave-js ZW DB, so it goes both ways to some degree.

Also possible: I’m using Zwave-js with OH. So have the best of both worlds (IMO).

That’s true. The issues I had was with Zigbee though, a couple of the devices didn’t work. The got discovered, but most entities didn’t work at all with OH (missing sensors), but did with HA. I had some stability issues with OH to unfortunately, while HA works excellent with my current setup (just some minor hiccups).

Thanks. I have just made the update to all three things. I suppose I will have to wait for the next heal-time for it to take effect.
I will let you guys know the outcome.

FYI The Association group update should happen when the battery device wakes. The network heals for battery devices also occur upon waking, not at the time configured on the UI controller page.

Thanks. I am not on site, helping a friend. Hopefully, the devices will wake up at regular intervals. There is not much in way of documentation from the manufacturer…

No luck. 2 weeks later and all linked items are still NULL. They must wake up occasionally, right?
In OH 2.4 I recall that you could see whether a setting was pending or “committed”/received but cannot seem to find the same in OH 4.2.
Do you know if a wakeup or poll or something can be seen?