Inovelli Z-Wave Red Series Notification LED

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.

Extra calls are not required, I’m using the script as is right now and it works perfectly.

i see, i am not sure why it complains for me, i will reload HA and see if this fixes it. thanks for the code again

1 Like

This works for me.
The weird thing is that I am using the script with the 4 separate messages and it works for the switch, fan, and fan light devices but doesnt work for my dimmers. But then i try the script that sends one message it does work on my dimmers and not the rest. So I ended up calling different scripts for now. Anyone else have this issue?

I’ve since adjusted it:

1 Like

Standing on the shoulders of giants, I’ve written a script to configure the indicator color alongside—or separately from—the effects. I use the LED indicator strip more than the effects, and it didn’t look like anybody else was doing this. It should be straightforward to use. The current version of the script is for zwave2mqtt container 2.4.0, but there’s a version that will work with 2.2.0 in the history for the script.

https://github.com/kschlichter/Home-Assistant-Inovelli-Red-Dimmer-Switch

3 Likes