Home Assistant - 2nd Gen Switch RGB working!

I was having the same problem, thanks for pointing me in the right direction by looking at the issecured flag.

I just started using Node-Red this week with Home Assistant and the Inovelli Dimmer is the main reason why. I have a long way to go but I came up with this flow building off of the Status Manager. I have three Schlage Z-Wave Touchscreen Deadbolts and wanted to get a notification on one of my switches and be able to add others later on. I only wanted the unlock notification to go off every 5 minutes if one of them is still unlocked then give a notification to confirm they are locked.

I was able to use the Scene Manager flow/sub-flow to activate the config button to lock all my locks.

I hope this can help someone that was stuck in a spot like I was with limited Node-Red experience.

JSON:
[{“id”:“61b76373.302b7c”,“type”:“tab”,“label”:“Lock Status”,“disabled”:false,“info”:""},{“id”:“81003715.213b38”,“type”:“inovelli-status-manager”,“z”:“61b76373.302b7c”,“name”:“Doors Unlocked”,“nodeid”:“3”,“color”:“1”,“level”:10,“duration”:“10”,“display”:“5”,“switchtype”:“16”,“x”:380,“y”:320,“wires”:[[“cb42f4af.184648”,“68b4af8.de1605”,“fc7913cb.4df7d”,“9ab834c0.f968c8”]]},{“id”:“fc7913cb.4df7d”,“type”:“api-call-service”,“z”:“61b76373.302b7c”,“d”:true,“name”:“node 1”,“server”:“627c2fbf.e0dc3”,“version”:“1”,“debugenabled”:false,“service_domain”:“zwave”,“service”:“set_config_parameter”,“entityId”:"",“data”:"{ “node_id”: 1 }",“dataType”:“json”,“mergecontext”:"",“output_location”:“payload”,“output_location_type”:“msg”,“mustacheAltTags”:false,“x”:770,“y”:180,“wires”:[[]]},{“id”:“68b4af8.de1605”,“type”:“api-call-service”,“z”:“61b76373.302b7c”,“d”:true,“name”:“node 2”,“server”:“627c2fbf.e0dc3”,“version”:“1”,“debugenabled”:false,“service_domain”:“zwave”,“service”:“set_config_parameter”,“entityId”:"",“data”:"{ “node_id”: 2 }",“dataType”:“json”,“mergecontext”:"",“output_location”:“payload”,“output_location_type”:“msg”,“mustacheAltTags”:false,“x”:770,“y”:220,“wires”:[[]]},{“id”:“9ab834c0.f968c8”,“type”:“api-call-service”,“z”:“61b76373.302b7c”,“name”:“Living Room Dome (Node 3)”,“server”:“627c2fbf.e0dc3”,“version”:1,“debugenabled”:true,“service_domain”:“zwave”,“service”:“set_config_parameter”,“entityId”:"",“data”:"{“node_id”:3}",“dataType”:“json”,“mergecontext”:"",“output_location”:“payload”,“output_location_type”:“msg”,“mustacheAltTags”:false,“x”:680,“y”:320,“wires”:[[]]},{“id”:“cb42f4af.184648”,“type”:“api-call-service”,“z”:“61b76373.302b7c”,“d”:true,“name”:“node 4”,“server”:“627c2fbf.e0dc3”,“version”:“1”,“debugenabled”:false,“service_domain”:“zwave”,“service”:“set_config_parameter”,“entityId”:"",“data”:"{ “node_id”: 1 }",“dataType”:“json”,“mergecontext”:"",“output_location”:“payload”,“output_location_type”:“msg”,“mustacheAltTags”:false,“x”:770,“y”:260,“wires”:[[]]},{“id”:“60824a63.90c334”,“type”:“comment”,“z”:“61b76373.302b7c”,“name”:“Deabolts Locked or Unlocked (Node 3)”,“info”:“Note: node id is not set on the status manager, it is set on the svc calls and the svc call only inherits the value and other params”,“x”:590,“y”:80,“wires”:[]},{“id”:“790719fd.e86968”,“type”:“inovelli-status-manager”,“z”:“61b76373.302b7c”,“name”:“Doors Locked”,“nodeid”:“3”,“color”:“94”,“level”:10,“duration”:“10”,“display”:“2”,“switchtype”:“16”,“x”:380,“y”:400,“wires”:[[“6575a7e7.e38658”,“6271d103.f18b9”,“b5ca6484.872538”,“56123af2.92bf74”]]},{“id”:“6575a7e7.e38658”,“type”:“api-call-service”,“z”:“61b76373.302b7c”,“name”:“Living Room Dome (Node 3)”,“server”:“627c2fbf.e0dc3”,“version”:1,“debugenabled”:true,“service_domain”:“zwave”,“service”:“set_config_parameter”,“entityId”:"",“data”:"{“node_id”:3,“parameter”:16,“value”:17435223}",“dataType”:“json”,“mergecontext”:"",“output_location”:“payload”,“output_location_type”:“msg”,“mustacheAltTags”:false,“x”:680,“y”:400,“wires”:[[]]},{“id”:“8979c432.70a668”,“type”:“server-state-changed”,“z”:“61b76373.302b7c”,“name”:“Front Door Status”,“server”:“627c2fbf.e0dc3”,“version”:1,“exposeToHomeAssistant”:false,“haConfig”:[{“property”:“name”,“value”:""},{“property”:“icon”,“value”:""}],“entityidfilter”:“lock.front_door”,“entityidfiltertype”:“exact”,“outputinitially”:false,“state_type”:“str”,“haltifstate”:“unlocked”,“halt_if_type”:“str”,“halt_if_compare”:“is”,“outputs”:2,“output_only_on_state_change”:true,“x”:110,“y”:300,“wires”:[[“81003715.213b38”],[“790719fd.e86968”]]},{“id”:“b07dcbd4.b727e8”,“type”:“server-state-changed”,“z”:“61b76373.302b7c”,“name”:“Garge Door Status”,“server”:“627c2fbf.e0dc3”,“version”:1,“exposeToHomeAssistant”:false,“haConfig”:[{“property”:“name”,“value”:""},{“property”:“icon”,“value”:""}],“entityidfilter”:“lock.garage_door”,“entityidfiltertype”:“exact”,“outputinitially”:false,“state_type”:“str”,“haltifstate”:“unlocked”,“halt_if_type”:“str”,“halt_if_compare”:“is”,“outputs”:2,“output_only_on_state_change”:true,“x”:110,“y”:420,“wires”:[[“81003715.213b38”],[“790719fd.e86968”]]},{“id”:“1a979b27.26c7c5”,“type”:“server-state-changed”,“z”:“61b76373.302b7c”,“name”:“Back Door Status”,“server”:“627c2fbf.e0dc3”,“version”:1,“exposeToHomeAssistant”:false,“haConfig”:[{“property”:“name”,“value”:""},{“property”:“icon”,“value”:""}],“entityidfilter”:“lock.back_door”,“entityidfiltertype”:“exact”,“outputinitially”:false,“state_type”:“str”,“haltifstate”:“unlocked”,“halt_if_type”:“str”,“halt_if_compare”:“is”,“outputs”:2,“output_only_on_state_change”:true,“x”:120,“y”:360,“wires”:[[“81003715.213b38”],[“790719fd.e86968”]]},{“id”:“56123af2.92bf74”,“type”:“api-call-service”,“z”:“61b76373.302b7c”,“d”:true,“name”:“node 4”,“server”:“627c2fbf.e0dc3”,“version”:“1”,“debugenabled”:false,“service_domain”:“zwave”,“service”:“set_config_parameter”,“entityId”:"",“data”:"{ “node_id”: 1 }",“dataType”:“json”,“mergecontext”:"",“output_location”:“payload”,“output_location_type”:“msg”,“mustacheAltTags”:false,“x”:770,“y”:540,“wires”:[[]]},{“id”:“b5ca6484.872538”,“type”:“api-call-service”,“z”:“61b76373.302b7c”,“d”:true,“name”:“node 2”,“server”:“627c2fbf.e0dc3”,“version”:“1”,“debugenabled”:false,“service_domain”:“zwave”,“service”:“set_config_parameter”,“entityId”:"",“data”:"{ “node_id”: 2 }",“dataType”:“json”,“mergecontext”:"",“output_location”:“payload”,“output_location_type”:“msg”,“mustacheAltTags”:false,“x”:770,“y”:500,“wires”:[[]]},{“id”:“6271d103.f18b9”,“type”:“api-call-service”,“z”:“61b76373.302b7c”,“d”:true,“name”:“node 1”,“server”:“627c2fbf.e0dc3”,“version”:“1”,“debugenabled”:false,“service_domain”:“zwave”,“service”:“set_config_parameter”,“entityId”:"",“data”:"{ “node_id”: 1 }",“dataType”:“json”,“mergecontext”:"",“output_location”:“payload”,“output_location_type”:“msg”,“mustacheAltTags”:false,“x”:770,“y”:460,“wires”:[[]]},{“id”:“436c1c5c.7ab6f4”,“type”:“poll-state”,“z”:“61b76373.302b7c”,“name”:“Front Door”,“server”:“627c2fbf.e0dc3”,“version”:1,“exposeToHomeAssistant”:false,“haConfig”:[{“property”:“name”,“value”:""},{“property”:“icon”,“value”:""}],“updateinterval”:“5”,“updateIntervalUnits”:“minutes”,“outputinitially”:false,“outputonchanged”:false,“entity_id”:“lock.front_door”,“state_type”:“str”,“halt_if”:“unlocked”,“halt_if_type”:“str”,“halt_if_compare”:“is”,“outputs”:2,“x”:120,“y”:60,“wires”:[[“a52a72d4.2f374”],[“a52a72d4.2f374”]]},{“id”:“762775af.cf937c”,“type”:“poll-state”,“z”:“61b76373.302b7c”,“name”:“Grage Door”,“server”:“627c2fbf.e0dc3”,“version”:1,“exposeToHomeAssistant”:false,“haConfig”:[{“property”:“name”,“value”:""},{“property”:“icon”,“value”:""}],“updateinterval”:“5”,“updateIntervalUnits”:“minutes”,“outputinitially”:false,“outputonchanged”:false,“entity_id”:“lock.garage_door”,“state_type”:“str”,“halt_if”:“unlocked”,“halt_if_type”:“str”,“halt_if_compare”:“is”,“outputs”:2,“x”:110,“y”:180,“wires”:[[“a52a72d4.2f374”],[“a52a72d4.2f374”]]},{“id”:“caddea99.cba148”,“type”:“poll-state”,“z”:“61b76373.302b7c”,“name”:“Back Door”,“server”:“627c2fbf.e0dc3”,“version”:1,“exposeToHomeAssistant”:false,“haConfig”:[{“property”:“name”,“value”:""},{“property”:“icon”,“value”:""}],“updateinterval”:“5”,“updateIntervalUnits”:“minutes”,“outputinitially”:false,“outputonchanged”:false,“entity_id”:“lock.back_door”,“state_type”:“str”,“halt_if”:“unlocked”,“halt_if_type”:“str”,“halt_if_compare”:“is”,“outputs”:2,“x”:120,“y”:120,“wires”:[[“a52a72d4.2f374”],[“a52a72d4.2f374”]]},{“id”:“a52a72d4.2f374”,“type”:“switch”,“z”:“61b76373.302b7c”,“name”:“unlock or locked”,“property”:“payload”,“propertyType”:“msg”,“rules”:[{“t”:“eq”,“v”:“unlocked”,“vt”:“str”},{“t”:“eq”,“v”:“locked”,“vt”:“str”}],“checkall”:“true”,“repair”:false,“outputs”:2,“x”:370,“y”:160,“wires”:[[“81003715.213b38”],[]]},{“id”:“627c2fbf.e0dc3”,“type”:“server”,“z”:"",“name”:“Home Assistant”,“legacy”:false,“hassio”:true,“rejectUnauthorizedCerts”:true,“ha_boolean”:“y|yes|true|on|home|open”,“connectionDelay”:true,“cacheJson”:true}]

1 Like

I’m trying to use scenes with my Red Series dimmer in HassOS. All I want to do is disable local relay to control smart bulbs and start with a simple “bulbs on/off” at the switch. I’ve added the command class central scene lines above but I’m not getting zwave.scene_activated to work in my event automation:

entity_id: zwave.inovelli_unknown_type_0001_id_0001_2
scene_data: 7680
scene_id: 1

I tried to type this service in Developer’s Tools (Services) and it doesn’t appear. So it seems my added command class lines didn’t work? I feel like I’m missing something easy and really want these switches to work so my boyfriend stops turning off my lights!

What kind of smart bulbs are they? If they are zwave smart bulbs, you can skip the scenes and associate the dimmer directly to the bulbs. That would give you basic on/off as well as dimming.

If you really want to use scenes for this though, I think a good first step is to monitor your OZW_Log.txt file to make sure OpenZwave is actually detecting the scenes.

They are Lifx, but I have two Illumin bulbs that I’d happily swap for this. The logs show the scenes aren’t being detected, and I also haven’t been successful in implementing the 1.4 OZW tweak to access all config parameters. If anyone is willing to work offline with me to set all this up for some coffee/beer money, PM me, knowing I am only a basic Hass user.

If you havent already, I recommend starting with this post:

The post above has a link to a github page that contains OZW 1.4 config files for HA. It might solve both your config parameter issue as well as your scene issue. You may have to exclude/include your devices or refresh node info after making these updates in order to get HA to detect the changes.

If that doesnt work, could you post the relevant section of your zwcfg*.xml file, so we can take a look? If you made changes to it yourself, it could just have a typo. Also, I believe HA only reads this file on startup, and always re-writes it on shutdown. If you manually update your zwcfg*.xml file, you must shut down HA first or any updates will be lost.

Pointing me to the OZW log, then following advice from the post about “issecure,” and then finally realizing my automation was slightly off got me to troubleshoot my basic on/off scenes for my Lifx bulbs. They’re working now, thanks! I’m not even going to attempt to load 1.4, I’ll just manually set config parameters that I need and wait until HA goes to 1.6.

In node-red @pdong How are you sending the payload to the switch? everything i’m sending is bouncing. …in other nodered sequences to turn on and off the switch it works fine every time. scenes from the switch work but zwave.set_config_parameters, i can’t get going. am I missing something?

I also tried zwave.inovelli_lzw31_sn_dimmer_red_series with and without the “Zwave.” only thing i haven’t tried is the json … no clue what to type or try.

I’m having the same issue as @kerryandjane, can’t figure out how to set the light with node red and home assistant.

edit: I’ll post the answer for anyone who finds this with the same problem. Don’t try to specify the device in the entity_id field of the call service node, leave it blank.

@ExMachina find my node red information below:

(Click Me) Here is my flow for specifically LED control
[{"id":"7918ec23.6b13c4","type":"inovelli-status-manager","z":"880aae7a.81bc","name":"Green Success Blink","nodeid":"4","color":"87","level":10,"duration":"3","display":"3","switchtype":"16","x":1380,"y":100,"wires":[["6d1d87ae.25e1e"]]},{"id":"6d1d87ae.25e1e","type":"api-call-service","z":"880aae7a.81bc","name":"Send Blink","server":"497693ef.d5e6bc","version":1,"debugenabled":false,"service_domain":"zwave","service":"set_config_parameter","entityId":"","data":"","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":1590,"y":100,"wires":[[]]},{"id":"31d9fbf.c162e84","type":"inovelli-status-manager","z":"880aae7a.81bc","name":"Red Fail Blink","nodeid":"4","color":"11","level":10,"duration":"3","display":"1","switchtype":"16","x":1360,"y":140,"wires":[["be7a3200.901b88"]]},{"id":"be7a3200.901b88","type":"api-call-service","z":"880aae7a.81bc","name":"Send Blink","server":"497693ef.d5e6bc","version":1,"debugenabled":false,"service_domain":"zwave","service":"set_config_parameter","entityId":"","data":"","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":1590,"y":140,"wires":[[]]},{"id":"1121c535.19a1ab","type":"api-call-service","z":"880aae7a.81bc","name":"Turn off downstairs lights","server":"497693ef.d5e6bc","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"group.all_lights_no_upstairs","data":"{\"entity_id\":\"group.all_lights_no_upstairs\"}","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":590,"y":100,"wires":[["9cb026ef.bc075"]]},{"id":"9cb026ef.bc075","type":"delay","z":"880aae7a.81bc","name":"","pauseType":"delay","timeout":"1.2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":830,"y":100,"wires":[["23c364ae.ff71ec"]]},{"id":"23c364ae.ff71ec","type":"api-current-state","z":"880aae7a.81bc","name":"Downstairs Lights State","server":"497693ef.d5e6bc","version":1,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"group.all_lights_no_upstairs","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":1090,"y":100,"wires":[["7918ec23.6b13c4"],["31d9fbf.c162e84"]]},{"id":"497693ef.d5e6bc","type":"server","z":"","name":"Home Assistant"}]

I’ve implemented this right after the scene setting node. All it does is when I press down on my inovelli switch (not pictured), then turn off my downstairs lights. Delay for 1.2 seconds, then retrieve the status of downstairs lights. If any downstairs lights are still on, set led light bar to solid red for 3 seconds, then call the service node (actually set light bar to red). If all lights are off, set led light bar to blink green for 3 seconds, then call service (actually set light bar to green).

You will need to adjust values for the inovelli-status-manager node (and download it if you don’t have it yet) so that it points to your specific node, but other than that it should work as is.

Having the same issue as @kerryandjane and @ExMachina, either of you happen to figure out what was going on?

Look at my post right above yours @grilledbacon32 , you can simply import my node red flow information and it should work for you. Just be sure to update the node information accordingly.

Hi @harmfulmushroom, I did try that and get the error in the screenshot below. I’ve tried to import a few others as well and get the same error. I’m not sure what is causing it, I copy and paste directly into the import box. I’m new to all this so trying to figure my way around it all.

Gotcha, sorry to hear that. Do you have the inovelli-status-manager node installed for your node red instance? I tried to import on my end and it does appear to be successful.

Sorry I tried reimporting my own flow and I got the same error… For some reason when posting on here the quotes change. You will have to paste it into word or notepad or something and make sure to replace the quotes with the correct quotes node red is expecting, sorry about that.

Here is my Node
[{"id":"7918ec23.6b13c4","type":"inovelli-status-manager","z":"880aae7a.81bc","name":"Green Success Blink","nodeid":"4","color":"87","level":10,"duration":"3","display":"3","switchtype":"16","x":1380,"y":100,"wires":[["6d1d87ae.25e1e"]]},{"id":"6d1d87ae.25e1e","type":"api-call-service","z":"880aae7a.81bc","name":"Send Blink","server":"497693ef.d5e6bc","version":1,"debugenabled":false,"service_domain":"zwave","service":"set_config_parameter","entityId":"","data":"","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":1590,"y":100,"wires":[[]]},{"id":"31d9fbf.c162e84","type":"inovelli-status-manager","z":"880aae7a.81bc","name":"Red Fail Blink","nodeid":"4","color":"11","level":10,"duration":"3","display":"1","switchtype":"16","x":1360,"y":140,"wires":[["be7a3200.901b88"]]},{"id":"be7a3200.901b88","type":"api-call-service","z":"880aae7a.81bc","name":"Send Blink","server":"497693ef.d5e6bc","version":1,"debugenabled":false,"service_domain":"zwave","service":"set_config_parameter","entityId":"","data":"","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":1590,"y":140,"wires":[[]]},{"id":"1121c535.19a1ab","type":"api-call-service","z":"880aae7a.81bc","name":"Turn off downstairs lights","server":"497693ef.d5e6bc","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"group.all_lights_no_upstairs","data":"{\"entity_id\":\"group.all_lights_no_upstairs\"}","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":590,"y":100,"wires":[["9cb026ef.bc075"]]},{"id":"9cb026ef.bc075","type":"delay","z":"880aae7a.81bc","name":"","pauseType":"delay","timeout":"1.2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":830,"y":100,"wires":[["23c364ae.ff71ec"]]},{"id":"23c364ae.ff71ec","type":"api-current-state","z":"880aae7a.81bc","name":"Downstairs Lights State","server":"497693ef.d5e6bc","version":1,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"group.all_lights_no_upstairs","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":1090,"y":100,"wires":[["7918ec23.6b13c4"],["31d9fbf.c162e84"]]},{"id":"497693ef.d5e6bc","type":"server","z":"","name":"Home Assistant"}]

1 Like

Thank your for you help!! It finally imported and even though I still got an error it helped me figure out what the problem was. In the call service I was defining an entity ID and that was causing the issue. Looks like the inovelli-status-manager passes the node to the call service, so I removed the entity ID and left ‘Data’ blank and it is now working!

@kerryandjane and @ExMachina you might give this a try and see if it fixes it for you as well.

My example:

1 Like

looks like Inovelli forums rich text. " vs “.
My problem was solved same day I asked it was me just not following instructions on the Inovelli Status Manager Node.

I’ll break it down to what I did. Pretty simple really.

  1. Go to Inovelli Status Manager Node. All the instructions are on there. But i’ll go on just in case.
  2. In a flow add 3 nodes. Inject node linked to the Inovelli Status Manager Node linked to a Call service node.
  3. In Inovelli Status Manager Node properties, add your node_id for your switch, select your color and effects. At the bottom select your switch too.
  4. In Call Service node properties, choose your server. in Domain, select Zwave. Under Service, set it as set_config_parameter

Shouldn’t need to adjust anything else.
If you’re getting API or connection error it’s gotta be connection to the server in the Call Service Node.

Import this.

[{"id":"c3fe4aff.a22b38","type":"api-call-service","z":"7af2a554.43ce1c","name":"","server":"644d8a16.7f5904","version":1,"debugenabled":false,"service_domain":"zwave","service":"set_config_parameter","entityId":"","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":600,"y":140,"wires":[[]]},{"id":"644d8a16.7f5904","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
1 Like

in the line before your code type ```javascript then on a new line type your code.

‘’’ vs

''' this ''' and this.
even this

end it with ``` and it doesn’t mess with your code.

1 Like

Thanks for the heads up!

For anyone who uses AppDaemon, I created an app that handles on/off/dimming control and can be extended or modified to handle scenes: https://pastebin.com/GkSC20Ly

1 Like

Has anyone had success with the newer docker-based open z-wave implementation in Home Assistant?

I’m able to automate anything “standard” in Node Red but can’t seem to set the RGB strip.

I’m using a “call service” node with the following params. I notice there is no “length” param available.
Server: Home Assistant
Domain:ozw
Service: set_config_parameter
Data: {“node_id”:“2”,“parameter”:“8”,“value”:“69077589”}

My LZW31-SN is node 2 and I can use the switch itself successfully in other automations.

Setting the “LED Indicator Color” in the dockerized open zwave qt UI does change the LED strip color, but I’d like to automate in node red.

Really appreciate the product and effort of everyone involved!