Legrand Nuvo multi-room audio support

I didn’t try David’s code which also looks promising. I went straight to texecom2mqtt which did a good job of making the setup easy via the add-on route. It found the panel and all the attached sensors without any manual intervention. So far I have only used the alarm sensors to trigger other things but the panel status, power settings etc. all seem present and correct. I haven’t any real need to arm/disarm as I tap in-and-out using the prox fobs.

I find MQTT (mosquitto) to be completely stable and now have shelly and Ikea devices hooked up through this route. As someone learning I also like that I can see what’s happening in terms of messages from within HA or via the MQTT explorer client.

Hi Ed,

I haven’t tried with the Essentia but got the Grand Concerto working fine. They both use the same protocol and I have always viewed then as interchangeable. I do have an Essentia around so could always give it a try.

A couple of thoughts which you have probably already got past:

  1. Can you configure the Essentia via the serial port and Serial->USB cable you are using for the HA integration? Can we confirm that the cable works?

  2. Have you confirmed the USB port reference - I found myself double-checking the port ID via SSH as I wasn’t sure about the sequence on my HA box. I have the shell addon within HA and then used the command dmesg (I don’t have lusb available):

dmesg | grep tty
...and at the end I get confirmation of the two USB devices I have
usb 1-1.3: pl2303 converter now attached to ttyUSB0
usb 1-1.4: ch341-uart converter now attached to ttyUSB1

USB0 is the Nuvo cable. I have a zigbee stick on USB1.

Kind regards,

Tom

When you’ve correctly identified your serial port device, also check device permissions following the steps I gave here:

If you have multiple usb tty devices it’s also a good idea to add an alias for the nuvo device to ensure the device names don’t get changed around on reboot.

If it’s still not working at this stage:

Congratulations on being the the first person to try this out on an Essentia G :slight_smile:

While the docs say it’s protocol compatible with the GC there may well be a few oddities that need ironed out.

Did HA display an error message when trying to connect?

To give me an idea what’s going on under the hood add this in configuration.yaml:

logger:
  logs:
    nuvo_serial: debug

The log will be long so better paste it in a pastebin rather than here.

Hi Tom,

Thanks so much for your reply. I was able to configure the Essentia G via the USB to serial cable and the configurator app, so I think all is good there. I ran the dmesg command you suggested and it returned this at the end:

usb 1-1.1: p12303 converter now attached to ttyUSB0

I then used this as the port when setting up the integration:

/dev/ttyUSB0

Unfortunately this didn’t work for me, but I will try posting my log below and double checking permissions as sprocket-9 suggested.

Thank you,

Ed

Thanks for taking the time to look at my issue. I’ve tried looking into the suggestions that you offered, including the serial port permissions. In my case the homeassistant process is owned by root. I also made sure that the dialout group is showing when I run ‘groups root’.

I did notice a basic error message after HA tried to connect to the Nuvo:

7:23:12 PM (Error) nuvo_serial (custom integration)

When I select it, this is revealed:

This error originated from a custom integration.

Logger: custom_components.nuvo_serial.config_flow
Source: custom_components/nuvo_serial/config_flow.py:111
Integration: nuvo_serial (documentation, issues)
First occurred: 7:23:12 PM (1 occurrences)
Last logged: 7:23:12 PM

Traceback (most recent call last):
File “/config/custom_components/nuvo_serial/config_flow.py”, line 111, in async_step_init
self._nuvo = await get_nuvo_async(
File “/usr/local/lib/python3.8/site-packages/nuvo_serial/init.py”, line 33, in get_nuvo_async
await nuvo.connect()
File “/usr/local/lib/python3.8/site-packages/nuvo_serial/grand_concerto_essentia_g.py”, line 163, in connect
self._setup_subscribers()
File “/usr/local/lib/python3.8/site-packages/nuvo_serial/grand_concerto_essentia_g.py”, line 255, in _setup_subscribers
for msg_type in MSG_CLASS_TRACK[self._model]:
KeyError: ‘Essentia_G’

I went ahead and updated configuration.yaml, though the log that was generated was sadly too large for pastebin. I placed it on Dropbox, hoping that might work for you:

https://www.dropbox.com/s/ns6igjaofbcc1ix/Nuvo%20log%2001.txt?dl=0

Thank you for taking the time to work with me on this, I appreciate it.

Ed

Hi Ed,

Ohhh yeah I spotted this problem with the missing Essentia_G key a while ago and completely forgot about the bug fixes I made. The fixes are in the nuvo-serial library that the integration uses but it’s not in a pypi installable release yet as I’m working on some other things before doing one, so you’ll need to grab the changes from the git repository for now.

Probably easier for you to just to copy the new files over the top of the installed ones:

cd /usr/local/lib/python3.8/site-packages/nuvo_serial/
wget https://raw.githubusercontent.com/sprocket-9/nuvo-serial/main/nuvo_serial/grand_concerto_essentia_g.py -O grand_concerto_essentia_g.py
wget https://raw.githubusercontent.com/sprocket-9/nuvo-serial/main/nuvo_serial/connection.py -O connection.py
wget https://raw.githubusercontent.com/sprocket-9/nuvo-serial/main/nuvo_serial/const.py -O const.py
wget https://raw.githubusercontent.com/sprocket-9/nuvo-serial/main/nuvo_serial/message.py -O message.py

There’s probably more little fixes like this to do, so if you encounter problems send the log over again. It looks like DEBUG level logging is on for everything in HA which is why the log is so huge, try changing the default log level:

logger:
  default: info
  logs:
    nuvo_serial: debug

Thanks for the additional help. I was able to copy across the new files - the good news is, it seems like it is actually trying to do something now when I add the integration. I see the window area flashing, before it fails to connect again.

Thanks for the tip on the log file piece, I made those changes and was able to get it into Pastebin this time (hopefully I did this right):

Thanks again for your continued help.

Ed

I take it back - I tried again a few hours later and now when I add the integration it appears to be working correctly! I can now see my sources and zones listed. I’m new to the Nuvo system and HA but am really looking forward to playing with this setup. Thanks for creating this integration and working with me to help resolve the issues I was having, I really appreciate it!

Ed

Ed great to hear you got it up and running!

While trying to work out why it wasn’t working for you I came across this in the docs:

A special exception to this rule is made for an Essentia E6G system that is in STANDBY mode. STANDBY mode is entered when an ALL OFF command is issued from a Control Pad (key press or IR control), or when the ALLOFF command is issued to the RS232 port (see paragraph 6.4). The Essentia E6G system is Energy-Star compliant, meaning that the entire system has to consume less than one watt when in this STANDBY mode. For this reason, the Main Processor Unit and all the Control Pads go into a very low-power sleep state. The first character received on the E6G system’s RS232 port in STANDBY mode
will “wake up” the processor, but a pause of 5 milliseconds is required between this “wake-up” character, and the actual command character sequence (beginning with the ASCII “
” character) to the RS232 port.

There is currently nothing in the code to handle this special standby mode for the Essentia, so from what’s it’s saying I think the first command sent when the system is in standby will fail, but it will cause the system to wake up and subsequent commands will work as normal. Do you experience this?

Hi there

Appreciate your work on this. I also wanted to try your custom component for myself. I am having trouble getting it running though.

Like the user above my model is the Essentia G (NV-E6GM)

USB to serial connecting attatched to /dev/ttyUSB2. I know the cable works becuase I am currently using homebridge to control my amp.

When trying to switch to this i enter the port and model but it keeps saying failed to connect.

This error originated from a custom integration.

Logger: custom_components.nuvo_serial.config_flow
Source: custom_components/nuvo_serial/config_flow.py:111
Integration: Nuvo multi-zone amplifier (serial) (documentation, issues)
First occurred: 5:39:28 PM (1 occurrences)
Last logged: 5:39:28 PM

Traceback (most recent call last):
File “/config/custom_components/nuvo_serial/config_flow.py”, line 111, in async_step_init
self._nuvo = await get_nuvo_async(
File “/usr/local/lib/python3.8/site-packages/nuvo_serial/init.py”, line 33, in get_nuvo_async
await nuvo.connect()
File “/usr/local/lib/python3.8/site-packages/nuvo_serial/grand_concerto_essentia_g.py”, line 163, in connect
self._setup_subscribers()
File “/usr/local/lib/python3.8/site-packages/nuvo_serial/grand_concerto_essentia_g.py”, line 255, in _setup_subscribers
for msg_type in MSG_CLASS_TRACK[self._model]:
KeyError: ‘Essentia_G’

Any suggestions on what I can try?

Hi Ank,

This is the same error Ed encountered. The fix is to follow the steps in this post Legrand Nuvo multi-room audio support - #75 by sprocket-9

So I followed the steps.
Used terminal to cd into the nuvo_serial directory.
Ran wget to get the 4 updated files. I can see them in the nuvo serial folder. Restarted server for good measure.
Trying to add the integration now gives me the error “config flow could not be loaded”

Logger: homeassistant.config_entries
Source: config_entries.py:671
First occurred: 2:18:38 PM (1 occurrences)
Last logged: 2:18:38 PM

Error occurred loading configuration flow for integration nuvo_serial: cannot import name ‘DOMAIN’ from ‘custom_components.nuvo_serial.const’ (/config/custom_components/nuvo_serial/const.py)

I also tried uninstalling the add on from hacs and repeating the whole process from scratch but I still get the error. I’m unable to get to the port selection and model window.

Im really itching to get this working :slight_smile: Any more advice?

Hmm that’s an odd one, no reason DOMAIN should not be found in const.py.

Make sure you’re in the correct nuvo_serial directory when you do the wget.

The library (correct one):

/usr/local/lib/python3.8/site-packages/nuvo_serial

The HACS integration (incorrect one):

/config/custom_components/nuvo_serial/

If that is what has happened, you’ve overwritten the integration files doing the wget in the wrong directory, so you’ll need to repeat the wget in the correct directory then delete and reinstall the HACS integration.

Change the order: reinstall the integration first, then wget the new files.

First off, thanks for working with me on this. Im kind of a newb so bear with me please. Using the wrong directory was the mistake i made, but i still cannot get my issue fixed.

I dont know if im able to access that library directory. I’m running Hass.io Supervised on a RPi4 (the official image i think?)

In terminal (add on), when i try to cd to the path you mentioned it is saying no such directory exists.

Post 40 in this thread goes into this issue briefly. Is this because im running Hass.io on Pi4 and not the python virtual env setup? Am I out of luck?

No problem, I don’t mind trying to get you up and running with this - you’re having to tinker under the hood here so things can go wrong.

I don’t use hass.io myself, just a simple python virtualenv, so I’m not too familiar with how it works but it looks like multiple docker containers are involved so maybe this add on doesn’t give you access to the core python lib dirs - it’s certainly the correct directory as the error msg you pasted references it:

Is this the terminal add on you’re using: addon-ssh/ssh/DOCS.md at af009b2b56355088f3cfaaf280cc5dacf0c71f3d · hassio-addons/addon-ssh · GitHub ? That readme says it’s a new enhanced version of a previous addon that:

The SSH & Web Terminal add-on is very powerful and gives you access to almost all tools and hardware of your system.

Try that one if you’re not already using it - it also comes with SSH option that might give
more access than the web terminal.

If you still don’t get any joy you’re not entirely out of luck, you’ll just have to wait a bit until I release a new version of the integration with the Essentia fixes in place - new version “coming soon” :slight_smile:

So I did try the alternative SSH/Terminal add on you suggested but no luck. Same error about “no such file or directory”. I think the python lib files are not accessible in my version of HA

So I guess I’ll be waiting :slight_smile: I’m looking forward to your next release version so please keep us updated :+1:

Thanks so much!

Sorry for the delay in getting back to you. I somehow managed to break my HA install and had to start over. On the new install I tried using hass.io and, like Ank, I couldn’t seem to get it to work. I went back to using a Linux install with a docker container and got it all up and running again - so far so good! My next challenge is to try and get the Lovelace portion working.

I did run into the standby issue you mentioned on a couple of occasions. It’s not a major hassle, though nice to know the reason for it.

Thanks again for all your work on this and for helping us out!

Ed

A new version v1.1.0 is available in HACS:

  • Minimum HA version required 2021.6.3
  • Essentia G fixes
  • Improved state tracking for zones in party mode, master/slave, groups.
  • nuvo.party_on/off services
  • EXPERIMENTAL! support for media_player.join/unjoin services to group zones together. Designed to work with mini-media-player’s speaker groups but that card requires changes to support these new services before it will work with the Nuvo - more details to follow if and when that happens.
3 Likes

Just wanted to check the functionality of the snapshot and restore. The reason I ask is that I have an automation/script to play sounds/speech on the Nuvo with a parameter for the zones to play it on. The snapshot only seems to work on the zones that are switched on, therefore, I need to switch on the desired zones before taking a snapshot and then the problem is that the restore can’t reset the Nuvo to it’s original on/off state. Am I missing something?
It’s not a major issue, but it means wall touchpads end up staying on so would be good to switch them off again.