Inovelli Z-Wave Red Series Notification LED

…And that’s the last piece I’ve been waiting for! Time to switch to zwave js! Thanks for doing this script, @BrianHanifin. My family get’s a TON of usage out of it.

1 Like

Thanks Kevin, that’s nice to hear! Just make sure you are running the latest Home Assistant 2021.03.0 beta version (b2 at the moment).

You might also try keep your Z-Wave JS server of choice as up to date as possible as well. I was having Z-Wave devices disconnecting from the network, and updating this morning to Z-Wave JS Server version 1.1 appears to have stabilized things. (Talk about bleeding edge.) :wink:

Holy Bananas YESSSSS! Such an easy change for NR nodes as well!!!

Can I just say you guys are amazing? Man, I may not always know what you’re saying and/or doing, but I love seeing how passionate you guys are in making things work. It’s truly inspiring.

Thanks @BrianHanifin for quarterbacking this. Excellent work.

4 Likes

Good to know. For those running the docker container, that’s tag 2.0.0 (or “latest”).

2 Likes

Today’s changes:

  1. Added zwave_integration at top of “variables:” section to allow users to define which integration is installed (“zwave”, “ozw”, “zwave_js”). I just don’t see a simple way to auto-detect this.
  2. Added a comment describing the “model” variable.
  3. Replaced personal “script.debug” service call with universal “persistent_notification.create”. Unremarking these lines could help you troubleshoot why something isn’t working as expeceted.
  4. Updated broken spreadsheet link with public copy stored in my Google Docs account. Thanks for the heads up @kschlichter!
2 Likes

Hi again!

I’m trying to get this to work with Zwave JS. I’m not sure it’s possible yet. I think your script will work but I can’t get it to work manually with the configuration piece. Has anyone tried this with Zwave JS? I know they just allowed the ability to use the configuration parameter in the last release. Also btw I did get the scenes working, thanks again for helping me with your code!

I haven’t tried this script specifically, but if you have any of the Red on/off switches (LZW30-SN) it could be that Parameter 8 on the zwaveJS side is broken up into multiple parameters. I had a similar script I had to break out into four service calls to get the notification light to work. Check this out for more info: https://github.com/zwave-js/node-zwave-js/pull/1411

1 Like

Thank you for forwarding the information. Not sure if it’s possible yet based on the information you provided or I might need to play around with it more since Parameter 8 is broken up.

You can’t set the “raw value” just yet, so you’ll have to break them up.

Do you happen to have an example of that? I haven’t been successful in breaking it up. Sounds like id need to create a script with the 4 parameters.

I can confirm that the script doesn’t work with my LZW30-SN because of the parameter 8 thing. Thanks for pointing us to that GitHub PR @DaveCo1701. I’ll keep an eye on developments there.

Here’s the script I created for this. I’m sure there is a more elegant way to do this, but it works.

switch_light_alert:
  alias: VISUAL ALERT - Switch LED
  sequence:
  - target:
      entity_id:
      - switch.front_porch_light_switch
      - switch.living_room_switch_outlet
      - switch.master_bed_switch_outlet_switch
    data:
      parameter: '8'
      bitmask: 2130706432
      value: 0
    service: zwave_js.set_config_parameter
  - target:
      entity_id:
      - switch.front_porch_light_switch
      - switch.living_room_switch_outlet
      - switch.master_bed_switch_outlet_switch
    data_template:
      parameter: 8
      bitmask: 255
      value: "{% if is_state(\"group.exterior_doors\", \"on\") %}\n  0\n{% elif is_state(\"\
        alarm_control_panel.simplisafe_alarm\", \"disarmed\") and now().hour >= 19\
        \ %}\n  Yellow\n{% elif is_state(\"alarm_control_panel.simplisafe_alarm\"\
        , \"disarmed\") and now().hour <= 6 %}\n  Yellow\n{% else %}\n  0\n{% endif\
        \ %}\n"
    service: zwave_js.set_config_parameter
  - target:
      entity_id:
      - switch.front_porch_light_switch
      - switch.living_room_switch_outlet
      - switch.master_bed_switch_outlet_switch
    data_template:
      parameter: 8
      bitmask: 65280
      value: "{% if is_state(\"group.exterior_doors\", \"on\") %}\n  10\n{% elif is_state(\"\
        alarm_control_panel.simplisafe_alarm\", \"disarmed\") and now().hour >= 19\
        \ %}\n  10\n{% elif is_state(\"alarm_control_panel.simplisafe_alarm\", \"\
        disarmed\") and now().hour <= 6 %}\n  10\n{% else %}\n  0\n{% endif %}\n"
    service: zwave_js.set_config_parameter
  - target:
      entity_id:
      - switch.front_porch_light_switch
      - switch.living_room_switch_outlet
      - switch.master_bed_switch_outlet_switch
    data_template:
      parameter: 8
      bitmask: 16711680
      value: "{% if is_state(\"group.exterior_doors\", \"on\") %}\n  0\n{% elif is_state(\"\
        alarm_control_panel.simplisafe_alarm\", \"disarmed\") and now().hour >= 19\
        \ %}\n  0\n{% elif is_state(\"alarm_control_panel.simplisafe_alarm\", \"disarmed\"\
        ) and now().hour <= 6 %}\n  0\n{% else %}\n  0\n{% endif %}\n"
    service: zwave_js.set_config_parameter
  - target:
      entity_id:
      - switch.front_porch_light_switch
      - switch.living_room_switch_outlet
      - switch.master_bed_switch_outlet_switch
    data_template:
      parameter: 8
      bitmask: 2130706432
      value: "{% if is_state(\"group.exterior_doors\", \"on\") %}\n  3\n{% elif is_state(\"\
        alarm_control_panel.simplisafe_alarm\", \"disarmed\") and now().hour >= 19\
        \ %}\n  3\n{% elif is_state(\"alarm_control_panel.simplisafe_alarm\", \"disarmed\"\
        ) and now().hour <= 6 %}\n  3\n{% else %}\n  0\n{% endif %}\n"
    service: zwave_js.set_config_parameter
  mode: single
4 Likes

Thank you! I will see if I can copy this until Zwave JS is updated and then can leverage BrianHanifins code. Much appreciated

I was thinking about buying the dual fan/light switch but was wondering… I see that obviously the leds take a little work but do the switch/buttons work out of the box? Like recognized in HA and stuff.
Inovelli Z-Wave Fan & Light Switch (Red Series) | ZWave Fan Control & Light Dimmer | Independent Controller of Fan Speed & Light Bulbs https://www.amazon.com/dp/B08665WJ2B/ref=cm_sw_r_cp_api_glt_fabc_VTDWYN3ZSW7XCJRYYV6N

I created a more yaml format version using DaveCo1701 code and using the template for the values here if you scroll down a bit from BrianHanifin : https://brianhanifin.com/posts/inovelli-dimmer-status-led-home-assistant/

It’s not as efficient but I figured the comments for all the parameters are helpful. I only use my notification light currently for one action

switch_light_on:
  alias: VISUAL ALERT - Switch LED On
  sequence:
  - target:
      entity_id: switch.front_door_light
    data:
      parameter: '8'
      bitmask: 2130706432
      value: 0
    service: zwave_js.set_config_parameter
  - target:
      entity_id: switch.front_door_light
    data_template:
      parameter: 8
      bitmask: 255
#Color
      value: Red
    service: zwave_js.set_config_parameter
  - target:
      entity_id: switch.front_door_light
    data_template:
      parameter: 8
      bitmask: 65280
#Level
      value: 10
    service: zwave_js.set_config_parameter
  - target:
      entity_id: switch.front_door_light
    data_template:
      parameter: 8
      bitmask: 16711680
#Duration
      value: 0
    service: zwave_js.set_config_parameter
  - target:
      entity_id: switch.front_door_light
    data_template:
      parameter: 8
      bitmask: 2130706432
#Effect
      value: 1
    service: zwave_js.set_config_parameter
  mode: single
1 Like

Here’s how I’m using the new calls at the moment. It does support both the single param method as well as multiple calls for the other switches. I’ve got a PR in upstream to fix the max value for the lzw31-sn param and see if it should be split apart like the other switches.

It’s also got a set of input_number and template sensor to calculate the value for the duration since that’s not fun to try to do by hand.

2 Likes

With the release of the fixed configs, I’ve updated the above script to use just the named parameters which simplifies the logic immensely. Please note that the zwavejs version is important to make sure the updated configs are there, and I also had to restart Hass in order for it to see the right values.

1 Like

Here’s the original with the bitmasks put in:

1 Like

thanks @firstof9, the code complains about a duplicate “target”
I believe you have forgotten the service call above each target but have to go home and try it.