Ring Outdoor Siren - Trying to set burglar alarm lights and tone at the same time

Nice one :slight_smile: heh
If you have any questions, just reply and I will be glad to help.
And yes, that’s my cat, it’s an old picture but she’s still with me :slight_smile:

1 Like

Yes, just installed it. Works perfectly!

1 Like

Hello
I’m fairly new to HA and this is my first post. I’ve just installed the Ring outdoor siren and was working my way through the above posts. At this stage I’m just using the z-wave JS service to test the siren. I’ve noticed that I can get the LED’s, both the Red and Logo, to come on and off but more often than not the device seems to be disconnecting after each service call. I have to take one of the batteries out and put it back in then it’s all good again. I’m running only on the supplied batteries at the moment so no AC power. Could this cause an issue? I’ve got the UZB-7 silicone labs stick and I’ve already updated the firmware on it. I’m running HA on an old Raspbery Pi 3 board and this siren is currently my only device. Any advice?

Thanks

I don’t have an issue like that with my stick but I got a Sigma Designs stick, it works fine. I do have D batteries AND the Ring battery but I don’t believe what you are seeing is caused by which battery you are using, though. Is there anything on the ZWave logs showing for the Siren?

Hey.
Thanks for coming back to me. Where can I get the z-wave logs.

Np!
I believe it would depend how you run ZWave, mine is outside HA. Have a look here:

I didn’t get a chance to look at where the logs were last night but I did restart the pi and so far the siren seems to be remain available. I will monitor and advise if it drops off again. Once stable I will get on to the mqtt side and see if I can make it all work at the same time. Thanks again for the help

1 Like

I’ve been playing around with some Ring sensors and Z-Wave JS and I seem to have got Home Assistant to directly trigger 2 Indicator commands at the same time without the need of going through MQTT.

I don’t have a siren to test sound + light but with some contact sensors I can tell them to blink their lights at a specific interval and a defined ammount times.

Seems that instead of using zwave_js.set_value with zwave_js.invoke_cc_api It lets me set more than 1 parameter for the same command class, for example:

service: zwave_js.invoke_cc_api
target:
  device_id: <<DeviceID>>
data:
  command_class: "135"
  endpoint: "0"
  method_name: set
  parameters:
    - - indicatorId: 80
        propertyId: 3
        value: 5
      - indicatorId: 80
        propertyId: 4
        value: 10

Hope this is helpful for someone :slight_smile:

3 Likes

Hey. I’m still having issues trying to get this all to work and stay working. Could someone take a look at the below image and confirm that I’ve got the correct settings? Sometimes it works and I can turn both the logo and red strobe lights on and off but more often than not as soon as I call the service the device becomes dead and I need to remove all power and reconnect. I now have AC & the rechargeable battery as backup. I’ve tried the option “Wait for result?” and it doesn’t seem to help. I will post z-wave logs this evening when I get home but thought I’d check got the service setup correctly first.
@paumanel - I had a go with this but I could only get it to turn on the first of the services. Which ever one was on top.

Please see logs below which I’ve taken from: SUPERVISOR–>Z-WAVE JS (add-on button)–>LOG (top menu, on right). The problem is the logs seem to be incomplete. I’ve ordered the aeotec z-stick 7. Arriving today to see if the problem is with the siliconlabs stick. If not I’m thinking I’ve got a dud siren.
@emontes are you able to confirm that the service is being called correctly from the image above?
Thanks again

2022-11-30T09:48:14.099Z CNTRLR   [Node 023] [setValue] calling SET_VALUE API IndicatorCCAPI:
                                    property:     48
                                    property key: 1
                                    optimistic:   true
2022-11-30T09:48:14.122Z SERIAL » 0x012300a90117179f03730027632648378925a713fea7eda4c85ded06715925000 (37 bytes)
                                  0000052af
2022-11-30T09:48:14.125Z DRIVER » [Node 023] [REQ] [SendDataBridge]
                                  │ source node id:   1
                                  │ transmit options: 0x25
                                  │ callback id:      82
                                  └─[Security2CCMessageEncapsulation]
                                    │ sequence number: 115
                                    └─[SupervisionCCGet]
                                      │ session id:      38
                                      │ request updates: true
                                      └─[IndicatorCCSet]
                                          values:
                                          · indicatorId: 48
                                            propertyId:  1
                                            value:       50
2022-11-30T09:48:14.133Z SERIAL « [ACK]                                                                   (0x06)
2022-11-30T09:48:14.136Z SERIAL « 0x010401a90152                                                       (6 bytes)
2022-11-30T09:48:14.138Z SERIAL » [ACK]                                                                   (0x06)
2022-11-30T09:48:14.140Z DRIVER « [RES] [SendDataBridge]
                                    was sent: true

2022-11-30T09:48:43.055Z SERIAL « 0x011d00a9520102a7007f7f7f7f7f00010600000000420600007f7f7f7f7ffe    (31 bytes)
2022-11-30T09:48:43.061Z SERIAL » [ACK]                                                                   (0x06)
2022-11-30T09:48:43.066Z DRIVER « [REQ] [SendDataBridge]
                                    callback id:            82
                                    transmit status:        NoAck, took 6790 ms
                                    routing attempts:       6
                                    protocol & route speed: Z-Wave, 40 kbit/s
                                    TX channel no.:         1
                                    beam:                   1000 ms
2022-11-30T09:48:43.080Z CNTRLR   [Node 023] The node did not respond after 3 attempts, it is presumed dead
2022-11-30T09:48:43.082Z CNTRLR   [Node 023] The node is now dead.
2022-11-30T09:48:43.101Z CNTRLR   [Node 023] [setValue] raised ZWaveError (not handled, code Controller_Callback
                                  NOK): Failed to send the command after 3 attempts (Status NoAck) (ZW0204)
Z-Wave error ZWaveError: Failed to send the command after 3 attempts (Status NoAck) (ZW0204)
    at Driver.sendMessage (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:3990:23)
    at Driver.sendCommandInternal (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4181:28)
    at Driver.sendSupervisedCommand (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4226:27)
    at Driver.sendCommand (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4278:30)
    at IndicatorCCAPI.set (/usr/src/node_modules/@zwave-js/cc/src/cc/IndicatorCC.ts:263:24)
    at Proxy.IndicatorCCAPI.<computed> (/usr/src/node_modules/@zwave-js/cc/src/cc/IndicatorCC.ts:209:16)
    at ZWaveNode.setValue (/usr/src/node_modules/zwave-js/src/lib/node/Node.ts:932:29)
    at NodeMessageHandler.handle (/usr/src/node_modules/@zwave-js/server/dist/lib/node/message_handler.js:23:38)
    at Object.node (/usr/src/node_modules/@zwave-js/server/dist/lib/server.js:40:96)
    at Client.receiveMessage (/usr/src/node_modules/@zwave-js/server/dist/lib/server.js:105:99) {
  code: 204,
  context: SendDataBridgeRequestTransmitReport {
    host: [Driver],
    type: 0,
    functionType: 169,
    payload: <Buffer 52 01 02 a7 00 7f 7f 7f 7f 7f 00 01 06 00 00 00 00 42 06 00 00 7f 7f 7f 7f 7f>,
    _callbackId: 82,
    transmitStatus: 1,
    txReport: {
      txTicks: 679,
      numRepeaters: 0,
      txChannelNo: 1,
      routeSchemeState: 6,
      repeaterNodeIds: [],
      beam1000ms: true,
      beam250ms: false,
      routeSpeed: 2,
      routingAttempts: 6,
      failedRouteLastFunctionalNodeId: 0,
      failedRouteFirstNonFunctionalNodeId: 0,
      measuredNoiseFloor: 127
    }
  },
  transactionSource: '    at Driver.sendMessage (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:3990:23)\n' +
    '    at Driver.sendCommandInternal (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4181:28)\n' +
    '    at Driver.sendSupervisedCommand (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4226:27)\n' +
    '    at Driver.sendCommand (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4278:30)\n' +
    '    at IndicatorCCAPI.set (/usr/src/node_modules/@zwave-js/cc/src/cc/IndicatorCC.ts:263:24)\n' +
    '    at Proxy.IndicatorCCAPI.<computed> (/usr/src/node_modules/@zwave-js/cc/src/cc/IndicatorCC.ts:209:16)\n' +
    '    at ZWaveNode.setValue (/usr/src/node_modules/zwave-js/src/lib/node/Node.ts:932:29)\n' +
    '    at NodeMessageHandler.handle (/usr/src/node_modules/@zwave-js/server/dist/lib/node/message_handler.js:23:38)\n' +
    '    at Object.node (/usr/src/node_modules/@zwave-js/server/dist/lib/server.js:40:96)\n' +
    '    at Client.receiveMessage (/usr/src/node_modules/@zwave-js/server/dist/lib/server.js:105:99)'
}
2022-11-30T09:49:07.146Z CNTRLR   [Node 023] [setValue] calling SET_VALUE API IndicatorCCAPI:
                                    property:     48
                                    property key: 1
                                    optimistic:   true
2022-11-30T09:49:07.150Z CNTRLR » [Node 023] pinging the node...
2022-11-30T09:49:07.173Z SERIAL » 0x010d00a9011701002500000000533a                                    (15 bytes)
2022-11-30T09:49:07.175Z DRIVER » [Node 023] [REQ] [SendDataBridge]
                                  │ source node id:   1
                                  │ transmit options: 0x25
                                  │ callback id:      83
                                  └─[NoOperationCC]
2022-11-30T09:49:07.181Z SERIAL « [ACK]                                                                   (0x06)
2022-11-30T09:49:07.184Z SERIAL « 0x010401a90152                                                       (6 bytes)
2022-11-30T09:49:07.187Z SERIAL » [ACK]                                                                   (0x06)
2022-11-30T09:49:07.189Z DRIVER « [RES] [SendDataBridge]
                                    was sent: true
2022-11-30T09:49:13.990Z SERIAL « 0x011d00a95301029c007f7f7f7f7f00010600000000420600007f7f7f7f7fc4    (31 bytes)
2022-11-30T09:49:13.996Z SERIAL » [ACK]                                                                   (0x06)
2022-11-30T09:49:13.999Z DRIVER « [REQ] [SendDataBridge]
                                    callback id:            83
                                    transmit status:        NoAck, took 6680 ms
                                    routing attempts:       6
                                    protocol & route speed: Z-Wave, 40 kbit/s
                                    TX channel no.:         1
                                    beam:                   1000 ms
2022-11-30T09:49:14.019Z CNTRLR   [Node 023] The node did not respond after 1 attempts, it is presumed dead
2022-11-30T09:49:14.029Z CNTRLR   [Node 023] ping failed: Failed to send the command after 1 attempts (Status No
                                  Ack) (ZW0204)
2022-11-30T09:49:14.030Z CNTRLR   [Node 023] [setValue] raised ZWaveError (not handled, code Controller_MessageD
                                  ropped): The message cannot be sent because node 23 is dead (ZW0202)
Z-Wave error ZWaveError: The message cannot be sent because node 23 is dead (ZW0202)
    at Driver.sendMessage (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:3920:12)
    at Driver.sendCommandInternal (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4181:17)
    at Driver.sendSupervisedCommand (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4226:16)
    at Driver.sendCommand (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4278:19)
    at ZWaveNode.setValue (/usr/src/node_modules/zwave-js/src/lib/node/Node.ts:932:19)
    at NodeMessageHandler.handle (/usr/src/node_modules/@zwave-js/server/dist/lib/node/message_handler.js:23:27)
    at Client.receiveMessage (/usr/src/node_modules/@zwave-js/server/dist/lib/server.js:105:62) {
  code: 202,
  context: undefined,
  transactionSource: undefined
}

Hey Tim. This is very weird but I can see the node is dead so it’s not even getting the message you are trying to send. As I said, I use MQTT so I don’t do calls to ZWave directly but I have to agree you need to first fix the problem you are seeing with the node just dying out of the blue. Do you have any other device you can test with this controller just to make sure it’s working?

The device (siren) does connect. If I pull the battery and ac power out as soon as I plug one of them back in to the siren it’s alive again. I can turn the siren on and off again, multiple times and the device functions as normal until I start sending the service calls. I can always successfully send at least one command and get it to do what I want (ie. the lights come on) but usually, after just one command, it dies. I do have other z-wave devices (mainly contact sensors) but none that I’m trying to operate using these service calls. Below are a few successful calls I made this morning when I thought it was finally working. Just to be sure, am I sending the service call correctly?

2022-11-30T07:16:20.565Z CNTRLR   [Node 023] [translateValueEvent: value updated]
                                    commandClass: Battery
                                    endpoint:     0
                                    property:     backup
                                    propertyKey:  undefined
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2022-11-30T07:16:20.567Z CNTRLR   [Node 023] [~] [Battery] backup: false => true                    [Endpoint 0]
2022-11-30T07:16:20.569Z CNTRLR   [Node 023] [translateValueEvent: value updated]
                                    is root endpoint:        true
                                    is application CC:       false
                                    should hide root values: false
2022-11-30T07:16:20.573Z CNTRLR   [Node 023] [translateValueEvent: value updated]
                                    commandClass: Battery
                                    endpoint:     0
                                    property:     overheating
                                    propertyKey:  undefined
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2022-11-30T07:16:20.575Z CNTRLR   [Node 023] [~] [Battery] overheating: false => false              [Endpoint 0]
2022-11-30T07:16:20.577Z CNTRLR   [Node 023] [translateValueEvent: value updated]
                                    is root endpoint:        true
                                    is application CC:       false
                                    should hide root values: false
2022-11-30T07:16:20.580Z CNTRLR   [Node 023] [translateValueEvent: value updated]
                                    commandClass: Battery
                                    endpoint:     0
                                    property:     lowFluid
                                    propertyKey:  undefined
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2022-11-30T07:16:20.582Z CNTRLR   [Node 023] [~] [Battery] lowFluid: false => false                 [Endpoint 0]
2022-11-30T07:16:20.584Z CNTRLR   [Node 023] [translateValueEvent: value updated]
                                    is root endpoint:        true
                                    is application CC:       false
                                    should hide root values: false
2022-11-30T07:16:20.588Z CNTRLR   [Node 023] [translateValueEvent: value updated]
                                    commandClass: Battery
                                    endpoint:     0
                                    property:     rechargeOrReplace
                                    propertyKey:  undefined
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2022-11-30T07:16:20.589Z CNTRLR   [Node 023] [~] [Battery] rechargeOrReplace: 0 => 0                [Endpoint 0]
2022-11-30T07:16:20.591Z CNTRLR   [Node 023] [translateValueEvent: value updated]
                                    is root endpoint:        true
                                    is application CC:       false
                                    should hide root values: false
2022-11-30T07:16:20.594Z CNTRLR   [Node 023] [translateValueEvent: value updated]
                                    commandClass: Battery
                                    endpoint:     0
                                    property:     disconnected
                                    propertyKey:  undefined
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2022-11-30T07:16:20.596Z CNTRLR   [Node 023] [~] [Battery] disconnected: true => false              [Endpoint 0]
2022-11-30T07:16:20.598Z CNTRLR   [Node 023] [translateValueEvent: value updated]
                                    is root endpoint:        true
                                    is application CC:       false
                                    should hide root values: false
2022-11-30T07:16:20.602Z DRIVER « [Node 023] [REQ] [BridgeApplicationCommand]
                                  │ RSSI: -77 dBm
                                  └─[Security2CCMessageEncapsulation]
                                    │ sequence number: 251
                                    └─[SupervisionCCGet]
                                      │ session id:      4
                                      │ request updates: false
                                      └─[BatteryCCReport]
                                          level:                100
                                          is low:               false
                                          charging status:      Maintaining
                                          rechargeable:         true
                                          backup:               true
                                          overheating:          false
                                          low fluid:            false
                                          recharge or replace:  No
                                          lowTemperatureStatus: false
                                          disconnected:         false
2022-11-30T07:16:20.633Z SERIAL » 0x011d00a90117119f033e008b52a189bcad3d135e54e8b5b9240000000000ea    (31 bytes)
2022-11-30T07:16:20.635Z DRIVER » [Node 023] [REQ] [SendDataBridge]
                                  │ source node id:   1
                                  │ transmit options: 0x24
                                  │ callback id:      0
                                  └─[Security2CCMessageEncapsulation]
                                    │ sequence number: 62
                                    └─[SupervisionCCReport]
                                        session id:          4
                                        more updates follow: false
                                        status:              Success
                                        duration:            0s
2022-11-30T07:16:20.643Z SERIAL « [ACK]                                                                   (0x06)
2022-11-30T07:16:20.647Z SERIAL « 0x010401a90152                                                       (6 bytes)
2022-11-30T07:16:20.649Z SERIAL » [ACK]                                                                   (0x06)
2022-11-30T07:16:20.652Z DRIVER « [RES] [SendDataBridge]
                                    was sent: true
2022-11-30T07:21:54.996Z CNTRLR   [Node 023] [setValue] calling SET_VALUE API IndicatorCCAPI:
                                    property:     13
                                    property key: 1
                                    optimistic:   true
2022-11-30T07:21:55.026Z SERIAL » 0x012300a90117179f033f006cae97994cc65463a9de25841ed366c7bd470525000 (37 bytes)
                                  0000029ef
2022-11-30T07:21:55.030Z DRIVER » [Node 023] [REQ] [SendDataBridge]
                                  │ source node id:   1
                                  │ transmit options: 0x25
                                  │ callback id:      41
                                  └─[Security2CCMessageEncapsulation]
                                    │ sequence number: 63
                                    └─[SupervisionCCGet]
                                      │ session id:      8
                                      │ request updates: true
                                      └─[IndicatorCCSet]
                                          values:
                                          · indicatorId: 13
                                            propertyId:  1
                                            value:       100
2022-11-30T07:21:55.038Z SERIAL « [ACK]                                                                   (0x06)
2022-11-30T07:21:55.041Z SERIAL « 0x010401a90152                                                       (6 bytes)
2022-11-30T07:21:55.043Z SERIAL » [ACK]                                                                   (0x06)
2022-11-30T07:21:55.046Z DRIVER « [RES] [SendDataBridge]
                                    was sent: true
2022-11-30T07:21:55.054Z SERIAL « 0x011d00a92900000100b27f7f7f7f01010300000000020100007f7f7f7f7fae    (31 bytes)
2022-11-30T07:21:55.056Z SERIAL » [ACK]                                                                   (0x06)
2022-11-30T07:21:55.058Z DRIVER « [REQ] [SendDataBridge]
                                    callback id:            41
                                    transmit status:        OK, took 10 ms
                                    routing attempts:       1
                                    protocol & route speed: Z-Wave, 40 kbit/s
                                    ACK RSSI:               -78 dBm
                                    ACK channel no.:        1
                                    TX channel no.:         1
2022-11-30T07:21:55.068Z SERIAL « 0x011a00a8000117119f03fc005545ec5ae0bfceec83307a5e4200b195          (28 bytes)
2022-11-30T07:21:55.073Z SERIAL » [ACK]                                                                   (0x06)
2022-11-30T07:21:55.076Z DRIVER « [Node 023] [REQ] [BridgeApplicationCommand]
                                  │ RSSI: -79 dBm
                                  └─[Security2CCMessageEncapsulation]
                                    │ sequence number: 252
                                    └─[SupervisionCCReport]
                                        session id:          8
                                        more updates follow: false
                                        status:              Success
                                        duration:            0s
2022-11-30T07:21:55.088Z CNTRLR   [Node 023] [setValue] result of SET_VALUE API call for IndicatorCCAPI: (Superv
                                  isionResult)
                                    status:   Success
2022-11-30T07:21:55.089Z CNTRLR   [Node 023] [setValue] updating value with event
2022-11-30T07:21:55.091Z CNTRLR   [Node 023] [translateValueEvent: value updated]
                                    commandClass: Indicator
                                    endpoint:     0
                                    property:     13
                                    propertyKey:  1
                                    internal:     false
                                    secret:       false
                                    event source: driver
2022-11-30T07:21:55.092Z CNTRLR   [Node 023] [translateValueEvent: value updated]
                                    is root endpoint:        true
                                    is application CC:       false
                                    should hide root values: false

Everything seems to be working now. I’ve just switched the Silicon Labs z-wave stick out for a new Aeotech one. Both of which show up as Silicon Labs in HA and when I was updating their firmwares. Wonder if just got unlucky with the first stick. I seem to be able to call any of the LED or siren functions with no disconnects at all.
@emontes - Thanks again for your help with this.
@paumanel - Using your method I can indeed call two services at the same time as long as they have the same indicatorID. Perhpas this is obvious but when I tried it before I was trying to call two different IDs. Perhaps this is not possible. As the strobe and the siren are on the same ID I can turn them both on with one call without the need for MQTT. Very useful.
Thanks so much for everyone’s input even before I got involved.

Thanks for the update, Tim, I am gldad it’s working well for you and sorry for not being able to reply to your before last message, ridiculously busy day at work!

No worries. Cheers

@emontes I was just looking back to a post you made on the 22 Feb about the ZWaveJS’s database.I’ve managed to find this link:Z-Wave JS Config DB Browser but I can’t see any reference to the lights or 135-0-48-1. Is there another link you could point me towards that has more information?
What I’m ultimately looking for is to see if I can set a delay to the alarm sounding with just one request. eg. Turn on the alarm at 100% but not for 60 seconds. Otherwise someone could break in, disconnect the power and the alarm would not sound because HA could no longer send the message. Is this possible at all. I ask because there is a exit & entry delay option through the ring base station and app.
Thanks again.

Hey Tim, I am not sure if you would be able to do that, I don’t think there’s a way to queue the message on the device or on ZWaveJS, for example. My HA got an UPS so even by cutting power, the alarm will still work.
The Ring base station also has a battery so it would still work without power too.

Hey. Cheers for the reply. No I didn’t think there would be but thought I’d ask. I do have UPS but it’s not locked away so in theory someone could unplug HA during the 90 seconds I currently allow for pin entry. I wonder if the Ring base station behaves any differently. Perhaps it also just waits for the delay and then sends a new message to activate the alarm.
Were you able to find a link to the z-wave JS info I mentioned? Would just be interesting and useful for future endeavours.
Thanks

All good :slight_smile:
The link points just to the configuration items and not the indicator commandclass (which is what I used for lights) but it’s really useful. Have a look here that shows the command classes.: Z-Wave JS - Z-Wave driver written entirely in JavaScript/TypeScript (Indicator is 135 so 0x87 in hex)
This is what I have on mine to switch the siren on AND blink the lights red for 180 seconds, for example:

       turn_on:
         service: mqtt.publish
         data:
           topic: zwave/_CLIENTS/ZWAVE_GATEWAY-zwavejs2mqtt/api/sendCommand/set
           payload: "{\"args\":[{\"nodeId\":xx,\"commandClass\":135},\"set\",[[{\"indicatorId\":13,\"propertyId\":1,\"value\":100},{\"indicatorId\":13,\"propertyId\":9,\"value\":10},{\"indicatorId\":13,\"propertyId\":7,\"value\":180}]]]}"
           retain: false

I am not sure if this is what you were looking for, I have tried to do this ages ago on HA and was not able to, I am not sure if it’s still the case now.

Cheers for this. Wowzers it looks complicated. Prob bitten off a bit more than I can chew there. Thanks for posting anyway.