Zigbee2mqtt: Siren management

Cool that it moved forward last week with @AlexTrovato’s review :slight_smile:

I left feedback:

I’ve started working on the fixes but I’m a bit swamped at the moment.
I’ll let you know when it’s done

Yes, as for the enum, we’ll have to get to it, but not in this PR!
Sorry for the ambiguity.

@pierre-gilles, I’ve fixed the PR.

@_Will_71 Thanks for the fixes!

I think there’s a SIREN.VOLUME that was left :stuck_out_tongue:

Did you re-test the PR with the hardware after these changes?

Oops sorry I thought I had changed everything.:sad_but_relieved_face:
I’ll take care of it tonight and I’ll run another live test.

It’s good this time, it’s fixed and re-tested in real conditions!

Thanks @_Will_71 :slight_smile:

Looks good to me, I’ve approved and merged the PR into master :raising_hands:

As soon as I have time I’ll try to finish the other mermaid.

Support for the NEO siren is available in Gladys Assistant 4.38.3 :partying_face:

So, the others aren’t working yet, is that right?

To be confirmed by @_Will_71 but I don’t think so

Each siren is specific, so this only concerns the NEO.
But I haven’t forgotten you and I’m still working on yours; I just have less time at the moment because of my job.
Also, on yours there’s a specific type that complicates the task a bit, and I also have to create a new graphical component for selecting the ringing mode.

Good evening @_Will_71
Could you briefly explain how to interact with your new siren management?
I have a Neo, but it doesn’t work with zigbee2mqtt, only with the original functions. I recreated an MQTT siren but there is no link to my

I don’t really understand your request because you just need to add it to the zigbee2mqtt integration
There is no link between a device created with MQTT and the zigbee2mqtt integration.

So you need to pair your siren with zigbee2mqtt. Then you can access it in the zigbee2mqtt devices

And then you can add it to the dashboard, create scenes…
![image|302x499](upload://qeP1IiqXGzf2c807W3nMm

I have a Neo bought on AliExpress and its expose looks like this :


et dans zigbee2mqtt de Gladys, j’ai ça :

I don’t have the melodies command — I can only trigger them and set the duration of the signal.

Did you go to Zigbee Discovery in the Gladys integration to update your siren?

[quote="_Will_71, post:57, topic:

This concerned the addition of features for a zigbee2mqtt device, so it was necessary to manually update the zigbee2mqtt integration.

No problem. Have a good evening.

@pierre-gilles,

I could really use your insight because I’m stumped and I don’t see at all how to integrate the composite type of the Woox siren.
Where I’m struggling is mixing the different types (enum, numeric, binary) in the composite.
I managed, for testing, to handle the mode but I had to copy the enum functions into the composite.
When you have a bit of time to take a look… thanks in advance.

Below is the device JSON.

{
	"date_code":"20190430",
	"definition": {
		"description":"Smart siren",
		"exposes":[
			{
				"access":1,
				"category":"diagnostic",
				"description":"Remaining battery in %, can take up to 24 hours before reported",
				"label":"Battery",
				"name":"battery",
				"property":"battery",
				"type":"numeric",
				"unit":"%",
				"value_max":100,
				"value_min":0
			},
			{
				"access":1,
				"category":"diagnostic",
				"description":"Voltage of the battery in millivolts",
				"label":"Voltage",
				"name":"voltage",
				"property":"voltage",
				"type":"numeric",
				"unit":"mV"
			},
			{
				"access":2,
				"features": [
					{
						"access":2,
						"description":"Mode of the warning (sound effect)",
						"label":"Mode",
						"name":"mode",
						"property":"mode",
						"type":"enum",
						"values":["stop","burglar","fire","emergency","police_panic","fire_panic","emergency_panic"]
					},
					{
						"access":2,
						"description":"Sound level",
						"label":"Level",
						"name":"level",
						"property":"level",
						"type":"enum",
						"values":["low","medium","high","very_high"]
					},
					{
						"access":2,
						"description":"Intensity of the strobe",
						"label":"Strobe level",
						"name":"strobe_level",
						"property":"strobe_level",
						"type":"enum",
						"values":["low","medium","high","very_high"]
					},
					{
						"access":2,
						"description":"Turn on/off the strobe (light) during warning",
						"label":"Strobe",
						"name":"strobe",
						"property":"strobe",
						"type":"binary",
						"value_off":false,
						"value_on":true
					},
					{
						"access":2,
						"description":"Length of the flash cycle",
						"label":"Strobe duty cycle",
						"name":"strobe_duty_cycle",
						"property":"strobe_duty_cycle",
						"type":"numeric",
						"value_max":10,
						"value_min":0
					},
					{
						"access":2,
						"description":"Duration in seconds of the alarm",
						"label":"Duration","name":"duration","property":"duration","type":"numeric","unit":"s"
					}
				],
				"label":"Warning",
				"name":"warning",
				"property":"warning",
				"type":"composite"
			},
			{
				"access":1,
				"label":"Alarm","name":"alarm","property":"alarm","type":"binary","value_off":false,"value_on":true
			},
			{
				"access":1,
				"description":"Is the device plugged in",
				"label":"Ac connected",
				"name":"ac_connected",
				"property":"ac_connected",
				"type":"binary",
				"value_off":false,
				"value_on":true
			},
			{
				"access":7,
				"description":"Volume of siren",
				"label":"Volume",
				"name":"volume",
				"property":"volume",
				"type":"numeric",
				"value_max":100,
				"value_min":0
			},
			{
				"access":7,
				"description":"Duration of siren",
				"label":"Duration",
				"name":"duration",
				"property":"duration",
				"type":"numeric",
				"value_max":3600,
				"value_min":0
			},
			{
				"access":1,
				"category":"diagnostic",
				"description":"Link quality (signal strength)",
				"label":"Linkquality",
				"name":"linkquality",
				"property":"linkquality",
				"type":"numeric",
				"unit":"lqi",
				"value_max":255,
				"value_min":0
			}
		],
		"model":"R7051",
		"options":[],
		"supports_ota":false,
		"vendor":"Woox"
	},
	"disabled":false,
	"endpoints":{"1":{"bindings":[{"cluster":"genPowerCfg","target":{"endpoint":1,"ieee_address":"0x00124b00258d750f","type":"endpoint"}}],
	"clusters":{"input":["genBasic","genPowerCfg","genIdentify","genGroups","genScenes","ssIasZone","ssIasWd","61183"],"output":["genIdentify","genOta"]},
	"configured_reportings":[{"attribute":"batteryVoltage","cluster":"genPowerCfg","maximum_report_interval":65000,"minimum_report_interval":3600,"reportable_change":0},{"attribute":"batteryPercentageRemaining","cluster":"genPowerCfg","maximum_report_interval":65000,"minimum_report_interval":3600,"reportable_change":0}],"scenes":[]},"friendly_name":"0x9035eafffe64e24f","ieee_address":"0x9035eafffe64e24f","interview_completed":true,"interviewing":false,"manufacturer":"_TYZB01_ynsiasng","model_id":"TS0219","network_address":14750,"power_source":"Mains (3 phase)","supported":true,"type":"Router"}]
}