Zigbee siren payload

Hi all,
I’ve just purchased a Zigbee siren and looking at its specifications seems that I need to send this payload in order to make it sound

Any idea on how to produce that output with Zigbee.Command function?


Hey Gabriele,

So it looks like the clip you posted was pulled from the ZCL spec, specifically from the IAS WD section! We do have a DTH for a Zigbee siren that uses this cluster which can be found here: ozom-smart-siren.groovy. It is my guess this DTH may actually do everything you want, but in the case you want to move ahead writing your own I’ll attempt to answer your original question.

Lets take a look at how the above DTH is handling sending this command to the siren. If we look down in the on() function we can see the following line:

zigbee.command(IAS_WD_CLUSTER, COMMAND_IAS_WD_START_WARNING, "13", DataType.pack(warningDuration, DataType.UINT16), "00", "00")

So we can break this down a little bit to see what it is doing. The first value we pass to zigbee.command is the cluster that we are referencing; in this case the IAS WD cluster. The second value we pass to the cluster is going to be the command within said cluster that we want to send a message to, START WARNING in this example. The parameters after this are going to form the payload of the command we send.

We know based off the comment associated with the above line that this line is going to start warning with mode set to burglar without using the strobe but with the siren set to very high. If we go back and reference the ZCL spec we can see that this correlates to the following values:

  • Warning Mode Burglar: 0b0001
  • Strobe Off: 0b00
  • Siren Very High: 0b11

Which when combined given the payload layout you posted we get the bitmap: 0b00010011
If we now convert this binary value to a hexadecimal value we get 0x13, which we can see is the 3rd parameter passed into the zigbee.command function. (note: we drop the 0x when passing it in as a string)

Again, referencing the diagram you posted we can work through the next 2 bytes that need to be passed. These 2 bytes represent how long we want the duration to last. In the DTH I posted above we can see how you can pass in variable values using the helper function DataType.pack().

In the example DTH posted the last two bytes that we pass in are both just set to 0x00 which would correlate to a duty cycle of 0 and a strobe level of Low level strobe according to the ZCL spec.

Taking this knowledge you can look at the off() function in the example DTH and see how it formats a command that would turn a siren off! Hopefully this makes sense and will help you out to write some custom DTH’s :slight_smile:


@BroderickCarlin Sorry to bump this topic but I’ve been trying to configure a Climax Technology external zigbee siren and I used the Ozom Smart Siren as the base and your response has been very helpful.
It does kinda work but I’ve been having some problems to set Squawk on the IAS_WD cluster.
I’ve been trying to send a 00 to it:


But I get a:

java.lang.IllegalArgumentException: Needs to be string or int, received null value: null @line 162 (both)

I am very new to this so bear with me :slight_smile:

Where did you buy this from if you don’t mind me asking? I just purchased the HEIMAN Siren, and I’m about to attack a DTH for it too. I’ll be curious if the handler @BroderickCarlin references will work for me, or if I’ll need to do some tweaking.

Bought it from EBay UK ( search for Smart Home Outdoor Siren ), it’s a SwannOne siren.
I managed to get the Off/Strobe/Both working (Siren does it with the strobe, still working on it) but I want to tweak something that bothers me. The siren sometimes beeps out of the blue and I believe it’s because of the Squawk on arm/disarm.

1 Like

Cool, thanks for the quick reply @xhemp . I got mine from Aliexpress.

EDIT: Looks like the stock DTH should work for me based upon the fingerprint: deviceJoinName: “HEIMAN Smart Siren”

I’ll be curious see see how your progress goes.

No worries! Hope it works out of the box for you.
Will let you know how it goes.

1 Like

Hey @xhemp, wanted to touch base and see if you had made any progress on this. I’m not seeing anything obviously wrong with the snippet you posted from either a groovy or ZCL standpoint

Hey @BroderickCarlin, thanks for getting back to me.
I couldn’t get it to acceptthat at all, I always get an error.
I know it’s a different siren but I was expecting the commands to work according to the spec, maybe the reason it doesn’t is because they really didn’t follow the spec with this particular siren (ie: missing bits, etc)?
I’ve been trying to use that to see if I can sort out the tone the siren does out of the blue (which my neighbours won’t be happy about if it comes at 4AM); it seems to be a response to something that is requested or a status report, perhaps?
I did email Climax and also SwannOne (which sell this particular siren) to no avail, no response from them.


1 Like

Are you willing to share the DTH you have written? That may be easier for us to help pinpoint where the issue may be :slight_smile:

Continuing the discussion from Zigbee siren payload:

Thanks, Tony, I didn’t have that defined at the beginning, I just defined it, there’s no error anymore but sending the squawk command (as per the ZCL spec), just gets the siren ringing which doesn’t make a lot of sense.

Hello BroderickCarlin,
I haven’t been writing this from scratch, I got the Ozom Siren DH and I am just trying to modify it to see if I am able to get this Climax siren issue sorted out. The strobe/both works fine, the siren always use the strobe (tried different combinations to no avail). I wish I had the skills to build it from scratch :slight_smile:

1 Like


Quick question? Using your example way up on the second post, if I want to turn on the strobe would I send hex “17”, assuming strobe ON is 0b01?

EDIT: That worked!!! Siren and strobe now work. Holy cow is this thing loud.

1 Like

@johnconstantelo I am trying to build a similar DTH. I was expecting the squawk sound to be for a short duration, but for me it goes on continuously. Are you happy to share your DTH for reference? Thanks.

You bet!


1 Like

Thanks. I see that your are not using the squawk command.

1 Like