HS-WD200+ Update - New Association Group 2

According to this link…

…device firmware version 5.11 has added an “Association Group 2” that allows all devices in it to act like a single device (thus allowing multiple dimmers to have the same indicator lights, etc). I don’t think they provided updated docs though. How can I help in updating this? It affects how I need to wire the devices, so I want to get this working before I wire these throughout my house. Thanks in advance! :slight_smile:

Set the current db entry to max firmware version 5.9, create a new entry with the help from your xml file and set the min firmware version to 5.11.
Add the configuration and association groups.
Update to the latest zwave snapshot as soon as the changes got merged.

https://www.cd-jackson.com/index.php/zwave/zwave-device-database/zwave-device-list/devicesummary/806

https://www.cd-jackson.com/index.php/zwave/zwave-device-database/zwave-device-database-guide

Unfortunately your database update from yesterday can not be approved.
As I said earlier, you need to create a new device with a min firmware version (5.13 for the WD200) because an association group is different.
Please take your xml file and add your device to the database.

OK… modded the firmware version max on the old device… now trying to create a new device from my xml file and it keeps throwing an SQL error…

1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '95,1,1,2382)' at line 3

Here’s the XML I’m trying to upload…

<node>
  <homeId>0x16a0e22</homeId>
  <nodeId>5</nodeId>
  <version>4</version>
  <manufacturer>0xc</manufacturer>
  <deviceId>0x3036</deviceId>
  <deviceType>0x4447</deviceType>
  <listening>true</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_ASSOCIATION</commandClass>
    <commandClass>COMMAND_CLASS_ASSOCIATION_GRP_INFO</commandClass>
    <commandClass>COMMAND_CLASS_TRANSPORT_SERVICE</commandClass>
    <commandClass>COMMAND_CLASS_MANUFACTURER_SPECIFIC</commandClass>
    <commandClass>COMMAND_CLASS_DEVICE_RESET_LOCALLY</commandClass>
    <commandClass>COMMAND_CLASS_POWERLEVEL</commandClass>
    <commandClass>COMMAND_CLASS_SWITCH_MULTILEVEL</commandClass>
    <commandClass>COMMAND_CLASS_SWITCH_ALL</commandClass>
    <commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
    <commandClass>COMMAND_CLASS_CENTRAL_SCENE</commandClass>
    <commandClass>COMMAND_CLASS_SCENE_ACTUATOR_CONF</commandClass>
    <commandClass>COMMAND_CLASS_SCENE_ACTIVATION</commandClass>
    <commandClass>COMMAND_CLASS_SECURITY_2</commandClass>
    <commandClass>COMMAND_CLASS_SUPERVISION</commandClass>
    <commandClass>COMMAND_CLASS_FIRMWARE_UPDATE_MD</commandClass>
    <commandClass>COMMAND_CLASS_MARK</commandClass>
    <commandClass>COMMAND_CLASS_CENTRAL_SCENE</commandClass>
  </nodeInformationFrame>
  <associationGroups class="concurrent-hash-map">
    <entry>
      <int>1</int>
      <associationGroup>
        <index>1</index>
        <maxNodes>0</maxNodes>
        <associations>
          <associationMember>
            <node>1</node>
          </associationMember>
        </associations>
      </associationGroup>
    </entry>
    <entry>
      <int>2</int>
      <associationGroup>
        <index>2</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_SWITCH_MULTILEVEL</genericDeviceClass>
          <specificDeviceClass>SPECIFIC_TYPE_POWER_SWITCH_MULTILEVEL</specificDeviceClass>
        </deviceClass>
        <endpointId>0</endpointId>
        <secureCommandClasses/>
        <supportedCommandClasses class="concurrent-hash-map">
          <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_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_ALWAYS_ON</zwPlusRole>
              <zwPlusNodeType>NODE_TYPE_ZWAVEPLUS_NODE</zwPlusNodeType>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__ZWAVEPLUS__INFO>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_SWITCH_ALL</commandClass>
            <COMMAND__CLASS__SWITCH__ALL>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>1</versionSupported>
              <isGetSupported>true</isGetSupported>
              <mode>SWITCH_ALL_INCLUDE_ON_OFF</mode>
            </COMMAND__CLASS__SWITCH__ALL>
          </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/>
            </COMMAND__CLASS__ASSOCIATION__GRP__INFO>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_SCENE_ACTIVATION</commandClass>
            <COMMAND__CLASS__SCENE__ACTIVATION>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>1</versionSupported>
            </COMMAND__CLASS__SCENE__ACTIVATION>
          </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_CENTRAL_SCENE</commandClass>
            <COMMAND__CLASS__CENTRAL__SCENE>
              <version>3</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>3</versionSupported>
              <sceneCount>2</sceneCount>
            </COMMAND__CLASS__CENTRAL__SCENE>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_SWITCH_MULTILEVEL</commandClass>
            <multiLevelSwitchCommandClass>
              <version>3</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>4</versionSupported>
              <switchTypePrimary>OFF_ON</switchTypePrimary>
              <switchTypeSecondary>UNDEFINED</switchTypeSecondary>
              <isGetSupported>true</isGetSupported>
            </multiLevelSwitchCommandClass>
          </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_ENHANCED</libraryType>
              <protocolVersion>4.61</protocolVersion>
              <applicationVersion>5.11</applicationVersion>
              <hardwareVersion>255</hardwareVersion>
            </COMMAND__CLASS__VERSION>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
            <COMMAND__CLASS__CONFIGURATION>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>3</versionSupported>
              <configParameters>
                <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>11</int>
                  <configurationParameter>
                    <index>11</index>
                    <size>1</size>
                    <value>3</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>12</int>
                  <configurationParameter>
                    <index>12</index>
                    <size>1</size>
                    <value>3</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>13</int>
                  <configurationParameter>
                    <index>13</index>
                    <size>1</size>
                    <value>0</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>14</int>
                  <configurationParameter>
                    <index>14</index>
                    <size>1</size>
                    <value>0</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>21</int>
                  <configurationParameter>
                    <index>21</index>
                    <size>1</size>
                    <value>0</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>22</int>
                  <configurationParameter>
                    <index>22</index>
                    <size>1</size>
                    <value>0</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>23</int>
                  <configurationParameter>
                    <index>23</index>
                    <size>1</size>
                    <value>0</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>24</int>
                  <configurationParameter>
                    <index>24</index>
                    <size>1</size>
                    <value>0</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>25</int>
                  <configurationParameter>
                    <index>25</index>
                    <size>1</size>
                    <value>0</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>26</int>
                  <configurationParameter>
                    <index>26</index>
                    <size>1</size>
                    <value>0</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>27</int>
                  <configurationParameter>
                    <index>27</index>
                    <size>1</size>
                    <value>0</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>30</int>
                  <configurationParameter>
                    <index>30</index>
                    <size>1</size>
                    <value>0</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>31</int>
                  <configurationParameter>
                    <index>31</index>
                    <size>1</size>
                    <value>0</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
              </configParameters>
            </COMMAND__CLASS__CONFIGURATION>
          </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_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_MANUFACTURER_SPECIFIC</commandClass>
            <COMMAND__CLASS__MANUFACTURER__SPECIFIC>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>2</versionSupported>
              <initSerialNumber>false</initSerialNumber>
              <deviceManufacturer>12</deviceManufacturer>
              <deviceType>17479</deviceType>
              <deviceId>12342</deviceId>
            </COMMAND__CLASS__MANUFACTURER__SPECIFIC>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_FIRMWARE_UPDATE_MD</commandClass>
            <COMMAND__CLASS__FIRMWARE__UPDATE__MD>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>4</versionSupported>
            </COMMAND__CLASS__FIRMWARE__UPDATE__MD>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_SCENE_ACTUATOR_CONF</commandClass>
            <COMMAND__CLASS__SCENE__ACTUATOR__CONF>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>1</versionSupported>
            </COMMAND__CLASS__SCENE__ACTUATOR__CONF>
          </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>
        </supportedCommandClasses>
      </endPoint>
    </entry>
  </endpoints>
  <nodeNeighbors>
    <int>1</int>
    <int>3</int>
    <int>4</int>
  </nodeNeighbors>
  <lastReceived>2019-04-03 16:08:04.126 UTC</lastReceived>
</node>

That does not work.
Please upload the xml from your device with the new firmware without any changes.

I think you’re misunderstanding me… Or at least I don’t understand what I’m doing wrong…

I went to the online database, found the existing device therein, and changed it’s max version to 5.09… that change is awaiting approval…
Then I took the appropriate XML file from my openhab server (currently running with the existing, older DB definition), and went to the online database, and attempted to create a new device with the XML file, whose min version would have been 5.11… that’s when I got the error.

I’m pretty sure that my device is firmware 5.11, though I don’t remember where I saw that… and now I can’t find how to validate this info… I can’t see the firmware version info anywhere within OpenHab, or ZenSys Tools… This is very frustrating. :stuck_out_tongue:

I thought you edited the xml. There were errors in the database for both of the devices which let me come to that conclusion.
Anyway, the errors are fixed, you can start adding the missing information:
https://www.cd-jackson.com/index.php/zwave/zwave-device-database/zwave-device-list/devicesummary/1040#overview

Properties page of HABmin or check your xml:
<applicationVersion>5.11</applicationVersion>

Don’t forget to hit the “Request approval” button when you are done.

I already copied the config from the older device so you have less work to do.
Please verify all copied parameters and edit when necessary.
I hope your frustration will getting less.

Thanks for the help! I did my best but I’m, quite honestly out of my depth… half-guessing what I’m supposed to be doing based on the XML…

The extra Endpoint0 area at the end might be superfluous, but I put it in anyhow cause it was in the first version, and then I couldn’t delete it… so be it…

The Command_Classes -> CONFIGURATION section also doesn’t have the detail from the first version, but I couldn’t see it in the XML, so I left that stuff out…

The newest version of the manual doesn’t mention Association Group #2 either… but I made my best guess at adding it based on my original link above…

Tryin my best here with my limited zwave knowledge and insuffucient product docs… Please let me know what else I have to revise and I’ll continue trying to get it right. Thanks for your patience! :slight_smile:

Nothing. This was done while adding the xml file to the database. There is no need to change anything in the command classes. If something does not work there may changes be needed.

Nope, deleted.

So, finally got back to this after a couple months of being busy… Back then I had created a new version of the HS-WD200+ for firmware v5.11 or greater that included this new association group. Today, I downloaded the new nightly build and threw it in the addons folder… and then uninstalled the binding and reinstalled it in PaperUI. But it doesn’t yet show the new Association Group #2 when I look in HABmin->Things -> MyDimmer -> Association Groups. It still only shows Association Group 1:Lifeline… So time to validate some stuff…

  • How do I validate that it’s using the nightly snapshot version of the zwave plugin?

  • There are 2 versions of WS-WD200+ (for different versions of the firmware)… How do I validate that it’s using the version I created in the database (for firmware v5.11)?

  • Any other suggestions to diagnose what I might have done wrong…?

Not exactly an OpenHAB expert, but I’m learning. Thanks in advance!

Frank. :slight_smile:

Omit this step. Just uninstall the old binding and put the new jar in your addons folder.

Karaf: bundle:list | grep -i zwave

You cant’t use the wrong one, but it can be verified through the Properties tab.

After upgrading to the latest zwave snapshot you need to delete the Thing and readd it,

There’s also a new xstream dependency, that needs to be manually installed. And openhab-transport-serial. The manual steps are documented in the readme.

So I installed the snapshot version of the ZWave binding using the script mentioned (thanks!)… removed and re-added some of my things to test… The changes seem pretty significant so far… The ZWave network viewer seems to work again (it hasn’t for a while for me). It seems like changing the Properties->Label no longer saves the result. Also, I see no more Section for Association Groups… So I’m not sure how to add multiple items to association Group 2 as mentioned (by the manufacturer) in the link at the top of this post…

Nevermind… I re-read Sihui’s post and realized I was still removing and adding the binding via paperUI when I should have been listening to his advice to “Omit this step. Just uninstall the old binding and put the new jar in your addons folder.”