Guide for installing Inovelli devices in Home Assistant (OZWave v1.4)

I have two LZW60 multisensors. I’ve paired, and unpaired both sensors several times, but unfortunately every time I pair them back with zwave, I get the same “Unknown…” in the console.

@firstof9 Thanks for the suggestion. I’ve tried doing that as well, but unfortunately it doesn’t change the device name. I still get all of the settings in the zwave console for both of the devices and I don’t yet understand how these values are assigned when pairing.

Can’t you click the device and click the cog in the upper right and rename the device?

Yes, that is the case. I can rename the device that way I guess that I was just looking for a way to not have to go through that step and ensure that I’ve set up everything correctly. I’ve never had this issue in the past with any of the other 56 zwave devices that I’ve added to the network. :slight_smile:

It’s just a name, best you rename them via the UI anyways it’s technically the only place that matters for renaming them.

Well, I think that I might have mispoke when all was well for pairing the device. All of the nodes are showing up correctly, but I’m unable to access/adjust any of the node onfiuration operations in the zwave console. I click on the dropdown menu and nothing happens. I checked my other devices and they don’t exhibit the same condition.

To recap, I’ve added, removed, and refreshed the multisensor in the console. I have two LZW60 sensors and both exhibit the same conditions when paired. Is there anything else that I can check to help naorrow this down that I’m missing? Thanks!

I checked my logs after restarting and I noticed that I’m receiving this error for the LZW60 multisensor

Log Details (ERROR)
Logger: openzwave
Source: components/zwave/__init__.py:498
First occurred: 10:18:05 PM (1 occurrences)
Last logged: 10:18:05 PM

Error in manager callback
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/openzwave/network.py", line 944, in zwcallback
    self._handle_node_removed(args)
  File "/usr/local/lib/python3.8/site-packages/openzwave/network.py", line 1249, in _handle_node_removed
    dispatcher.send(self.SIGNAL_NODE_REMOVED, \
  File "/usr/local/lib/python3.8/site-packages/pydispatch/dispatcher.py", line 333, in send
    response = robustapply.robustApply(
  File "/usr/local/lib/python3.8/site-packages/pydispatch/robustapply.py", line 55, in robustApply
    return receiver(*arguments, **named)
  File "/usr/src/homeassistant/homeassistant/components/zwave/__init__.py", line 498, in node_removed
    entity = hass.data[DATA_DEVICES][node_key]
KeyError: 'node-66'

which is followed by:

Logger: openzwave
Source: /usr/local/lib/python3.8/site-packages/openzwave/network.py:1549
First occurred: 10:18:05 PM (1 occurrences)
Last logged: 10:18:05 PM

Z-Wave Notification ValueRemoved for an unknown value ({'id': 72057595159969795}) on node 66
Home Assistant has started!

Is there a particular way to clear out the cache?

There’s a file in your config folder named ozwave_daklfjapoiea;ijl;akjflaskjf.xml, delete that and it’ll clear your cache. But you might have to reconfigure everything. Excluding the node and including it is effectively the same thing but only affects your current node. Are you sure you followed the steps properly for this device? It shouldn’t come up as unknown.

I’m pretty sure that everything is set up correctly. The only errors that I receive are those that I posted above so it seems as though it’s pulling the config files correctly. I even tried renaming the folder where the cconfiguration folder is located to /config/openzwave/config/ to see if pointing to a new location would help, but unfortunately it didn’t make any different.

Below is my config file:

zwave:
  usb_path: /dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_XXXXXXXXXX
  network_key: !secret z_wave_network_key
  config_path: /config/openzwave/config/

I have the config folder copied from the link above in the following folder where all of the other manufacturers are located. I did not copy anything over from the ozwave 1.4 link besides the config folder. I’m assuming that’s all that’s needed?

/config/openzwave/config/

The manufacturer_specific.xml reads as follows for the Inovelli section:

	<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>
	<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="000d" id="0001" name="LZW60 4-in-1 Sensor" config="inovelli/lzw60.xml"/>
	</Manufacturer>

And, other than that I don’t think there’s anything else left to set up. Do you see anything that I’m missing?

where did you get this LZW60 file? Does it contain the correct information? I had to doctor the 5 I included in the tutorial. I didn’t just ‘grab it’ from v1.6.

Well, maybe that’s where I’m having my issue. I didn’t see the LZW60 in the post for all of the other Inovelli equipment and instead grabbed the file from the link that @jhelmer25 referenced in post 27 of this thread . I’m guessing that the file he linked to is ZW 1.6 and not 1.4 compatible?

Is there a LZW60.xml file available for incorporation, or could you maybe point me into the direction on what needs to be revised in the 1.6 LZW60.xml to be compatible with the 1.4? Comparing the other Inovelli xml files linked, I can see there’s a lot less in the 1.4 than the 1.6 versions.

Any suggestions on where to get started to modif the 1.6 xml file to be compatible with the 1.4 ozwave?

I compared a 1.4 file and a 1.6 file. Removed all the things that were not present in the 1.6 file. I then went through a command class in an existing file (in 1.4), and verified the XML shape stayed the same. Then, I copied the xml from the 1.4 file and changed all the parameters to match the 1.6 file. I then added the functionality that the device said by adding the appropriate command class. It wasn’t simple and you need to know XML and the device you own. Also, 1.4 has to support the features that your device has.

Well, that certainly doesn’t seem trivial at the least. I don’t have much experience with xml since this is really only a hobby for me and not something that I get to spend a lot of time working on.

With that, it might make sense for me to look at the 1.6 beta for HA and check that out. I saw on the latest release they had a way to test out the new integration to see how well it was working.

@petro I apreciate the response and for teaching me more about how all of this is put together.

I used the instructions here to to add the red switches, dimmers, and a fan controller. Worked fine. Anyone know how to control the RF protection from within Home Assistant to disable the internal relay? I can control the local protection, just not the RF protection.

There is a thread here about the two options on the inovelli community.

I’ve read to control the RF Protection, it uses the COMMAND_CLASS_PROTECTION version 2. The device supports this command class.

Hi folks, I’m having some issues pairing an Inovelli LZW31-SN, but it always shows up as an unrecognized device. I have followed the instructions here, and the device shows up as Unrecognized device.

In my configuration.yaml I have:

zwave:
    usb_path: /dev/ttyACM0
    config_path: /config/zwave/config/

I have modified my /config/zwave/config/manufacturer_specific.xml with:

	<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>
	<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"/>
	</Manufacturer>

The associated product specific config xml files have been added to /config/ozwave/config/inovelli directory, and they are the 1.4 OpenZwave files.

A log from a recent attempt to add the switch can be found here. As far as I can see, everything in the log looks fine (this is my first attempt at anything Z-wave-related though), and I have everything configured properly. I have tried many different things that I’ve read on here, such as healing the network after adding the switch, and refreshing the node for the switch after adding it, but to no avail. It always shows up as Unknown Node with the entity named zwave.unknown_node_9.

Not sure if I’m missing something? If anyone can shed any light, or provide other avenues to figure this out I’d be so grateful!

Hmm, strange issue, when I follow these steps, all entries in my Z-Wave Network Management card disappear. Removing the configuration yaml restores things. Anyone encountered this?

You’re doing something wrong with the format in one of the files. This would likely show up as an error in your logs.

Ok… I feel stupid. You’re exactly correct Petro, I had a typo in my USB device path. All fixed!

1 Like

I installed Open Z Wave (beta) through the Add Integration function and have nothing in configuration.yaml related to Z-wave. When I add the snippet of code under Step 3 of the original post to in configuration.yaml, my Open Z Wave integration breaks. I’ve done everything else, though, carefully downloading all of the manufacturer files and putting them into the /config/ozwave/config directory and doing the necessary edits…

So if I can’t modify configuration.yaml, how to do I point Home Assistant to these device files?

I went over to the OpenZWave add-on and under the Configuration tab, added the directory:

device: >-
  /dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C1301B05-if00-port0
network_key: >-
  !secret key 0xYY..........
config path: /config/ozwave/config

…but no dice.

This guide only works for the 1.4 openzwave (the built in version), not the OpenZwave beta. If you want to adjust the files in the beta, you need to access your system through other means. It’s likely impossible if you are using HassOS.