ZW141 Aeotec Nano Shutter not recognised

Hi,

I have just purchased a couple of ZW141 Aeotec Nano Shutter devices. I cannot get them recognised. Reading through some threads, I have seen issues regarding versions, so I’ve upgraded them both to the latest firmware version (3.04). I then re-included them on the zstick and still not being recognised.

There appears to be two ZW141 entries in the zwave device database for two different manufacturer IDs. Manufacturer 371 (Aeotec) is there, and so is the ZW141. The device version is 3.4. The database lists devices for versions > 3. I did not want to add or edit anything in the database for something that already exists without asking the wider community. I’ve included the XML below. I have a number of other Aeotec and fibaro devices on my zwave network that function without issue.

My OpenHab is currently on release 3.0.1

Am I on the right track that this could be a database issue? Thanks.

<node>
  <homeId>0xf08f22ab</homeId>
  <nodeId>25</nodeId>
  <version>4</version>
  <manufacturer>0x371</manufacturer>
  <deviceId>0x8d</deviceId>
  <deviceType>0x203</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_ASSOCIATION</commandClass>
    <commandClass>COMMAND_CLASS_ASSOCIATION_GRP_INFO</commandClass>
    <commandClass>COMMAND_CLASS_TRANSPORT_SERVICE</commandClass>
    <commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
    <commandClass>COMMAND_CLASS_SCENE_ACTUATOR_CONF</commandClass>
    <commandClass>COMMAND_CLASS_SCENE_ACTIVATION</commandClass>
    <commandClass>COMMAND_CLASS_SWITCH_MULTILEVEL</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_SECURITY</commandClass>
    <commandClass>COMMAND_CLASS_SECURITY_2</commandClass>
    <commandClass>COMMAND_CLASS_SUPERVISION</commandClass>
    <commandClass>COMMAND_CLASS_FIRMWARE_UPDATE_MD</commandClass>
    <commandClass>COMMAND_CLASS_CENTRAL_SCENE</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_BASIC</commandClass>
          <commandClass>COMMAND_CLASS_CENTRAL_SCENE</commandClass>
          <commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
          <commandClass>COMMAND_CLASS_SWITCH_MULTILEVEL</commandClass>
          <commandClass>COMMAND_CLASS_DEVICE_RESET_LOCALLY</commandClass>
        </commands>
        <associations>
          <associationMember>
            <node>1</node>
          </associationMember>
        </associations>
      </associationGroup>
    </entry>
    <entry>
      <int>2</int>
      <associationGroup>
        <index>2</index>
        <maxNodes>0</maxNodes>
        <name>Retransmit</name>
        <profile1>0x0</profile1>
        <profile2>0x0</profile2>
        <commands>
          <commandClass>COMMAND_CLASS_BASIC</commandClass>
          <commandClass>COMMAND_CLASS_SCENE_ACTIVATION</commandClass>
          <commandClass>COMMAND_CLASS_SWITCH_MULTILEVEL</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_SWITCH_MULTILEVEL</genericDeviceClass>
          <specificDeviceClass>SPECIFIC_TYPE_CLASS_C_MOTOR_CONTROL</specificDeviceClass>
        </deviceClass>
        <endpointId>0</endpointId>
        <secureCommandClasses/>
        <supportedCommandClasses class="concurrent-hash-map">
          <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>6.4</protocolVersion>
              <applicationVersion>3.4</applicationVersion>
              <hardwareVersion>141</hardwareVersion>
            </COMMAND__CLASS__VERSION>
          </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_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_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_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>2</int>
              </autoSubscribeGroups>
            </COMMAND__CLASS__ASSOCIATION__GRP__INFO>
          </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_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_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_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_CONFIGURATION</commandClass>
            <COMMAND__CLASS__CONFIGURATION>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>1</versionSupported>
              <configParameters/>
            </COMMAND__CLASS__CONFIGURATION>
          </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_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_MANUFACTURER_SPECIFIC</commandClass>
            <COMMAND__CLASS__MANUFACTURER__SPECIFIC>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>2</versionSupported>
              <initSerialNumber>false</initSerialNumber>
              <deviceManufacturer>881</deviceManufacturer>
              <deviceType>515</deviceType>
              <deviceId>141</deviceId>
            </COMMAND__CLASS__MANUFACTURER__SPECIFIC>
          </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>
          <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/>
  <lastReceived>2021-05-19 13:09:44.191 UTC</lastReceived>
</node>

I’ve updated the database to add your device. It will take a few days for this to flow through the system.

Amazing support @chris, thank you. Do I need do anything at my end? Do I need to pull a new version of the DB or does that happen in the background?

Thanks again.

1 Like

Once this flows through you’ll need to update to the latest snapshot of the binding as the database is incorporated into the binding itself.

To assist others in this process as I’ve had some issues along the way, I am currently running openHAB build 3.01 in a Docker container on a raspberry pi 4. I upgraded the container using the karaf console to 3.0.2. Find the ID of the current version ZWave bundle:
bundle:list | grep ZWave
which will return the bundleID of the installed bundle and then did:

bundle:stop 'bundleID'
bundle:uninstall 'bundleID'
bundle:install https://ci.openhab.org/job/openHAB-ZWave/lastSuccessfulBuild/artifact/target/org.openhab.binding.zwave-3.1.0-SNAPSHOT.jar
bundle:start 'bundleID'

Unfortunately, this failed as the latest ZWave bundle requires openHAB build 3.1.0 (apologies, I didn’t capture the error message at the time).

To update my 3.0.2 Docker container to 3.1.0.M4, you need to update the image variable in docker-compose.yml to read:
... image: "openhab/openhab:3.1.0.M4" ...
and perform the following:

docker-compose pull
docker-compose up -d

if you’re running multiple containers, as I am (I am using IOTstack), you can pop your container name (mine is ‘openhab’) on the end of each line to rebuild just that container. Your container should now be running 3.1.0.M4. Then repeat the ZWave binding update command to pull down the latest binding version.

unfortunately, I hit the next error:

Error executing command: Error executing command on bundles:
      Error starting bundle 282: Could not resolve module: org.openhab.binding.zwave [282]
  Unresolved requirement: Import-Package: javax.measure; version="[2.1.0,3.0.0)"

and here’s where I’m stuck. I cannot figure out how to resolve the unresolved requirement. I’ve read some threads suggesting it’s a build issue. Running bundle:diag returns the following:

openhab> bundle:diag 282
openHAB Add-ons :: Bundles :: ZWave Binding (282)
-------------------------------------------------
Status: Installed
Unsatisfied Requirements:
osgi.wiring.package; filter:="(osgi.wiring.package=org.openhab.binding.zwave)"
osgi.wiring.package; filter:="(&(osgi.wiring.package=javax.measure)(&(version>=2.1.0)(!(version>=3.0.0))))"
Declarative Services

Does anyone have any suggestions on how to resolve the unsatisfied requirements, please?

Update: Updating the openHAB container from 3.1.0.M4 to 3.1.0-snapshot resolved the issue of the missing requirements previously mentioned - I was a little hesitant in taking my whole openHAB instance to snapshot in order to resolve one database entry update with one device model in one binding. I would have preferred to keep the build at M4 and just have a snapshot binding - however, it is what it is. Hopefully, this helps any that follow.

@chris the ZW141 appears to be recognised correctly now. It’ll be interesting to see how they work controlling pool diverter actuators. In theory, it should work :grin:

Thank you Chris. Your work is appreciated.

1 Like

Hi, I can confirm the ZW141s are now working and are in use controlling the actuators on diverters on the pool. The whole pool is now ‘ZWave’ Automated with a number of Aeotec nano switches and dual switches, and a couple of Nano Shutters. The filter, heater and spa pumps, along with chlorinator, spa heater, spa blower, and pool and spa lights being run by openHab on Raspberry Pi. Interfaced to Google Home mini - tell google to ‘turn the spa on’ and the heater and pump turns on, actuators set to ‘spa mode’, wait an hour, spa booster, spa blower and lights turn on! The magic of openHAB, zwave and google.