This is pretty obscure, and is really only just barely an OpenHAB thing. Posting here in case someone can help.
TLDR: Cannot seem to get Tradfri Remote Zigbee bind targets working using the OpenHAB Zigbee binding.
Some coarse info:
- OpenHAB 3.2.0-1 via package on Ubuntu 20.04
- Zigbee via native binding and Nortek HUSBZB-1 (EM3581)
- Ember coordinator
- IKEA Fyrtur blind working great via the OpenHAB Zigbee binding
- IKEA Tradfri Blind Remote
Long post for some useful information I did not see elsewhere in my extensive Google / forum reading. Skip down to Problem for where I got stuck.
Early last year I added a few IKEA Fyrtur blinds in my house, which was technically my first foray into Zigbee devices. I have historically homogenized on Z-Wave for all home automation stuff where possible, using the zwave binding. I originally was using the IKEA Tradfri Gateway and connecting it to OpenHAB via the Tradfri Binding.
My Tradfri Gateway (probably just a bad unit) became decreasingly stable over the 1+ year it was in-use. It got bad enough that I put it behind a Z-Wave outlet and wrote a rule in OpenHAB to bounce it when it went offline. Since the remotes still controlled the blinds even with the gateway offline fixing it was not a super high priority.
Recently I decided to move all the blinds and remotes over to OpenHABās direct control, removing the IKEA Gateway / Coordinator from the mix. There were two paths to doing this as I understood it. One using Zigbee2MQTT to operate the Zigbee network, accessed from OpenHAB through the MQTT binding. The other using the native Zigbee binding. I went the native Zigbee binding route.
Getting the blinds to join and be controllable was an adventure of its own. I had upgraded my HUSBZB-1 to firmware 6.7.8.0 via this project. With that firmware I had recurring issues with the devices going offline. I eventually found and upgraded the stick to 6.7.10.0 via the firmware on this site. I performed the upgrade directly with the Zigbee binding from the firmware here:
openhab> zigbee firmware /tmp/NCP_USW_EM3581_6710-57k6-W.ebl
With that done, the blinds, remote, and repeater from the Fyrtur package join the network fine and stay online.
Skipping a few steps (and I can elaborate for those trying to replicate that success in the thread if desired), I got to the point of wanting to configuring the Tradfri Remote to directly talk to the blind. The basics of this are outlined in the zigbee2mqtt here.
My Problem:
I cannot seem to get the equivalent to that process to work via zigbee commands on the OpenHAB console, and I do not understand the errors.
The Zigbee binding sees the devices just fine:
43252 A8F4 804B50FFFE241D2D END_DEVICE ONLINE 1 ZIGBEE_HOME_AUTOMATION WINDOW_COVERING_CONTROLLER IKEA of Sweden TRADFRI open/close remote
60576 ECA0 804B50FFFE095D6C END_DEVICE ONLINE 1 ZIGBEE_HOME_AUTOMATION WINDOW_COVERING_DEVICE IKEA of Sweden FYRTUR block-out roller blind
When freshly admitted to the network. the default bindtable for the remote device had the coordinator for all his bindings:
openhab> zigbee bindtable 804B50FFFE241D2D
Binding table for node 43252 [804B50FFFE241D2D]
Src Address | Dest Address | Group | Mode | Cluster
804B50FFFE241D2D/1 | 000D6F0017207B20/1 | | Address | 0001:POWER_CONFIGURATION
804B50FFFE241D2D/1 | 000D6F0017207B20/1 | | Address | 0008:LEVEL_CONTROL
804B50FFFE241D2D/1 | 000D6F0017207B20/1 | | Address | 0006:ON_OFF
I have edited the table to set the blind as the bind target for those three clusters:
zigbee bind 0008 43252/1 60576/1
zigbee bind 0006 43252/1 60576/1
zigbee bind 0001 43252/1 60576/1
zigbee unbind 0008 43252/1
zigbee unbind 0006 43252/1
zigbee unbind 0001 43252/1
The remote is firmware version 2.2.010, which according to the Zigbee2MQTT docs only supports address targets, not group targets.
After making the change, the remote is still not directly controlling the blinds. In debug mode, the OpenHAB console reports this when events are generated from the device when I press up or down on it:
2022-05-29 21:57:24.922 [DEBUG] [zigbee.dongle.ember.ZigBeeDongleEzsp] - RX EZSP: EzspMessageSentHandler [networkId=0, type=EMBER_OUTGOING_BROADCAST, indexOrDestination=FFFF, apsFrame=EmberApsFrame [profileId=0104, clusterId=0102, sourceEndpoint=1, destinationEndpoint=255, options=[EMBER_APS_OPTION_ENABLE_ROUTE_DISCOVERY], groupId=0, sequence=00], messageTag=00, status=EMBER_SUCCESS, messageContents=]
2022-05-29 21:57:24.923 [DEBUG] [tsystems.zigbee.ZigBeeNetworkManager] - RX STA: msgTag=00 state=RX_ACK
2022-05-29 21:57:24.924 [DEBUG] [transaction.ZigBeeTransactionManager] - notifyTransactionProgress: TID=00, state=RX_ACK, outstanding=0
2022-05-29 21:57:28.052 [DEBUG] [zigbee.dongle.ember.ZigBeeDongleEzsp] - RX EZSP: EzspMessageSentHandler [networkId=0, type=EMBER_OUTGOING_BROADCAST, indexOrDestination=FFFF, apsFrame=EmberApsFrame [profileId=0104, clusterId=0102, sourceEndpoint=1, destinationEndpoint=255, options=[EMBER_APS_OPTION_ENABLE_ROUTE_DISCOVERY], groupId=0, sequence=01], messageTag=00, status=EMBER_SUCCESS, messageContents=]
2022-05-29 21:57:28.053 [DEBUG] [tsystems.zigbee.ZigBeeNetworkManager] - RX STA: msgTag=00 state=RX_ACK
2022-05-29 21:57:28.054 [DEBUG] [transaction.ZigBeeTransactionManager] - notifyTransactionProgress: TID=00, state=RX_ACK, outstanding=0
So it looks like it sends out a broadcast, but the payload is empty?
Lastly, it seems like the remote has client cluster support for 0102 but that cluster is not usable with the zigbee bind command. That might not be a thing, but it made me scratch my head. Some partial output from the āzigbee endpoint 43252/1ā command:
Output Clusters : (Client)
0003 Identify
- APS Security disabled
0004 Groups
- APS Security disabled
0006 On/Off
- APS Security disabled
0008 Level Control
- APS Security disabled
0019 Ota Upgrade
- APS Security disabled
S 0 r-- IEEE_ADDRESS Upgrade Server ID
S 1 r-- UNSIGNED_32_BIT_INTEGER File Offset
S 2 r-- UNSIGNED_32_BIT_INTEGER Current File Version Sun May 29 21:33:27 EDT 2022 570492465
S 3 r-- UNSIGNED_16_BIT_INTEGER Current ZigBee Stack Version
S 4 r-- UNSIGNED_32_BIT_INTEGER Downloaded File Version
S 5 r-- UNSIGNED_16_BIT_INTEGER Downloaded ZigBee Stack Version
S 6 r-- ENUMERATION_8_BIT Image Upgrade Status
S 7 r-- UNSIGNED_16_BIT_INTEGER Manufacturer ID
S 8 r-- UNSIGNED_16_BIT_INTEGER Image Type ID
S 9 r-- UNSIGNED_16_BIT_INTEGER Minimum Block Request Period
S 10 r-- UNSIGNED_32_BIT_INTEGER Image Stamp
0102 Window Covering
- APS Security disabled
1000
- APS Security disabled
It is worth noting that what the remote presents as channels to OpenHAB is also really strange, and no changes are ever noted when I create Items tied to the channels. I do not actually care about that, but it came as some surprise.
Sorry for the War and Peace volume of text here. I have spent most of the weekend trying to get this to behave. I am extremely close to what I wanted originally (blind control via OpenHAB works great) with the remote also sending commands to the blinds. I can see the commands supported through the binding easily enough:
openhab> zigbee cmdsupported 43252/1 0006
Supported generated commands for client cluster On/Off (0006)
CommandId Command
0 OffCommand
1 OnCommand
2 ToggleCommand
Supported received commands for client cluster On/Off (0006)
CommandId Command
I just cannot seem to get them mapped to a binding target on the blind, presumably to destination cluster 0102? Or are commands only sent between ālikeā clusters?
Thanks for reading and for any suggestions.