Legrand Nuvo multi-room audio support

Just adding to this, you’re absolutely right. Until I added the ‘raw’ to stty, the telnet session was showing a bunch of weird indents, suggesting that there were carriage returns in there. Now looking at telnet, everything is on the one line. I think you nailed it.

I’m glad it’s working! That network serial port thing was something I never even thought of before but it makes sense that many people would not have a HA server right beside the Nuvo. I’m sure our work willl pay off if anyone else wants to use the network. Would love to visit Australia sometime, that’s for sure. Everyone I’ve ever talked to down that way is so friendly!

I’ll put some more examples and stuff on github this week. I need to do some work on my own dashboards as well. One thing I would like to do is have the controls for the currently selected source be the only ones that show up for a room dashboard. Should be pretty easy to do but I haven’t got around to it yet.

1 Like

That would be fabulous. The example you have on there at the moment looks great and I’ve finally figured out what to do with it (still very much a HA noob), so have a test dashboard implementing one zone with your example. I really like it and has given me impetus to keep playing around with it. I have a lot to learn, so any examples are really appreciated. It’ll save me endless searching and experimenting.

It sounds like you’re in the northern hemisphere then? Your name suggests you’re of Irish origin but the Irish are all over the world, so not necessarily where you live.

1 Like

Nice! Sounds like you’ve got a good working set up for speaker groups now and even have volume offsets working.

I’ve done a complete rework of the speaker group implementation. After trying to make use of Nuvo groups (which only syncs source changes) I decided to remove this and just make speaker groups a pure HA thing as it was becoming very very messy! Way too many state checks needed done and with async operations making timing of events unclear it was hard to reason about so I scrapped it :-1: . Wish I’d gone this route originally as it’s much simpler now, but when the system offers a feature like that, you think why not use it :man_shrugging:

Downside is groups are temporary and lost across HA restarts, but that’s not a biggie and can easily be recreated at startup with a service call.

Upside is it now supports multiple speaker groups.

In order to support a physical zone with keypad as group controller, I’ve lost the ability to determine if a volume change was a volume set or a volume up/down operation, everything is just a volume state change now, so no more doing a volume up on the controller and having that do the same on a group member and maintain any local offset. Local offsets are still possible by altering member volume, but any controller volume change will resync the volumes. I’ve not done anything on configurable volume offsets, need to take a look at how you’ve handled it.

1 Like

Version v2.0.0 is now available in HACS.

Upgrading from v1.2.2

Recommend to remove then reinstall the integration for reasons detailed in this post Legrand Nuvo multi-room audio support - #102 by sprocket-9

Upgrading from v2.0.0-beta.1

Installing over the beta version will work fine.

1 Like

I am running the latest HAOS on an RPi with HACS installed and the 2.0.0 version of this custom integration installed and connected to an NV-E6G. My Nuvo system isn’t used much, so it is frequently sleeping. Because of this, I get an error anytime I try to turn it on. If I correctly remember previously reading this thread, the fix I am replying to is for that (or a similar) issue. However, since the issue was known and addressable prior to some subsequent updates, and possibly because I read (or dreamed) that it was called out as fixed, I thought maybe that issue was one of the fixes in Legrand Nuvo multi-room audio support - #88 by sprocket-9 or v2, so I didn’t want to attempt this fix if I may be looking at a different issue. To be clear, I basically get an error like this when trying to turn on a zone, but I can successfully turn on any zone afterwards:

Failed to call service media_player/turn_on.
RESPONSEREADER: Timeout waiting for response to message: *Z2ON

The 2 in “*Z2ON” is the zone number in this example, so it varies depending on which zone I am trying to turn on, and I won’t see the error again until all zones have been off for a while, so between that and the fact that I can get the error for any zone, but only once at a given time, I am confident that the issue is related to the Nuvo sleeping.

Is this fix for that, and if so, is it still applicable to v2? Otherwise, is there something else I might have missed or anything I should try to work around or help diagnose/troubleshoot my issue?

Sounds like you’ve been working hard! I can’t imagine how you managed to keep track of all that before. I was thankful all I had was a “dumb box” to work with in a way. There was very little for me screw up! I guess a small drawback I ran into was the slow 9600 baud on the D series means there is a little delay when controlling several zones. It’s not bad, but you can notice it.

What’s nice is now you’re not limited by the Nuvo so to speak anymore, so you can do whatever you want in the future, like adding more speaker groups, and who knows what HA will add next?

I tried at first to count the volume steps to see if it was just a +1 or -1, and generally, the Nuvo would show every single number if you hit volume down or up, but not always. It was even worse with the IR remote, so I just scrapped that idea. I liked the way you did it though, very easy to setup!

What I did was very simple, I just made a number entity for the offset (in percentage) and if that zone is one being controlled by another, it just looks at that offset and applies it when setting the volume, making sure of course to watch for the min and max limits. It’s the same as yours as far as the controller volume just completely resyncing everything. It works good enough for me though. It seems to always be a challenge just to figure out a way to make HA do what we want, it’s really made for simpler things I guess.

I’ve got a Nuvo tuner with a Sirius radio attached that I listen to a lot. Now that I’m finally back home for awhile I may see if I can make something for it. I snooped on the serial port using the windows tuner program and found out how it pulls presets and channel lists down. Of course, it’s kind of like, how do you get all of that stuff into HA? I think I’m going to start with just a huge source list with all of the presets and channels in there. It would be nice if the media player would support a few more selections. It would make life easier for the amps and the tuner too.

I’m going to redo my dashboards some and I’ll show you what I come up with. I’m kind of thinking just one dashboard for each room, with a source selector, and then, depending on what source is active that is the only controls you see. I’m to the point now where I can control most things from HA, like my DVR (via Kodi), chromecasts, etc. so after you select your source, then just the controls that matter to you would come up. I’ve basically have all of the players on one dashboard now, and room controls on another, so it’s a little cumbersome to move around.

Haha, yes, I’m in the USA in the state of TN. I’m Irish origin but I have several generations of family that have been here. I’ve had the pleasure of meeting some people from Australia and they are always so friendly. Would love to come visit someday!

1 Like

Thanks. It’s the easiest way to learn for me is through example. The trial and error route is tedious and time-consuming. I’ve been fooling around with a wall-mounted touch screen as a way to control the Nuvo.

Here’s a dash I’m playing with at the moment.

I saw a write-up by Blakadder here using a Tuya touchscreen that he hacked to get into the underlying Android system and install apps. I’ve got it running Fully Kiosk and showing a HA dash that lets me control the Nuvo as well as whatever else I want to control using HA. Currently thinking it’ll have a simple dash to select Nuvo zones and control volume and another dash to control lights - simple enough for family and friends to be able to use. The pic is the touchscreen mounted on a little stand I 3D printed for use on my desk as I experiment but the goal is to wall mount it eventually once I’ve got it running how I want. It’s mains voltage powered, so it’s effectively a modern keypad for the Nuvo that lets you do lots of other stuff with it too. I got inspiration from this video on the setup.

1 Like

Problem to connect… i am a newbe …and my english is not so good :wink:

Have installed byt when i connect i get faileld to connect,
This log:
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: 17:20:59 (3 occurrences)
Last logged: 18:09:18

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.10/site-packages/nuvo_serial/__init__.py", line 33, in get_nuvo_async
    await nuvo.connect()
  File "/usr/local/lib/python3.10/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 708, in connect
    await self._state_tracker.get_initial_states()
  File "/usr/local/lib/python3.10/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 185, in get_initial_states
    await self._get_zone_configurations()
  File "/usr/local/lib/python3.10/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 221, in _get_zone_configurations
    await self._nuvo.zone_configuration(zone)
  File "/usr/local/lib/python3.10/site-packages/nuvo_serial/connection.py", line 99, in wrapper
    return await coro(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/icontract/_checkers.py", line 587, in wrapper
    result = await func(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 836, in zone_configuration
    return await self._connection.send_message(
  File "/usr/local/lib/python3.10/site-packages/nuvo_serial/connection.py", line 493, in send_message
    response = await asyncio.wait_for(
  File "/usr/local/lib/python3.10/asyncio/tasks.py", line 445, in wait_for
    return fut.result()
  File "/usr/local/lib/python3.10/site-packages/nuvo_serial/connection.py", line 670, in _message_response_reader
    processed_type, d_class = process_message(self._model, message)
  File "/usr/local/lib/python3.10/site-packages/nuvo_serial/message.py", line 790, in process_message
    msg = message.rstrip().decode("ascii")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 28: ordinal not in range(128)

have a Grand Concerto , but if i select essentia i get incompatibel model so i guess i get some connection. Would be greatful if someone could help me out :slight_smile:

Bumping this again. I love my nuvo system and I’m excited there’s others using it as well

I have the nuvo P series. The p3500 and the p3100. Has anyone gotten this working?

I know nuvo has an API but I haven’t gotten nuvo to send me the docs

Hey @JowMbla, where you ever able to get a reply about the failed to connect issue. I am having the same issue right now I am not not finding any solution.

Hey @sprocket-9 , thank you for the work that you have done setting this up for us Nuvo owners. I just recently decided to set this up, setup has been pretty straight forward, but I have run into an issue that I am hoping you might be able to help me solve.

http://pastie.org/p/6D1DNDBoY26P7ZfrtRCiER

Noob here with connectivity issues, any advice appreciated.

I’ve got a E6DM which I can connect to via putty on my laptop and get the following:

*VER
#MPU_E6Dv1.12

I’m running HA on docker container on a QNAP but getting the “Failed to Connect” error. During my troubleshooting, I spun up a test OVA instance and HA reports that it can see the adapter connected to /dev/ttyUSB0.

Sensor yaml:

  • platform: serial
    serial_port: /dev/ttyUSB0
    baudrate: 9600

HA logs show:

nuvo_serial.exceptions.MessageResponseError: RESPONSEREADER: Timeout waiting for response to message: *VER

Does this sound like a config issue with the USB serial adapter or is there anything else I should check?

If you have an E6DM you need to use nuvo_simple instead of the nuvo_serial integration. See https://github.com/brmccrary/nuvo_simple.

I guess I have obviously been off of the forum for a good while! I just now saw your post. The wall mount control panel is really cool!! Much better than the original keypads, that’s for sure. I want to make those now myself. Very nice!!!

Thanks Brian, it was as simple as that!

You’ve saved me from further head scratching so your advice was very much appreciated :grinning:

I’m not a skilled developer, so I couldn’t figure out how to leverage this information in a meaningful way…but it could be useful for you. In another forum, a user had posted that they could interact with their P series devices with commands like these.

Pause (if supported), otherwise stop.
{“method”:“invoke”,“url”:"/stable/av/pause"}

Play
{“method”:“invoke”,“url”:"/stable/av/play"}

Set volume level
{ “url” : “/stable/av/volume”, “method” : “updateValue”, “params” : { “value” : { “int” : 67 } } }

After more playing, I was able to figure out some basic things. None of the above commands I posted above worked…instead I went the UPNP path. I used postman to experiment and finally succeeded with a simple Pause to my P3100. If this is anything like Sonos, I’m sure there are plenty of other services supported by AVTransport and RenderingControl.

My example:
POST IP:PORT/AVTransport/control.

Headers
Content-Type: text/xml; charset=“utf-8”
SOAPAction: urn:schemas-upnp-org:service:AVTransport:1#Pause

Body.

<?xml version="1.0" encoding="utf-8"?>

<s:Envelope xmlns:s=“http://schemas.xmlsoap.org/soap/envelope/” s:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”>
<s:Body>
<u:Pause xmlns:u=“urn:schemas-upnp-org:service:AVTransport:1”>
0
</u:Pause>
</s:Body>
</s:Envelope>

@sprocket-9 I recently acquired a Nuvo Grand Concerto NV-18GM and have installed your integration. I’ve got it connected via a serial to network adapter and after attempting to add an integration and enter the port, it keeps failing. I know the adapter works as I can telnet to it using Putty and issue commands and the Nuvo happily performs the commands. For the port, I’m entering: socket://192.168.1.96:59001 corresponding to the IP of the adapter (192.168.1.96) and port (59001). Am I missing any other config somewhere to make this work? Pulling my hair out on this one. The logs don’t reveal anything informative.

2023-08-27 17:09:02.556 ERROR (MainThread) [custom_components.nuvo_serial.config_flow]
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.11/site-packages/nuvo_serial/__init__.py", line 35, in get_nuvo_async
await nuvo.connect()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 710, in connect
await self._state_tracker.get_initial_states()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 185, in get_initial_states
await self._get_zone_configurations()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 221, in _get_zone_configurations
await self._nuvo.zone_configuration(zone)
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 101, in wrapper
return await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/icontract/_checkers.py", line 587, in wrapper
result = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 839, in zone_configuration
return await self._connection.send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 504, in send_message
response = await asyncio.wait_for(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
return fut.result()
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 681, in _message_response_reader
processed_type, d_class = process_message(self._model, message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 797, in process_message
d_class = msg_class.from_string(msg) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 548, in from_string
z_sources = SourceMask(int(zone_values.group("sources"))).to_list()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 711, in __call__
return cls.__new__(cls, value)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1136, in __new__
raise exc
File "/usr/local/lib/python3.11/enum.py", line 1113, in __new__
result = cls._missing_(value)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1399, in _missing_
raise ValueError(
ValueError: <flag 'SourceMask'> invalid value 255
given 0b0 11111111
allowed 0b0 00111111
2023-08-27 17:10:41.650 ERROR (MainThread) [custom_components.nuvo_serial.config_flow]
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.11/site-packages/nuvo_serial/__init__.py", line 35, in get_nuvo_async
await nuvo.connect()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 710, in connect
await self._state_tracker.get_initial_states()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 185, in get_initial_states
await self._get_zone_configurations()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 221, in _get_zone_configurations
await self._nuvo.zone_configuration(zone)
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 101, in wrapper
return await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/icontract/_checkers.py", line 587, in wrapper
result = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 839, in zone_configuration
return await self._connection.send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 504, in send_message
response = await asyncio.wait_for(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
return fut.result()
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 681, in _message_response_reader
processed_type, d_class = process_message(self._model, message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 797, in process_message
d_class = msg_class.from_string(msg) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 548, in from_string
z_sources = SourceMask(int(zone_values.group("sources"))).to_list()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 711, in __call__
return cls.__new__(cls, value)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1136, in __new__
raise exc
File "/usr/local/lib/python3.11/enum.py", line 1113, in __new__
result = cls._missing_(value)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1399, in _missing_
raise ValueError(
ValueError: <flag 'SourceMask'> invalid value 255
given 0b0 11111111
allowed 0b0 00111111
2023-08-27 17:10:59.344 ERROR (MainThread) [homeassistant] Error doing job: Exception in callback SerialTransport._call_connection_lost(None)
Traceback (most recent call last):
File "/usr/local/lib/python3.11/asyncio/events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "/usr/local/lib/python3.11/site-packages/serial_asyncio/__init__.py", line 417, in _call_connection_lost
self._serial.close()
File "/usr/local/lib/python3.11/site-packages/serial/urlhandler/protocol_socket.py", line 104, in close
time.sleep(0.3)
File "/usr/src/homeassistant/homeassistant/util/async_.py", line 166, in protected_loop_func
check_loop(func, strict=strict)
File "/usr/src/homeassistant/homeassistant/util/async_.py", line 123, in check_loop
raise RuntimeError(
RuntimeError: Detected blocking call to sleep inside the event loop. Use `await hass.async_add_executor_job()`; This is causing stability issues. Please report issue
2023-08-27 17:11:01.346 ERROR (MainThread) [custom_components.nuvo_serial.config_flow]
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.11/site-packages/nuvo_serial/__init__.py", line 35, in get_nuvo_async
await nuvo.connect()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 708, in connect
await self._connect()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 734, in _connect
raise ModelMismatchError(
nuvo_serial.exceptions.ModelMismatchError: Specified model Essentia_G, reported model: Version(model='Grand_Concerto', product_number='NV-I8G', firmware_version='FWv2.66', hardware_version='HWv2')
2023-08-27 17:11:20.588 ERROR (MainThread) [custom_components.nuvo_serial.config_flow]
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.11/site-packages/nuvo_serial/__init__.py", line 35, in get_nuvo_async
await nuvo.connect()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 710, in connect
await self._state_tracker.get_initial_states()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 185, in get_initial_states
await self._get_zone_configurations()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 221, in _get_zone_configurations
await self._nuvo.zone_configuration(zone)
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 101, in wrapper
return await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/icontract/_checkers.py", line 587, in wrapper
result = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 839, in zone_configuration
return await self._connection.send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 504, in send_message
response = await asyncio.wait_for(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
return fut.result()
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 681, in _message_response_reader
processed_type, d_class = process_message(self._model, message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 797, in process_message
d_class = msg_class.from_string(msg) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 548, in from_string
z_sources = SourceMask(int(zone_values.group("sources"))).to_list()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 711, in __call__
return cls.__new__(cls, value)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1136, in __new__
raise exc
File "/usr/local/lib/python3.11/enum.py", line 1113, in __new__
result = cls._missing_(value)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1399, in _missing_
raise ValueError(
ValueError: <flag 'SourceMask'> invalid value 255
given 0b0 11111111
allowed 0b0 00111111
2023-08-27 17:20:13.775 ERROR (MainThread) [custom_components.nuvo_serial.config_flow]
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.11/site-packages/nuvo_serial/__init__.py", line 35, in get_nuvo_async
await nuvo.connect()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 710, in connect
await self._state_tracker.get_initial_states()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 185, in get_initial_states
await self._get_zone_configurations()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 221, in _get_zone_configurations
await self._nuvo.zone_configuration(zone)
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 101, in wrapper
return await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/icontract/_checkers.py", line 587, in wrapper
result = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 839, in zone_configuration
return await self._connection.send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 504, in send_message
response = await asyncio.wait_for(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
return fut.result()
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 681, in _message_response_reader
processed_type, d_class = process_message(self._model, message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 797, in process_message
d_class = msg_class.from_string(msg) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 548, in from_string
z_sources = SourceMask(int(zone_values.group("sources"))).to_list()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 711, in __call__
return cls.__new__(cls, value)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1136, in __new__
raise exc
File "/usr/local/lib/python3.11/enum.py", line 1113, in __new__
result = cls._missing_(value)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1399, in _missing_
raise ValueError(
ValueError: <flag 'SourceMask'> invalid value 255
given 0b0 11111111
allowed 0b0 00111111
2023-08-27 17:20:34.643 WARNING (SyncWorker_0) [homeassistant.util.yaml.loader] YAML file /config/configuration.yaml contains duplicate key "media_player". Check lines 88 and 115
2023-08-27 17:24:28.219 ERROR (MainThread) [custom_components.nuvo_serial.config_flow]
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.11/site-packages/nuvo_serial/__init__.py", line 35, in get_nuvo_async
await nuvo.connect()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 710, in connect
await self._state_tracker.get_initial_states()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 185, in get_initial_states
await self._get_zone_configurations()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 221, in _get_zone_configurations
await self._nuvo.zone_configuration(zone)
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 101, in wrapper
return await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/icontract/_checkers.py", line 587, in wrapper
result = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 839, in zone_configuration
return await self._connection.send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 504, in send_message
response = await asyncio.wait_for(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
return fut.result()
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 681, in _message_response_reader
processed_type, d_class = process_message(self._model, message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 797, in process_message
d_class = msg_class.from_string(msg) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 548, in from_string
z_sources = SourceMask(int(zone_values.group("sources"))).to_list()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 711, in __call__
return cls.__new__(cls, value)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1136, in __new__
raise exc
File "/usr/local/lib/python3.11/enum.py", line 1113, in __new__
result = cls._missing_(value)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1399, in _missing_
raise ValueError(
ValueError: <flag 'SourceMask'> invalid value 255
given 0b0 11111111
allowed 0b0 00111111
2023-08-27 17:24:33.720 ERROR (MainThread) [custom_components.nuvo_serial.config_flow]
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.11/site-packages/nuvo_serial/__init__.py", line 35, in get_nuvo_async
await nuvo.connect()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 710, in connect
await self._state_tracker.get_initial_states()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 185, in get_initial_states
await self._get_zone_configurations()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 221, in _get_zone_configurations
await self._nuvo.zone_configuration(zone)
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 101, in wrapper
return await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/icontract/_checkers.py", line 587, in wrapper
result = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 839, in zone_configuration
return await self._connection.send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 504, in send_message
response = await asyncio.wait_for(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
return fut.result()
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 681, in _message_response_reader
processed_type, d_class = process_message(self._model, message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 797, in process_message
d_class = msg_class.from_string(msg) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 548, in from_string
z_sources = SourceMask(int(zone_values.group("sources"))).to_list()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 711, in __call__
return cls.__new__(cls, value)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1136, in __new__
raise exc
File "/usr/local/lib/python3.11/enum.py", line 1113, in __new__
result = cls._missing_(value)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1399, in _missing_
raise ValueError(
ValueError: <flag 'SourceMask'> invalid value 255
given 0b0 11111111
allowed 0b0 00111111
2023-08-27 17:24:36.658 ERROR (MainThread) [custom_components.nuvo_serial.config_flow]
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.11/site-packages/nuvo_serial/__init__.py", line 35, in get_nuvo_async
await nuvo.connect()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 710, in connect
await self._state_tracker.get_initial_states()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 185, in get_initial_states
await self._get_zone_configurations()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 221, in _get_zone_configurations
await self._nuvo.zone_configuration(zone)
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 101, in wrapper
return await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/icontract/_checkers.py", line 587, in wrapper
result = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 839, in zone_configuration
return await self._connection.send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 504, in send_message
response = await asyncio.wait_for(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
return fut.result()
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 681, in _message_response_reader
processed_type, d_class = process_message(self._model, message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 797, in process_message
d_class = msg_class.from_string(msg) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 548, in from_string
z_sources = SourceMask(int(zone_values.group("sources"))).to_list()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 711, in __call__
return cls.__new__(cls, value)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1136, in __new__
raise exc
File "/usr/local/lib/python3.11/enum.py", line 1113, in __new__
result = cls._missing_(value)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1399, in _missing_
raise ValueError(
ValueError: <flag 'SourceMask'> invalid value 255
given 0b0 11111111
allowed 0b0 00111111
2023-08-27 17:24:39.746 ERROR (MainThread) [custom_components.nuvo_serial.config_flow]
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.11/site-packages/nuvo_serial/__init__.py", line 35, in get_nuvo_async
await nuvo.connect()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 710, in connect
await self._state_tracker.get_initial_states()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 185, in get_initial_states
await self._get_zone_configurations()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 221, in _get_zone_configurations
await self._nuvo.zone_configuration(zone)
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 101, in wrapper
return await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/icontract/_checkers.py", line 587, in wrapper
result = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 839, in zone_configuration
return await self._connection.send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 504, in send_message
response = await asyncio.wait_for(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
return fut.result()
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 681, in _message_response_reader
processed_type, d_class = process_message(self._model, message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 797, in process_message
d_class = msg_class.from_string(msg) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 548, in from_string
z_sources = SourceMask(int(zone_values.group("sources"))).to_list()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 711, in __call__
return cls.__new__(cls, value)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1136, in __new__
raise exc
File "/usr/local/lib/python3.11/enum.py", line 1113, in __new__
result = cls._missing_(value)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1399, in _missing_
raise ValueError(
ValueError: <flag 'SourceMask'> invalid value 255
given 0b0 11111111
allowed 0b0 00111111
2023-08-27 17:24:41.903 ERROR (MainThread) [custom_components.nuvo_serial.config_flow]
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.11/site-packages/nuvo_serial/__init__.py", line 35, in get_nuvo_async
await nuvo.connect()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 710, in connect
await self._state_tracker.get_initial_states()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 185, in get_initial_states
await self._get_zone_configurations()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 221, in _get_zone_configurations
await self._nuvo.zone_configuration(zone)
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 101, in wrapper
return await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/icontract/_checkers.py", line 587, in wrapper
result = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 839, in zone_configuration
return await self._connection.send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 504, in send_message
response = await asyncio.wait_for(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
return fut.result()
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 681, in _message_response_reader
processed_type, d_class = process_message(self._model, message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 797, in process_message
d_class = msg_class.from_string(msg) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 548, in from_string
z_sources = SourceMask(int(zone_values.group("sources"))).to_list()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 711, in __call__
return cls.__new__(cls, value)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1136, in __new__
raise exc
File "/usr/local/lib/python3.11/enum.py", line 1113, in __new__
result = cls._missing_(value)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1399, in _missing_
raise ValueError(
ValueError: <flag 'SourceMask'> invalid value 255
given 0b0 11111111
allowed 0b0 00111111
2023-08-27 17:24:43.627 ERROR (MainThread) [custom_components.nuvo_serial.config_flow]
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.11/site-packages/nuvo_serial/__init__.py", line 35, in get_nuvo_async
await nuvo.connect()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 710, in connect
await self._state_tracker.get_initial_states()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 185, in get_initial_states
await self._get_zone_configurations()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 221, in _get_zone_configurations
await self._nuvo.zone_configuration(zone)
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 101, in wrapper
return await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/icontract/_checkers.py", line 587, in wrapper
result = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 839, in zone_configuration
return await self._connection.send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 504, in send_message
response = await asyncio.wait_for(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
return fut.result()
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 681, in _message_response_reader
processed_type, d_class = process_message(self._model, message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 797, in process_message
d_class = msg_class.from_string(msg) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/message.py", line 548, in from_string
z_sources = SourceMask(int(zone_values.group("sources"))).to_list()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 711, in __call__
return cls.__new__(cls, value)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1136, in __new__
raise exc
File "/usr/local/lib/python3.11/enum.py", line 1113, in __new__
result = cls._missing_(value)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/enum.py", line 1399, in _missing_
raise ValueError(
ValueError: <flag 'SourceMask'> invalid value 255
given 0b0 11111111
allowed 0b0 00111111
2023-08-27 17:24:48.801 ERROR (MainThread) [custom_components.nuvo_serial.config_flow]
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.11/site-packages/nuvo_serial/__init__.py", line 35, in get_nuvo_async
await nuvo.connect()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 710, in connect
await self._state_tracker.get_initial_states()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 185, in get_initial_states
await self._get_zone_configurations()
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 221, in _get_zone_configurations
await self._nuvo.zone_configuration(zone)
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 101, in wrapper
return await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/icontract/_checkers.py", line 587, in wrapper
result = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 839, in zone_configuration
return await self._connection.send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nuvo_serial/connection.py", line 504, in send_message
response = await asyncio.wait_for(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
return fut.result()
^^^^^^^^^^^^