Updating Ring Gen2 Door/Window Sensor in the Database

Hi,

Purpose: I am trying to make use of the Ring Gen2 door/window sensor in openhab.

Observations:

  1. Successfully included device in openhab 4.1.0 release but showed up as “unknown device”

NODE 20: Unable to find thing type (0346:0201:0601:1.40)

  1. Looked in the zwave debug log and saw that the deviceId is slightly different than the entry in opensmarthouse. XML file is pasted at the bottom of this post.

Action:

  1. I read the “Z-Wave Device Database Guide” on opensmarthouse and realized that I need to update the database in order for it to be supported in openhab.

Problem:
I believe I need to register for an opensmarthouse account before I can update the device but when I clicked on that link, I got an error on the website saying “File not found”.

I’m new to the openhab community and thanks in advance for any help anyone can provide.

<node>
  <homeId>0xcf59a45d</homeId>
  <nodeId>20</nodeId>
  <version>4</version>
  <manufacturer>0x346</manufacturer>
  <deviceId>0x601</deviceId>
  <deviceType>0x201</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_GRP_INFO</commandClass>
    <commandClass>COMMAND_CLASS_ASSOCIATION</commandClass>
    <commandClass>COMMAND_CLASS_BATTERY</commandClass>
    <commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
    <commandClass>COMMAND_CLASS_DEVICE_RESET_LOCALLY</commandClass>
    <commandClass>COMMAND_CLASS_FIRMWARE_UPDATE_MD</commandClass>
    <commandClass>COMMAND_CLASS_INDICATOR</commandClass>
    <commandClass>COMMAND_CLASS_MANUFACTURER_SPECIFIC</commandClass>
    <commandClass>COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION</commandClass>
    <commandClass>COMMAND_CLASS_ALARM</commandClass>
    <commandClass>COMMAND_CLASS_POWERLEVEL</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_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_ALARM</commandClass>
          <commandClass>COMMAND_CLASS_BATTERY</commandClass>
        </commands>
        <associations>
          <associationMember>
            <node>1</node>
          </associationMember>
        </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_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>2</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/>
            </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>
                      <int>2</int>
                      <int>3</int>
                      <int>11</int>
                    </reportedEvents>
                    <outer-class reference="../../../.."/>
                  </alarmState>
                </entry>
                <entry>
                  <alarmType>POWER_MANAGEMENT</alarmType>
                  <alarmState>
                    <alarmType>POWER_MANAGEMENT</alarmType>
                    <reportedEvents/>
                    <outer-class reference="../../../.."/>
                  </alarmState>
                </entry>
                <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>838</deviceManufacturer>
              <deviceType>513</deviceType>
              <deviceId>1537</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>3</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>3</versionSupported>
              <targetNodeId>1</targetNodeId>
              <interval>43200</interval>
              <minInterval>3600</minInterval>
              <maxInterval>86400</maxInterval>
              <defaultInterval>43200</defaultInterval>
              <intervalStep>3600</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>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.17</protocolVersion>
              <applicationVersion>1.40</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>false</supportedIndicatorsInitialised>
              <supportedIndicators>
                <ZWaveIndicator>
                  <type>READY</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>
        </supportedCommandClasses>
      </endPoint>
    </entry>
  </endpoints>
  <nodeNeighbors/>
  <lastReceived>2024-01-07 15:28:11.641 UTC</lastReceived>
</node>

I had same problem. Opened a ticket with the administrator. In the meantime I could add your TYPE:ID if the device looks the same.

Thank you Bob. From what i can see, the channels look the same. It would be great if you can add 0x601 to that database entry.

Ok done.

As you are new (Welcome by the way!), the process is the ZW DB periodically is merged into the binding (I believe a merge by the developer will be soon, but I really don’t know). Then you will need to bundle:update your ZW binding (updates are not backported). The process for that is in the docs here. Bundle Management | openHAB. The location of the ZW bundles are here (copy link to the .jar). openHAB-ZWave [Jenkins].

If you are in a hurry and adventurous :wink: You can follow this procedure. The last folder would be /ring (not /zooz) and the file is this (updated with 0601)
4sd2sz0en0_0_0.xml (7.2 KB)

1 Like

Thank you so much Bob for your concise and comprehensive replies. I followed your instructions and have updated my zwave bundle with no errors. However, the device is still unknown when I try to initialize it:

2024-01-09 14:19:14.934 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Unable to find thing type (0346:0201:0601:1.40)

When I looked at the list in my zwave debug log, it showed three entries which I believe meant that the update to the binding was successful:

2024-01-09 14:19:14.889 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - Checking zwave:ring_4sd2sz0en0_00_000
2024-01-09 14:19:14.889 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - Checking zwave:ring_4sd2sz0en0_00_000
2024-01-09 14:19:14.889 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - Checking zwave:ring_4sd2sz0en0_00_000

I could also see zwave messages being received in the log from my sensor:

2024-01-09 14:46:28.654 [DEBUG] [WaveSerialHandler$ZWaveReceiveThread] - Receive Message = 01 10 00 04 00 15 0A 71 05 00 00 00 FF 07 00 01 02 7B 
2024-01-09 14:46:28.654 [DEBUG] [nal.protocol.ZWaveTransactionManager] - processReceiveMessage input 0<>128 : Message: class=ApplicationCommandHandler[4], type=Request[0], dest=21, callback=0, payload=00 15 0A 71 05 00 00 00 FF 07 00 01 02 
2024-01-09 14:46:28.655 [DEBUG] [nal.protocol.ZWaveTransactionManager] - Received msg (0): Message: class=ApplicationCommandHandler[4], type=Request[0], dest=21, callback=0, payload=00 15 0A 71 05 00 00 00 FF 07 00 01 02 
2024-01-09 14:46:28.655 [DEBUG] [nal.protocol.ZWaveTransactionManager] - lastTransaction null
2024-01-09 14:46:28.655 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Application Command Request (ALIVE:DONE)
2024-01-09 14:46:28.655 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: resetResendCount initComplete=true isDead=false
2024-01-09 14:46:28.655 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: Incoming command class COMMAND_CLASS_ALARM, endpoint 0
2024-01-09 14:46:28.656 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: SECURITY not supported
2024-01-09 14:46:28.656 [DEBUG] [tocol.commandclass.ZWaveCommandClass] - NODE 21: Received COMMAND_CLASS_ALARM V8 NOTIFICATION_REPORT
2024-01-09 14:46:28.656 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 21: NOTIFICATION report - 0 = 0, event=0, status=255, plen=1
2024-01-09 14:46:28.656 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 21: Alarm Type = BURGLAR (0)
2024-01-09 14:46:28.656 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Got an event from Z-Wave network: ZWaveAlarmValueEvent
2024-01-09 14:46:28.656 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Got a value event from Z-Wave network, endpoint=0, command class=COMMAND_CLASS_ALARM, value=255
2024-01-09 14:46:28.656 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Commands processed 1.
2024-01-09 14:46:28.656 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Checking command org.openhab.binding.zwave.internal.protocol.ZWaveCommandClassPayload@23b9c17e.
2024-01-09 14:46:28.657 [DEBUG] [nal.protocol.ZWaveTransactionManager] - Transaction completed - outstandingTransactions 0
2024-01-09 14:46:28.657 [DEBUG] [nal.protocol.ZWaveTransactionManager] - Transaction completed - outstandingTransactions 0
2024-01-09 14:46:28.657 [DEBUG] [nal.protocol.ZWaveTransactionManager] - ZWaveReceiveThread queue empty
2024-01-09 14:46:28.657 [DEBUG] [nal.protocol.ZWaveTransactionManager] - Transaction SendNextMessage 0 out at start. Holdoff false.

I have tried removing and re-adding the device and restarting the openhab service. Is there some other troubleshooting that I can do?

Did you delete the device from the ui page (not exclude), then inbox scan to pick it up again?

EDIT: Oh man !! super sorry. :frowning_face:I got the right TYPE:ID in the ZW database, but must have fat fingered when I did the manual.
<property name="manufacturerRef">0201:0301,0201:0401,0202:0601</property> It is 0201, not 0202 Try this with the update process
4sd2sz0en0_0_0.xml (7.2 KB)

Great catch on the ID :slight_smile: Everything is working fine now. I guess the next time I upgrade openhab, I’ll have to redo the update to the zwave binding until this Ring sensor is merged into the binding?

Sorry it happened in the first place…

It is true that the bundle:update will not survive an OH upgrade. The cache is cleared during the update process and that is where the modified bundle resides in OH (It will still be in the folder you did the jar update). Hopefully, however, the updated ZW binding will be in the version you update to. If not, in most cases of a recent update, you could just reuse the modified file again without having to modify the jar.