Inovelli Z-Wave Red Series Notification LED

Yes, but those settings cannot be using in any sort of way in Home Assistant(automations)…which is the issue.

Right right, I think you’d have to build scripts like this one as a work around.

Yes, I have the LZW31-SN dimmer. I’m glad that you got it working.

Thank you! I often make my scripts a bit more complex so I don’t have to think so hard when I am trying to make use of it later. I even added a couple of alternate names for animations (eg. “Pulse” and “Breath”) to make it less likely that I will type in an invalid name. :slight_smile:

1 Like

Yes, I’m fairly close! Ok so the parameter makes sense because you have the dimmer switch.

The part of your script that I can’t get working is the entity id. I keep getting an error for the line of code starts with node_id. Is this the latest version of the code? Everything else works, I just don’t want to have to hard code the node is field.

So awesome you put this together, since I just got the switch! I love the extra code, makes it more flexible!

1 Like

The nice thing about scripts are, you can pass variables to them so you can reuse the same code for multiple purpose. Make sure you pass the zwave. entity instead of your switch (or light) entity. In my example notice that I pass zwave.dimmer_family_room. I renamed that on the integrations page so it would be easier to identify should I ever get more.

service: script.inovelli_led
  entity_id: zwave.dimmer_family_room
  color: purple
  duration: 10 seconds
  effect: chase
  level: 10

Ok! So I figured something out that might be helpful. There seems to be some limitation on entity_id character limit. Once I renamed the entity_id to something shorter I got this to work! Thank you for the hard work. Now I can have fun with some notifications!

1 Like

Thanks for letting me know the switch uses parameter: 8 instead of 16.

With that knowledge I believe I have modified script.innovelli_led to make it work with both the dimmer and the switch. Change your parameter: 8 line to the following. It should work for your switch, but allow you to use the unmodified script with a dimmer in the future.

parameter: >
  {# Set a default value so this parameter may be omitted. #}
  {% set dimmer = dimmer|default('false') %}
  {{ "16" if dimmer == "true" else "8" }}

Since the above code defaults the dimmer to “false”, you don’t have to modify anything else. But when you are ready to add a dimmer add dimmer: "true" like the following.

service: script.inovelli_led
  entity_id: zwave.dimmer_family_room
  color: purple
  dimmer: "true"
  duration: 10 seconds
  effect: chase
  level: 10

What a great idea! That’s awesome! I just set this up to work with my alarm system

1 Like

Just chiming in to say thank you! I (a beginner) was able to get your example working on my system with little effort. I appreciate the time you took sharing everything. Now the fun part: I have to think of ways to utilize this new tool

1 Like

I’m glad you were able to make use of it! Great job!

Thank you @BrianHanifin!

You could even skip the dimmer parameter and infer the device type from the product_name attribute. I did this:

parameter: "{{ '16' if 'LZW31' in state_attr(entity_id, 'product_name') else '8' }}"
1 Like

This is awesome, set it up tonight, they are green when my alarm is off and red when my alarm is on, will play to add other things…

I had some weird issues, I was triggering them on alarm_disarmed and “alarm_armed” events, and I had to move the scripts above other calls like locking locks, etc… Or maybe it just doesn’t work sometimes and it’s random? Not sure yet…

Also, I could just test this and will tomorrow, but can you run script with multiple entities or do you need to call it for each zwave entity?


entity_id: zwave.hallway_light

Or could you make it work with…

- zwave.hallway_light
- zwave.hallway_bathroom_light
- zwave.master_bedroom_light

Right now I copy/pasted the call for each entity like the example…


1 Like

I also noticed if you use the switch, it goes back to the default Blue, can you turn that off?

Brand new to HA but have 30some Inovelli switches in the house. This is a known firmware bug with the switches and there’s actually a beta firmware release on their site right now for the red series switch and dimmer that should address this.

Over on Hubitat I went away from using the Inovelli drivers and used a third party one which would allow me to setup automations to modify the default LED colour. So in my case when alarm is armed, default LED colour changes to red, when disarmed default LED colour changes to blue. This would allow it to stay through switch presses or zwave commands but you lose the functionality of blinking/flashing or any of the other notification “animations” there are. Solid colour only. Not sure if anybody has gone down that road yet on HA.

1 Like

I just saw that Beta firmware, I’m thinking about loading it up now and testing on 1 switch

@BrianHanifin, thanks for gathering the relevant Inovelli posts and putting together this script! I have both switches and dimmers and noticed that the effects didn’t work quite right on the switches. In particular the “pulse” effect would just stay solid (I didn’t test the blink effects). It’s possible this is something in my revision of firmware, or with the Inovelli XML files I used to set up my switches and dimmers in Home Assistant. Nobody else seems to be complaining about the switch ‘pulse’ effect not working. Anyway, I have a fix for it.

I also noticed that using the “solid” effect doesn’t make use of the gradient in the LED strip on the dimmer if the lights are <100% power and, if you use the lights the effect is lost and they go back to their default blue. I really wanted to set my LEDs to red and make them dimmer at night, then change them back to some other color and brightness in the day.

I’m happy to share the code, and I can submit a merge request against your git repository if you’re interested.

Update: I posted my script on github in case anyone is interested:

1 Like

Based on BrianHanifin’s work I’ve added support for the LZW36 Fan / Light Switch, which has two LED strips. The updated script is backward compatible with old automations, but for the LZW36 it needs either “Type: Fan” or “Type: Light” in order to set the appropriate parameter.


Nice work Kevin! I’ve been away for a bit, but I’m starting to get caught up on what I’ve missed.

I really like the concept of extracting the model from the Product Name attribute. Unfortunately my product_name appears as Unknown: type=0001, id=0001. So, I can’t use that part of your code.

What Zwave integration are you using? I’m using the old default Zwave integration. I have been waiting to try the OpenZwave addon (beta) as I have some complex items to support: smoke detectors, deadbolt, Inovelli dimmer taps and leds… :slight_smile:

I also use the open z-wave 1.4 that comes with Home Assistant. Looking forward to 1.6, when that’s ready, but my wife won’t have the patience for anything beta. Inovelli’s config files (and many others, in my experience) aren’t included by default but they’re simple to add. At a high level, you’ll remove the device, add the Inovelli configuration files, and then re-add the switch to the network. It’s a lot of steps, but it isn’t as complicated as it looks. Here’s how I did it (in as much detail as I can muster, in case anybody else needs this too):

  1. You’ll want to jot down the names of your devices and entities so you can use the same names later. That way your automations and templates won’t need to change.

  2. Remove your switches from the z-wave network. It’s the opposite of pairing, if I remember correctly, but check the Inovelli manual for whichever switches you have. The switch, dimmer, fan / light combo switch, and the LED bulb each have a different process.

  3. Get the Inovelli configuration files for your devices from the Inovelli github. Be sure you download the contents of the xml file itself and not the page displaying the xml file, as I’ve done before. :slight_smile: I open the file with the “raw” button and copy / paste, but you can also do a git clone of the whole directory.

  4. I’m running Home Assistant in docker and if you’re running core, a VM, or HassIO on a Raspberry Pi the files will be in a different location for you but the rest of the instructions would be the same. In docker, I start a bash session with “docker exec -it hass bash” where hass is the name of my container. From there, I put the files in the directory /usr/local/lib/python3.7/site-packages/python_openzwave/ozw_config/inovelli/ but you might try a “find / -type d -iname ozw_config” to locate it. If you have more than one, I’m not sure how to tell which one Home Assistant is using. Maybe just make the modifications to both?

  5. Next you have to tell open z-wave how to find them and what they are. Open “/usr/local/lib/python3.7/site-packages/python_openzwave/ozw_config/manufacturer_specific.xml” and find the Inovelli section. It’ll look like this:

        <Manufacturer id="0312" name="Inovelli">                               
                <Product type="1e01" id="1e01" name="NZW30 Smart Switch" config="inovelli/nzw30.xml"/>  
                <Product type="1e00" id="1e00" name="NZW30 Smart Switch (w/Scene)" config="inovelli/nzw30.xml"/>
                <Product type="1e02" id="1e02" name="NZW30 Smart Toggle Switch (w/Scene)" config="inovelli/nzw30.xml"/>
                <Product type="1f01" id="1f01" name="NZW31 Smart Dimmer" config="inovelli/nzw31.xml"/>
                <Product type="1f00" id="1f00" name="NZW31 Smart Dimmer (w/Scene)" config="inovelli/nzw31.xml"/>
                <Product type="1f02" id="1f02" name="NZW31 Smart Toggle Dimmer (w/Scene)" config="inovelli/nzw31.xml"/>
                <Product type="b211" id="241c" name="NZW36 1-Channel Smart Plug-In Module" config="inovelli/simple_module.xml"/>
                <Product type="2400" id="2400" name="NZW36 1-Channel Smart Plug (w/Scene)" config="inovelli/nzw36.xml"/>
                <Product type="b221" id="251c" name="NZW37 2-Channel Smart Plug" config="inovelli/simple_module.xml"/>
                <Product type="2500" id="2500" name="NZW37 2-Channel Smart Plug (w/Scene)" config="inovelli/nzw37.xml"/>
                <Product type="b212" id="271c" name="NZW39 Smart Plug Dimmer" config="inovelli/simple_module.xml"/>
                <Product type="2700" id="2700" name="NZW39 Smart Plug Dimmer (w/Scene)" config="inovelli/nzw39.xml"/>
                <Product type="6000" id="6000" name="NZW96 1-Channel Outdoor Smart Plug" config="inovelli/nzw96.xml"/>
                <Product type="6100" id="6100" name="NZW97 2-Channel Outdoor Smart Plug" config="inovelli/nzw97.xml"/>
        <Manufacturer id="031E" name="Inovelli">                                      
  1. You want the second Inovelli section; the one with manufacturer ID 031E. The first Inovelli section has ID 0312 and you don’t want that one. The section with ID 031E is probably empty and you need to point it at the configuration files you just added. You should be able to copy and paste these “<product…>” lines, but double check that the file names are right. If you’re adding something in the future that isn’t in this list, you can get the type and id from the .xml file you downloaded.
        <Manufacturer id="031E" name="Inovelli">                                      
                <Product type="0002" id="0001" name="LZW30-SN Switch Red Series" config="inovelli/lzw30-sn.xml"/>
                <Product type="0001" id="0001" name="LZW31-SN Dimmer Red Series" config="inovelli/lzw31-sn.xml"/>
                <Product type="0005" id="0001" name="LZW42 Multi-Color Bulb" config="inovelli/lzw42.xml"/>
                <Product type="0006" id="0001" name="LZW41 Multi-White Bulb" config="inovelli/lzw41.xml"/>
                <Product type="0007" id="0001" name="LZW40 Dimmable  Bulb" config="inovelli/lzw40.xml"/>
                <Product type="000e" id="0001" name="LZW36 Fan/Light Dimmer" config="inovelli/lzw36.xml"/>
  1. Add your device back to the z-wave network (see step 2). You should see the make and model for your device once the status is “complete”.
    If not, it could be an issue with the xml file, or that the product type or id didn’t match. You’ll have to remove the device from the network and debug from there.

  2. Rename the devices and entities with the originals from step one, and check an automation or two to ensure everything is still working.

  3. Always remember to “heal” your network once you’re done adding all your switches back.

It’s worth noting, for anybody running docker, that every time the container shuts down and restarts these modifications disappear. Your device config and naming persists via a cache in zwcfg_*.xml though. So once you’ve got it added you don’t have to do this again. It’ll still be known to be an LZW31-SN (or whatever). If the container is restarted though, and you want to add a new device, you’ll have to re-do the modifications above. I keep a copy of section 031E in a “z-wave notes.txt” and copies of the xml files in a subdirectory of my hass directory for convenience.

P.S. I was listening to the Home Assistant podcast as I was typing this up, and they specifically mentioned you while discussing the Inovelli switches. :slight_smile: If you don’t listen to the podcast regularly, it’s early in the most recent episode. Congratulations!

1 Like

Thanks for letting me know. I haven’t listened to the new one yet. I like to wait until I’m ready to install the version the episode is about. Right now that means I have to wait for Browser_Mod to be updated so my pop up centric 1-page UI can work with it. :slight_smile:

If I can figure out that the new OpenZwave integration supports my deadbolt, smoke alarms, and the Inovelli dimmer, then I will give it a shot soon.