ZWS12 Unrecognised Zwave Device

Yes, this is displaying the same information as discussed above from the XML - it’s all exactly the same…

The question still remains if this isn’t correctly identified, then we need to work out how to differentiate it from the other similar devices.

From what I understand, either Fakro reused the same Z-Wave parts throughout their product range without bothering about subsequent identification; or 0085:0003:0001 was historically included as ZWR12 since that profile was available first (deliberate incorrect assignment due to earlier absence of ARZ profile).

I suppose there’s currently no means to (locally) override a Z-Wave device assignment to address such cases?

If that is really true, and even the firmware is the same, then there’s no way to differentiate them. The question I still have is if the firmware version can be used fo differentiate them?

If you manually define the things in a thing file, then you can define it as any thing type (ie you can select the thing type in the thing file).

From the cd-jackson DB entries it appears that the command classes differ across the chain actuator and the roller shutters.

I think I’ll give that track a go. I didn’t know it was possible.

That didn’t work.

I first created a Thing description in /etc/openhab2/things.fakro.things, taking into account the requirements for manually defining Z-Wave Things:

Thing zwave:device:1a2b3c4d:node2 "Fakro ARZ Z-Wave Roller Shutter 1" (zwave:serial_zstick:controller) [
        zwave_nodeid=2,
        zwave_manufacturer=133,
        zwave_deviceid=2,
        zwave_devicetype=2,
        zwave_version="2.1"
]

As you can see, I try to manually override the zwave_devicetype (3 → 2) and zwave_deviceid (1 → 2) in the hope that I would then overrule the Z-Wave bindings communicated by the roller shutters, and let OpenHAB pick the ARZ entry instead of the ZWR12 entry from the Z-Wave product DB.

Then I deleted the Thing in paper UI, and manually searched for new Things.

The Thing appears with status: UNINITIALIZED - BRIDGE_UNINITIALIZED.

So obviously I’m doing something wrong.

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).