How to connect Busch-Jaeger ZLL battery switches to hub? (DTH in post 9)



Can’t get the switch connected to the ST hub. Do I have to create a device handler first?

According to the manufacturer’s website it’s compatible with the ZigBee Light Link protocol.

Detect Busch Jaeger ZLL (Zigbee) button press?

Nice looking switch!

The SmartThings hub uses the ZHA profile instead of ZLL. So associating ZLL switches with it is a little complicated, but not necessarily impossible.

@Sticks18 has probably done the most with these type of devices.

(Scott G) #3

You shouldn’t need a device handler to get it connected to the hub, but you will most likely need one to get it to function properly. You should be able to get it to join the zigbee network, and it will show up as “Thing” to ST. In fact, it may have joined in this way already if you’ve tried to pair it; but the mobile app doesn’t always show you that something joined the network when it can’t identify the device. Check your Things tab in the app for something called “Thing”.

If it’s not there and you’ve followed the devices join procedure and pressed Connect New Device in the mobile app, then it’s possible the device can’t join a ZHA network. Usually ZLL devices are backward compatible with ZHA in some fashion, so it would surprise me if the device wouldn’t join the network.

Once you have it joined, then the fun begins trying to write a device handler for it. You could try the Hue Dimmer Switch code I wrote as it’s a battery operated ZLL switch, but you might have to write a new one.


JDRoberts thanks for pointing me in the right direction. Did some reading on the ZigBee profiles and device handlers in the meantime.

Understood from the ST documentation that for unknown devices I have to write a device handler in Groovy. As I don’t know how to write code in Groovy I’m hoping to get away by using the code of a similar switch and to adapt it.

First thing I’m wondering about is how to discover and address that switch. Understood every ‘Thing’ has a ZigBee ID. Do you or @Sticks18 know how to see all known and unknown devices in range?


Was typing too slowly :wink: Thanks for the explanation how to get the switch connected to the hub. I’ll try this first and then try to adapt your code for the Busch-Jaeger switch.


The following topic is my favorite example of how someone who wasn’t familiar with zigbee was able to build a new Zigbee device handler from scratch with the help of the community. The device is a ZHA key fob with three buttons.

You may not need this at all, especially if the device handler that @Sticks18 mentioned is close to what you need, but you might find the process interesting:


The switch was indeed already linked as a “Thing”. I started reading the Securifi Key Fob thread which is very interesting for me as it explains how to obtain the cluster description from the log when the switch joins the hub.

So I followed the instructions and got following from the log:
desc: 0A C05E 0810 02 02 0000 1000 08 1000 0003 0006 0008 0004 0005 0300 0019

I took a sample code and amended the fingerprint to:
fingerprint profileId: “C05E”, deviceId: “0810”, inClusters: “0000, 1000”, outClusters: “1000, 0003, 0006, 0008, 0004, 0005, 0300, 0019”

No clue what all these clusters mean but the switch shows up in the Device List as Busch-Jaeger (as I had defined at the beginning of the code).

The switch is still useless as nothing happens but I’ll have a closer look tomorrow at the Hue Dimmer code in the hope to understand something which helps me with my switch. It gonna be a slow process and I don’t have much spare time for the moment.

Any advise on what to focus next?

(Scott G) #8

You’ll have your work cut out for you! Here’s a little info on the clusters and how this switch is designed:

inClusters are clusters that can receive commands like read attribute requests or cluster specific commands.
0000 - Basic cluster holds info about the device (manufacturer, model id, firmware version)
1000 - This is the ZLL commissioning cluster. It’s used to join ZLL devices using the Light Link standard.

outClusters are clusters that can send commands to other devices.
1000 - ZLL again. The switch can create its own ZLL network acting as a coordinator and can join other ZLL devices.
0003 - Identify cluster. Used during setup to trigger identifying actions on devices like flashing a light bulb.
0004 - Groups. Cluster for setting up and managing zigbee groups
0005 - Scenes. Cluster for setting up and managing zigbee scenes
0006 - On/off. Cluster for controlling on/off functions of other devices
0008 - Level control. Cluster for controlling the level of other devices, typically dim level of lights.
0300 - Color control. Cluster for controlling the color of other devices.
0019 - Over the Air Upgrade cluster for receiving firmware updates from a coordinator.

As far as I can tell, this switch is designed to control a single lighting scene turning it on with one button and off with the other. The lighting scene would trigger other ZLL lights to a predetermined on/off state, dim state and color setting depending on the capabilities of the bulb. You may run into trouble getting it to report back to the ST hub because it most likely accomplishes this using broadcast messages (one message to multiple devices) as opposed to unicast messages. The ST hub is not setup for broadcast messages, which is the reason the Lutron Connected Bulb remote can’t be used as a button controller. Most likely the same story here.

Your best bet is to try and bind the various outClusters to the hub, so that the hub is notified when the switch sends out messages. This is what the Hue Dimmer Switch code does. The main difference is that the Hue Dimmer switch always sends distinct commands for each button press. I’m not sure that’s true for this switch.

You might be able to configure this switch to control other zigbee lights you have directly although I’m not sure what that process would look.


Sorry for replying only now. It was a busy week for me, first the battery of the Busch-Jaeger switch was empty (according to the manufacturer it’s supposed to last for three years) and then my second daughter was born last Friday. More important ‘things’ to do :wink:

Anyhow I finally managed to fiddle around with the SmartThings hub and the Busch-Jaeger light switch.

Basically I’ve taken the Hue Dimmer Switch code from @Sticks18, amended the fingerprint and removed some lines which seemed unnecessary for a two button light switch. I’ll describe briefly the steps I’ve done to rule out I didn’t do it correctly.

  1. I’ve copied the Hue Dimmer code and pasted it into a new Device Handler.
  2. Amended the fingerprint.
  3. Removed some (to me) unnecessary code lines for a two button light switch and did some other minor changes.
  4. Saved the new Device Handler and published it to me.
  5. Placed the battery in the switch and did a reset according the manufacturer’s device manual.
  6. ST hub recognized it as a “Thing”.
  7. Manually changed the Device Type in “My Devices” to the newly created Device Handler.
  8. Nothing happens when I press one of the two buttons except that the LED flashes six times.

My intermediate goal was to get the switch paired and to analyze what kind of signal the switch sends when I press a button but I already got stuck. With my limited (not existing) ST groovy knowledge I believed it would be sufficient to adapt the fingerprint and to bind the buttons in the “def configure” paragraph to see some action in the device log or live log. There’s nothing!

How can I see what signal is send to the hub when I press a button on the switch? Does the below code look right so far?