ZWS12 Unrecognised Zwave Device

See for manual zwave thing definition this post:

I reinstalled OpenHAB2 from scratch on my machine, and then I did file-based Z-Wave configuration as per the instructions.

File /etc/openhab2/things/z-wave.things:

Bridge zwave:serial_zstick:controller "ZME-EU-UZB1 Z-Wave Controller" [
	port="/dev/ttyACM0",
	controller_softreset="false",
	controller_master="false",
	heal_enable="true",
	security_networkkey="00112233445566778899AABBCCDDEEFF"
] {
	Thing fakro_arz_00_000 node2 "Fakro ARZ Z-Wave Roller Shutter North" [
		node_id=2
	]
	Thing fakro_arz_00_000 node3 "Fakro ARZ Z-Wave Roller Shutter South Left" [
		node_id=3
	]
	Thing fakro_arz_00_000 node4 "Fakro ARZ Z-Wave Roller Shutter South Right" [
		node_id=4
	]
} 

File /etc/openhab2/items/z-wave.items:

Switch Switch_ZWave_AT_Roller_N_binary "Roof Window Roller Shutter N On/Off" {
    channel = "zwave:fakro_arz_00_000:controller:node2:switch_binary"
}
Switch Switch_ZWave_AT_Roller_N_blinds_control "Roof Window Roller Shutter N blinds" {
    channel = "zwave:fakro_arz_00_000:controller:node2:blinds_control"
}
Switch Switch_ZWave_AT_Roller_S_L_binary "Roof Window Roller Shutter S L On/Off" {
    channel = "zwave:fakro_arz_00_000:controller:node3:switch_binary"
}
Switch Switch_ZWave_AT_Roller_S_L_blinds_control "Roof Window Roller Shutter S L blinds" {
    channel = "zwave:fakro_arz_00_000:controller:node3:blinds_control"
}
Switch Switch_ZWave_AT_Roller_S_R_binary "Roof Window Roller Shutter S R On/Off" {
    channel = "zwave:fakro_arz_00_000:controller:node4:switch_binary"
}
Switch Switch_ZWave_AT_Roller_S_R_blinds_control "Roof Window Roller Shutter S R blinds" {
    channel = "zwave:fakro_arz_00_000:controller:node4:blinds_control"
}

Now the Z-Wave USB stick and the 3 roller shutters correctly appear as Things and channels. I can even operate either blind.

However, the Inbox still shows the 3 Z-Wave “roller shutter” nodes identified as:

  • Z-Wave Node 002: ZWS12 Chain Actuator
  • Z-Wave Node 003: ZWS12 Chain Actuator
  • Z-Wave Node 004: ZWS12 Chain Actuator

Is it safe to delete them from the Inbox?

Yes. You can delete them from the inbox, but they likely will show up again next time you run discovery.

You could try ignoring them instead (although admittedly I find ignore to not be very permanent). :frowning:

I see :slight_smile:

Do I get it right that the “blinds_control” channel of the roller shutters reports the “open/closed” state and should be a read-only control? See the log when opening the roller shutters with the Fakro remote:

2019-02-13 09:11:11.990 [vent.ItemStateChangedEvent] - Switch_ZWave_AT_Roller_N_binary changed from OFF to ON
2019-02-13 09:11:12.046 [vent.ItemStateChangedEvent] - ALL_Shutters changed from 0 to 100
2019-02-13 09:11:12.046 [vent.ItemStateChangedEvent] - AT_Shutter_N changed from 0 to 100
2019-02-13 09:11:12.047 [vent.ItemStateChangedEvent] - Switch_ZWave_AT_Roller_N_blinds_control changed from OFF to ON
2019-02-13 09:11:12.081 [vent.ItemStateChangedEvent] - Switch_ZWave_AT_Roller_S_R_binary changed from OFF to ON
2019-02-13 09:11:12.127 [vent.ItemStateChangedEvent] - Switch_ZWave_AT_Roller_S_R_blinds_control changed from OFF to ON
2019-02-13 09:11:12.128 [vent.ItemStateChangedEvent] - AT_Shutter_S_R changed from 0 to 100
2019-02-13 09:11:12.221 [vent.ItemStateChangedEvent] - Switch_ZWave_AT_Roller_S_L_binary changed from OFF to ON
2019-02-13 09:11:12.387 [vent.ItemStateChangedEvent] - AT_Shutter_S_L changed from 0 to 100
2019-02-13 09:11:12.388 [GroupItemStateChangedEvent] - gShutter changed from 0 to 100 through AT_Shutter_S_L
2019-02-13 09:11:12.389 [vent.ItemStateChangedEvent] - Switch_ZWave_AT_Roller_S_L_blinds_control changed from OFF to ON

So far I didn’t find a reliable way to query the open/closed state of the blinds.

No, it should be linked to a Rollershutter itemtype and accepts UP, DOWN, STOP and percentage values:

It is so much more easier to use PaperUI for defining Things …:sunglasses:

I see.

I created the following Switch in my sitemap:

Switch item=AT_Shutter_N label="AT Roller Shutter N [%f]" mappings=[
  0="Close",25="25%",50="Half",75="75%",100="Open"
]

I can click on any options of this switch, but only “Close” and “Open” do something on the Fakro roller shutters. All other positions do nothing.

What about your itemtype? Rollershutter does not work?

Rollershutter does work, but I wanted to try setting positions instead of only using UP, STOP and DOWN commands. Apparently, those 3 commands are the only ones supported, not setting percentage levels (unless they translate to either 0 or 100).

in rules files:

AT_Shutter_N.sendCommand(10) or
AT_Shutter_N.sendCommand(25) or whatever.

With mappings: I don’t use that but you need to send a plain value like 50, not 50%

Edit: I just realized I am using that too, but with groups:

Switch item=gRollershutterAll label="Grp EG" mappings=[UP="Auf", STOP="X", DOWN="Zu"]

Here’s what I did.

I created the following rule:

rule "test"
when
	Item AT_GuestRoom_Light_Toggle changed to OFF
then
	AT_Shutter_S_R.sendCommand(25)
end

Here’s the event log, when switching the AT_GuestRoom_Light_Toggle light from OFF to ON:

2019-02-13 19:33:13.798 [ome.event.ItemCommandEvent] - Item 'AT_GuestRoom_Light_Toggle' received command ON
2019-02-13 19:33:13.800 [nt.ItemStatePredictedEvent] - AT_GuestRoom_Light_Toggle predicted to become ON
2019-02-13 19:33:13.806 [vent.ItemStateChangedEvent] - AT_GuestRoom_Light_Toggle changed from OFF to ON
2019-02-13 19:33:13.808 [vent.ItemStateChangedEvent] - tradfri_0100_GATEWAY_ID_65553_brightness changed from 0 to 1
2019-02-13 19:33:13.808 [vent.ItemStateChangedEvent] - AT_GuestRoom_Light_Dimmer changed from 0 to 1

Here’s the event log, when switching the AT_GuestRoom_Light_Toggle light from ON to OFF (to trigger the rule):

2019-02-13 19:33:17.986 [ome.event.ItemCommandEvent] - Item 'AT_GuestRoom_Light_Toggle' received command OFF
2019-02-13 19:33:17.988 [nt.ItemStatePredictedEvent] - AT_GuestRoom_Light_Toggle predicted to become OFF
2019-02-13 19:33:17.996 [ome.event.ItemCommandEvent] - Item 'AT_Shutter_S_R' received command 25
2019-02-13 19:33:17.997 [nt.ItemStatePredictedEvent] - AT_Shutter_S_R predicted to become 25
2019-02-13 19:33:18.005 [vent.ItemStateChangedEvent] - AT_GuestRoom_Light_Toggle changed from ON to OFF
2019-02-13 19:33:18.005 [vent.ItemStateChangedEvent] - tradfri_0100_GATEWAY_ID_65553_brightness changed from 1 to 0
2019-02-13 19:33:18.008 [vent.ItemStateChangedEvent] - AT_GuestRoom_Light_Dimmer changed from 1 to 0
2019-02-13 19:33:18.009 [vent.ItemStateChangedEvent] - AT_Shutter_S_R changed from 0 to 25
2019-02-13 19:33:19.592 [vent.ItemStateChangedEvent] - AT_Shutter_S_R changed from 25 to 0

I tried using other values in AT_Shutter_S_R.sendCommand(), but so far only 0 and 100 seem to work for the Fakro ARZ roller shutters.

As you are defining your Things in manual text files I am not of any help. Only using PaperUI autodiscovery for Zwave…

I had to define the Z-Wave things by hand as the automatic Z-Wave binding was incorrectly defining my ARZ roller blinds as ZWS12 Chain Actuators.

Hi all,
I’m new to OpenHAB, and am on a steep home automation learning curve.
I think I’m having a similar problem described here, but with a different Fakro device.
We have the Fakro DEF roof window that is being picked up as a ZWS12 chain actuator. This is working well.
We have another window opener (purchased here) that I thought was also an ZWS12, but it isn’t being recognised.
I don’t think I am ready to do the manual configuration yet, so was wondering what it would take to get this added to the database too? I’ve added the .xml from the unknown device below.
I should add that both devices are Australian versions.
Any help much appreciated!
Cheers
Ben

<node>
  <homeId>0xc051aef1</homeId>
  <nodeId>3</nodeId>
  <version>4</version>
  <manufacturer>0x85</manufacturer>
  <deviceId>0x10</deviceId>
  <deviceType>0x2</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_MANUFACTURER_SPECIFIC</commandClass>
    <commandClass>COMMAND_CLASS_DEVICE_RESET_LOCALLY</commandClass>
    <commandClass>COMMAND_CLASS_ASSOCIATION</commandClass>
    <commandClass>COMMAND_CLASS_ASSOCIATION_GRP_INFO</commandClass>
    <commandClass>COMMAND_CLASS_POWERLEVEL</commandClass>
    <commandClass>COMMAND_CLASS_SWITCH_BINARY</commandClass>
    <commandClass>COMMAND_CLASS_SWITCH_MULTILEVEL</commandClass>
    <commandClass>COMMAND_CLASS_SWITCH_ALL</commandClass>
    <commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
    <commandClass>COMMAND_CLASS_ALARM</commandClass>
    <commandClass>COMMAND_CLASS_NODE_NAMING</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_ALARM</commandClass>
          <commandClass>COMMAND_CLASS_BASIC</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>BasicRepeat</name>
        <profile1>0x20</profile1>
        <profile2>0x1</profile2>
        <commands>
          <commandClass>COMMAND_CLASS_BASIC</commandClass>
        </commands>
        <associations/>
      </associationGroup>
    </entry>
    <entry>
      <int>3</int>
      <associationGroup>
        <index>3</index>
        <maxNodes>0</maxNodes>
        <name>MultilevelRepeat</name>
        <profile1>0x20</profile1>
        <profile2>0x1</profile2>
        <commands>
          <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_ALARM</commandClass>
            <COMMAND__CLASS__ALARM>
              <version>3</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>3</versionSupported>
              <alarms>
                <entry>
                  <alarmType>POWER_MANAGEMENT</alarmType>
                  <alarmState>
                    <alarmType>POWER_MANAGEMENT</alarmType>
                    <reportedEvents/>
                    <outer-class reference="../../../.."/>
                  </alarmState>
                </entry>
              </alarms>
              <v1Supported>true</v1Supported>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__ALARM>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_NODE_NAMING</commandClass>
            <COMMAND__CLASS__NODE__NAMING>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>1</versionSupported>
              <name>ZWS12</name>
              <location>UNKNOWN</location>
            </COMMAND__CLASS__NODE__NAMING>
          </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>
              </autoSubscribeGroups>
            </COMMAND__CLASS__ASSOCIATION__GRP__INFO>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_SWITCH_MULTILEVEL</commandClass>
            <multiLevelSwitchCommandClass>
              <version>3</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>3</versionSupported>
              <switchTypePrimary>CLOSE_OPEN</switchTypePrimary>
              <switchTypeSecondary>UNDEFINED</switchTypeSecondary>
              <isGetSupported>true</isGetSupported>
            </multiLevelSwitchCommandClass>
          </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_VERSION</commandClass>
            <COMMAND__CLASS__VERSION>
              <version>2</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>2</versionSupported>
              <libraryType>LIB_SLAVE_ENHANCED</libraryType>
              <protocolVersion>4.33</protocolVersion>
              <applicationVersion>1.1</applicationVersion>
              <hardwareVersion>25</hardwareVersion>
            </COMMAND__CLASS__VERSION>
          </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_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_BINARY</commandClass>
            <COMMAND__CLASS__SWITCH__BINARY>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>1</versionSupported>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__SWITCH__BINARY>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_BASIC</commandClass>
            <COMMAND__CLASS__BASIC>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>1</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>3</maxGroups>
            </COMMAND__CLASS__ASSOCIATION>
          </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_MANUFACTURER_SPECIFIC</commandClass>
            <COMMAND__CLASS__MANUFACTURER__SPECIFIC>
              <version>1</version>
              <instances>1</instances>
              <control>false</control>
              <versionSupported>2</versionSupported>
              <initSerialNumber>false</initSerialNumber>
              <deviceManufacturer>133</deviceManufacturer>
              <deviceType>2</deviceType>
              <deviceId>16</deviceId>
            </COMMAND__CLASS__MANUFACTURER__SPECIFIC>
          </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_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>
        </supportedCommandClasses>
      </endPoint>
    </entry>
  </endpoints>
  <nodeNeighbors>
    <int>1</int>
    <int>2</int>
  </nodeNeighbors>
  <lastReceived>2019-03-19 00:57:07.143 UTC</lastReceived>
</node>

Dear @sihui and others

I was working with other shutters these days, but I think one statement that applies to all type of:
If the device is not reporting position states other than 0 or 100, then it is not possible to set it to a position in between.

I think this is also mentioned in other threads.

Cheers
Stefan

I think it would make sense to keep track of the actual capabilities of some Z-Wave things that seemingly incorrectly report their capabilities (maybe the Z-Wave standard distinguishes between MANDATORY and OPTIONAL capabilities) and use their reported info as mere “index”.

I would even suggest trying to probe certain Z-Wave devices for capabilities they don’t report (e.g. battery-related commands to remotes that don’t seem to report this capability in their NIF.

But implementing this, would be a significant change to the Z-Wave binding (allowing to override the reported capabilities).

This will cause timeouts, which will cause system level impacts (ie slowing down the network).

The database can do this - if we know that a device supports something that it’s not reporting, then we can add this to the database.

However, I’m not really sure that’s what @smhaller meant? Different command class versions support different features - I understood the comment above that with the version that doesn’t report states other than 0 and 100, then this version doesn’t support setting such positions - but I might be wrong.

@shutterfreak
I’m not going to comment on your suggestion

@chris is saying correct.

I was reading several threads within the OH forums about rollershutter, but not only. To find out how I have to configure my ones. I work with the qubinos and here we have a device which is capable to control shutter position. But only after initial configuration -> exclusion and fresh inclusion.
So out of the box, they don’t report position other than 0 and 100

I’ve read about the difficulties with fibaros rollershutter regarding the same subject. Turning out they have issues with positioning even if they are in theory capable to do so.

Coming back to Fakro device:
Maybe it would be possible to control position, but I would expect that the device in this case also would report the position already. Or and now let’s open the bubble, maybe they also have such a special procedure to be done, before they allow - as with the qubinos.

BTW: I didn’t manage it yet to get this done… Still playing around with it.

Cheers
Stefan

It won’t work with the earlier models (reported as Class B motor controller) as they only have 2 positional switches (fully open, fully closed), which are calibrated when they are first powered.

The Fakro remotes allow you to operate the roller shutters either with short presses (full up, full down, stop) or long presses (move until the button is released).

There is inconsistent information about the presence of encoders on the roller shutters. I believe the encoders only serve calibration purposes.

What you could try, is to emulate the positional motion by using a timer: send up/down, then send stop after x seconds. But you’ll have to live with the delays in the Z-Wave network (e.g., harder to reach roller shutter requiring multiple wake-up attempts before being able to issue the commands. You’ll never have true positional feed-back, but you could at least try to operate it in steps this way.

Apparently Fakro issued upgrades to their Z-Wave devices, which now report Z-Wave plus support and Motor Control Category C with actual positional feedback. That is something to be followed up.

I think I’ve said earlier - the device classes aren’t especially relevant - what IS relevant is the command class version.

Do you know what this is?

Maybe this helps
According to the german user manual for ARZ ZWave on page 3. It consists of 3 endpoints.

  • Complete down
  • Complete up
  • protective switch (if someone touches it or any other kind of)

There is nothing written about explicit positioning.
For sure you can operate it with the Fakro remotes as (ZWK, ZWG, ZWP10 or other similar 3rd party products) and stop it at a certain level (manually).

So my guess would be to control the positioning not with shutters itself but through the switches that control the shutters, and those should probably also report the position therefore, but it’s really just a guess.

Cheers
Stefan