New Siren integration - cannot find the service?

I have upgraded to the latest release and then added a new Zipato NE-NAS-AB02Z siren into my Zwave-JS configuration, it has been added fine but I cannot see any service called siren.xxx that I can call ?

Are only certain device manufactures or models supported, if so is their a list somewhere ?

Thanks.

That is not a Z-Wave device supported as a siren. It does not implement the Sound Switch Command Class. You would just use the switch entity for on/off and configuration parameters to change the volume and tones.

Ah OK, thanks, I’ll try and work out how to change the configuration parameters then.

Hmm, there is no parameter to set whether you want music or alarm.

It seems it listens for notification reports from other devices, such as door contact sensor, then reacts to that as opposed to a specific command :frowning_face:

What does the switch do?

Switch triggers the alarm always, irrespective of any configuration parameter changes.

Your siren is a little similar to this one. It sounds like a Notification Report will play the “alarm”, and a Basic Set command will play the “doorbell”. And from your report, the binary switch controls the “alarm” sound?

HA does not currently support sending Notification Reports (if ever?), so you can’t control the “alarm” sound with it. You can issue this command from zwavejs2mqtt. However, if the binary switch entity already controls this sound, then you don’t need to send Notification Reports.

According to the manual, sending Basic Set with value 0x2 will play the “doorbell” music, see parameter 2:

This parameter defines the doorbell music duration time when siren receives a door/window sensor notification report or an alarm command (BASIC_SET=0x02) from a controller.

You can send a Basic Set command with the zwave_js.set_value service. So if you want to play the “doorbell” music, you can use this (but be aware of this open issue). The service data would look like this, just add the target device or entity.

service: zwave_js.set_value
data:
  command_class: '32'
  property: targetValue
  value: 2

Hello,

Thanks for your reply, I tried the zwave_js.set_value you posted but I am hitting that open issue it seems.

Log Details (ERROR)

Logger: homeassistant.components.websocket_api.http.connection
Source: components/zwave_js/services.py:389
Integration: Home Assistant WebSocket API ([documentation](https://www.home-assistant.io/integrations/websocket_api), [issues](https://github.com/home-assistant/home-assistant/issues?q=is%3Aissue+is%3Aopen+label%3A%22integration%3A+websocket_api%22))
First occurred: 11:07:08 (2 occurrences)
Last logged: 11:08:31

[547530801360] Error handling message: Unknown error

Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 25, in _handle_async_response await func(hass, connection, msg) File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 525, in handle_execute_script await script_obj.async_run(msg.get("variables"), context=context) File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1219, in async_run await asyncio.shield(run.async_run()) File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 353, in async_run await self._async_step(log_exceptions=False) File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 371, in _async_step await getattr(self, handler)() File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 571, in _async_call_service_step await service_task File "/usr/src/homeassistant/homeassistant/core.py", line 1491, in async_call task.result() File "/usr/src/homeassistant/homeassistant/core.py", line 1526, in _execute_service await handler.job.target(service_call) File "/usr/src/homeassistant/homeassistant/components/zwave_js/services.py", line 389, in async_set_value success = await node.async_set_value( File "/usr/local/lib/python3.9/site-packages/zwave_js_server/model/node.py", line 414, in async_set_value raise NotFoundError(f"Value {val} not found on node {self}") zwave_js_server.exceptions.NotFoundError: Value 42-32-0-targetValue not found on node Node(node_id=42)

I’ll keep tracking that issue.

Regards.

Hi @fireplex have you got this to work at all?
I have two of these NE-NAS-AB02Z by Zipato and neither work as a doorbell in HA.
Like you, I can trigger the generic alarm via the switch but not the doorbell chime.

In the Developer Tools I tried calling the zwave_js.set_value service with the options described above by @freshcoast but that doesn’t work for my devices:

service: zwave_js.set_value
data:
  command_class: '32'
  value: 2
  property: targetValue
target:
  device_id:
    - a881af928e176582e9c28756f2688a2b
    - 70a59d0d034277993b5ad00e9820f584

Returns error: NotFoundError: Value 12-32-0-targetValue not found on node Node(node_id=12)

After some poking around I can get these to sound something like a doorbell if I send “Indicator value” command_class: '135' with value: 4 but this will play a doorbell chime continuously without stopping, no matter what I set the PARAMETER 3 Doorbell Duration to:

service: zwave_js.set_value
data:
  command_class: '135'
  value: 4
  property: value
target:
  device_id:
    - a881af928e176582e9c28756f2688a2b
    - 70a59d0d034277993b5ad00e9820f584

I then have to send command_class: '135' again with value: 0 to stop it.

Based on this I can probably create an automation that will send Value: 4 then wait a couple of seconds and then send Value: 0 but it doesn’t seem to be an elegant solution and most likely not how this was intended to be used. Also, I would fear there is a risk the doorbell wouldn’t be stopped if the second Value:0 command fails to get through for some reason.

Any tips from your findings would be appreciated and, since this is the top result in Google for this model with HA, I’m imagining this might help others along the way as well.

Thanks

If the devices are included without S2, try the multicast command, HA won’t throw an error in that case as it has an exception for Basic targetValue (for some reason this exception was not added for Basic singlecast…). (S2 multicast not supported yet, but it’s coming soon).

service: zwave_js.multicast_set_value
data:
  command_class: '32'
  value: 2
  property: targetValue
target:
  device_id:
    - a881af928e176582e9c28756f2688a2b
    - 70a59d0d034277993b5ad00e9820f584

If included with S2, you can do singelcast but bypass the onerous HA error checking and just call the Command class API directly.

service: zwave_js.invoke_cc_api
data:
  command_class: "32"
  method_name: set
  parameters:
    - 2
target:
  device_id:
    - a881af928e176582e9c28756f2688a2b
    - 70a59d0d034277993b5ad00e9820f584

The root of this is that Z-Wave JS hides the Basic CC values (e.g. Basic targetValue) because it maps all Basic reports to Binary Switch values. so the Basic values are not visible by HA and hence the error.

Thanks for your help @freshcoast, unfortunately these commands don’t work either.
J-Wave JS is reporting these as S2_Unauthenticated

Failed to call service zwave_js.multicast_set_value. Node(node_id=11) - NotFoundError: Value 11-32-0-targetValue not found on node Node(node_id=11)
Failed to call service zwave_js.invoke_cc_api. Endpoint(node_id=11, index=0) - NotFoundError: Command class 32 not found on endpoint Endpoint(node_id=11, index=0

It looks like 32 is not a recognised option. It might just not be supported, despite the mention in the user manual. Or maybe it only applies to specific firmware versions…

However, I did find a reasonably elegant solution which works surprisingly well:

alias: Doorbell
description: ""
trigger:
  - type: turned_on
    platform: device
    device_id: 82683b0230aa8d3df436bb2925744142
    entity_id: binary_sensor.doorbell_sensor_state_any
    domain: binary_sensor
condition: []
action:
  - service: notify.notify
    data:
      title: Doorbell
      message: There is someone at the door
  - device_id: 70a59d0d034277993b5ad00e9820f584
    domain: zwave_js
    type: set_config_parameter
    parameter: 7
    bitmask: null
    subtype: 7 (Operating Mode)
    value: 2
  - delay:
      hours: 0
      minutes: 0
      seconds: 1
      milliseconds: 0
  - type: turn_on
    device_id: 70a59d0d034277993b5ad00e9820f584
    entity_id: switch.living_room_siren
    domain: switch
    enabled: false
  - delay:
      hours: 0
      minutes: 0
      seconds: 6
      milliseconds: 0
  - type: turn_off
    device_id: 70a59d0d034277993b5ad00e9820f584
    entity_id: switch.living_room_siren
    domain: switch
  - device_id: 70a59d0d034277993b5ad00e9820f584
    domain: zwave_js
    type: set_config_parameter
    parameter: 7
    bitmask: null
    subtype: 7 (Operating Mode)
    value: 1
mode: single

Essentially I’m temporarily changing the “Operating Mode” (parameter: 7) to Doorbell and turning the siren/doorbell on. This is set to Doorbell Sound 4 which only last 2-3 seconds, but just to be sure it waits 6 seconds then turns it off (in case it is still set in Alarm Mode) then changes Operating Mode back to Alarm


.

Can you post a copy of the Device diagnostics? Go to device page → Device info → … → Download diagnostics

Since you have ZUI, try this in the Driver function and see if it works (Actions → Advanced → Driver function → Write):

const node = driver.controller.nodes.get(11);
await node.invokeCCAPI(32, "set", 2);

Click “Run” after pasting in the code.

Strange, downloading diagnostics from HA fails on both of the sirens…

So here is the debug info from Z-Wave JS UI: 305-4227-3 - Pastebin.com (I hope it’s equivalent)

Returns:

2023-02-27 19:48:56.532 DEBUG SOCKET: Event ZWAVE_API emitted to B0_dBaL2cHdS9bjJAAF1
2023-02-27 19:48:56.539 INFO Z-WAVE: Calling api driverFunction with args: [
'const node = driver.controller.nodes.get(11);\n' +
'await node.invokeCCAPI(32, "set", 2);',
[length]: 1
]
2023-02-27 19:48:57.809 INFO Z-WAVE: Success zwave api call driverFunction undefined

The siren does not respond with any sound to this

What is the failure? Are there any errors in the HA logs? The ZUI debug info is similar, but not exactly the same.

The siren does not respond with any sound to this

Was there anything in the driver logs that showed the command was actually sent? Was the device in “Doorbell mode” when you attempted this? Maybe the Basic Set doesn’t work in Alarm mode?

Or perhaps the device doesn’t actually support Basic. In the official manual, Basic is not a listed command class, despite it’s usage mentioned (“alarm command (BASIC_SET=0x02”). The official manual and the 1.3 version from the device certification are nearly the same, and neither show all the config parameter that Z-Wave JS does, all the certification page does show Basic CC support. You might try contacting Zipato for clarification.

Short answer no, had a play around but everything I tried failed.

I have a working solution based on cipnt’s response above, though mine is a little simplified, with less timers. I just made it into a script, and whenever I want the doorbell chime to ring in response to an event (in my case, if a door or window is opened), I just call the script and it works. In my case, the subtype is called “(Default Siren Sound)”, but it’s precisely the same parameters. Of course, you’ll want to change the device_id to whatever your z-wave siren is. For reference, this is with a NAS-AB01Z running via Z-Wave JS. The switch.turn_on command activates the siren’s switch to turn it on. After the doorbell chime plays, it automatically returns to the off state.

Honestly, it would probably work just fine without the 5 second timer as well, but whatevs.

alias: Doorbell Chime
sequence:
  - device_id: ca0fc0f8280afd646e1b8d90a0805bda
    domain: zwave_js
    type: set_config_parameter
    parameter: 7
    bitmask: null
    subtype: 7 (Default Siren Sound)
    value: 2
  - service: switch.turn_on
    data: {}
    target:
      device_id: ca0fc0f8280afd646e1b8d90a0805bda
  - delay:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - device_id: ca0fc0f8280afd646e1b8d90a0805bda
    domain: zwave_js
    type: set_config_parameter
    parameter: 7
    bitmask: null
    subtype: 7 (Default Siren Sound)
    value: 1
mode: single
icon: mdi:bell
1 Like