New Vantage InFusion integration using AsyncIO

If you mean VirtualThermostat objects, then good news! I just added support for these (as well as Generic HVAC RS485 and HVAC-IU objects) in a recent release.

These are available in the 0.14.0rc1 release on HACS or GitHub.

1 Like

Hi i’m testing the integration and it seems to work well. If i change the ip address of the controller do i have to start all over again? is there no way to change ip in the configuration?

upgrade to new update, 13 works well, but then when update to 14.1 it gives the following error log. can’t set up.

2025-03-16 00:05:48.906 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Vantage InFusion for vantage
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/config_entries.py”, line 753, in __async_setup_with_context
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/config/custom_components/vantage/init.py”, line 63, in async_setup_entry
await vantage.initialize()
File “/usr/local/lib/python3.13/site-packages/aiovantage/init.py”, line 321, in initialize
await asyncio.gather(
…<7 lines>…
)
File “/usr/local/lib/python3.13/site-packages/aiovantage/_controllers/base.py”, line 143, in initialize
await self.fetch_state()
File “/usr/local/lib/python3.13/site-packages/aiovantage/_controllers/base.py”, line 152, in fetch_state
attrs_changed = await obj.fetch_state()
^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/base.py”, line 217, in fetch_state
fetched_properties[prop] = await getter(self)
^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/load.py”, line 71, in get_level
return await self.invoke(“Load.GetLevelHW” if hw else “Load.GetLevel”)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/base.py”, line 185, in invoke
_command, _vid, result, _method, *args = Converter.tokenize(return_line)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: not enough values to unpack (expected at least 4, got 3)

Hey there, can you share details about the version of your vantage controller firmware please?

upgraded version from 3.9 to 4.5.02. Had error again. Busy upgrading all components now. will let you know update. Thanks again.

Updated everything and get this error, thank you in advance.

2025-03-16 21:25:33.794 DEBUG (MainThread) [aiovantage] Sending command: INVOKE 47 CurrentSensor.GetCurrentHW
2025-03-16 21:25:33.796 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Vantage InFusion for vantage
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/config_entries.py”, line 753, in __async_setup_with_context
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/config/custom_components/vantage/init.py”, line 63, in async_setup_entry
await vantage.initialize()
File “/usr/local/lib/python3.13/site-packages/aiovantage/init.py”, line 321, in initialize
await asyncio.gather(
…<7 lines>…
)
File “/usr/local/lib/python3.13/site-packages/aiovantage/_controllers/base.py”, line 143, in initialize
await self.fetch_state()
File “/usr/local/lib/python3.13/site-packages/aiovantage/_controllers/base.py”, line 152, in fetch_state
attrs_changed = await obj.fetch_state()
^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/rgb_load.py”, line 560, in fetch_state
props_changed.extend(self.update_properties({prop: await getter()}))
^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/rgb_load.py”, line 528, in get_rgbw_color
[await self.get_rgbw(chan) for chan in self.RGBChannel]
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/rgb_load.py”, line 465, in get_rgbw
return await self.invoke(
^^^^^^^^^^^^^^^^^^
“RGBLoad.GetRGBWHW” if hw else “RGBLoad.GetRGBW”, channel
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/base.py”, line 181, in invoke
response = await self.command_client.raw_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_command_client/client.py”, line 159, in raw_request
raise_command_error(int(match.group(1)), match.group(2))
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/errors.py”, line 97, in raise_command_error
raise error_cls(message)
aiovantage.errors.FailedError: “Failed”

I just pushed version 0.14.2 to HACS which I believe should fix this issue, please let me know if that works!

For future, I track issues on GitHub here:

I’m more active on GitHub than in the Home Assistant community.

Thanks Loopj, youre helping me to slowly learn. I am working on getting to know Github so forgive the ongoing ignorance.

I tried the update. I get the following error on install. Says failed to set up.

Logger: homeassistant.config_entries
Source: config_entries.py:751
First occurred: 5:41:00 AM (1 occurrences)
Last logged: 5:41:00 AM

Error setting up entry Vantage InFusion for vantage
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/config_entries.py”, line 751, in __async_setup_with_context
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/config/custom_components/vantage/init.py”, line 63, in async_setup_entry
await vantage.initialize()
File “/usr/local/lib/python3.13/site-packages/aiovantage/init.py”, line 321, in initialize
await asyncio.gather(
…<7 lines>…
)
File “/usr/local/lib/python3.13/site-packages/aiovantage/_controllers/base.py”, line 143, in initialize
await self.fetch_state()
File “/usr/local/lib/python3.13/site-packages/aiovantage/_controllers/base.py”, line 152, in fetch_state
attrs_changed = await obj.fetch_state()
^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/base.py”, line 217, in fetch_state
fetched_properties[prop] = await getter(self)
^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/thermostat.py”, line 172, in get_cool_set_point
return await self.invoke(
^^^^^^^^^^^^^^^^^^
“Thermostat.GetCoolSetPointHW” if hw else “Thermostat.GetCoolSetPoint”
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/base.py”, line 188, in invoke
return self._parse_object_response(method, result, *args, as_type=as_type)
~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/base.py”, line 315, in _parse_object_response
return Converter.deserialize(signature, get_output_value(out))
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_command_client/converter.py”, line 253, in deserialize
return converter.deserialize(value, data_type=data_type, **kwargs)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_command_client/converter.py”, line 118, in deserialize
return Decimal(value.replace(“.”, “”)) / 1000
~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
decimal.InvalidOperation: [<class ‘decimal.ConversionSyntax’>]

Not sure why that’s happening, it seems that one of your thermostats is reporting a strange value for a setpoint. I’ve made the parsing a little more error tolerant, and adding some logging. This has released in 0.14.3 and is now live on HACS.

thanks bud, appreciate the effort here. I would have no idea otherwise. Just tried 14.3, looks like a different problem. 13.9 works perfectly for some reason.

Here is the new error :

Logger: homeassistant.config_entries
Source: config_entries.py:751
First occurred: 5:48:57 AM (1 occurrences)
Last logged: 5:48:57 AM

Error setting up entry Vantage InFusion for vantage
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/config_entries.py”, line 751, in __async_setup_with_context
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/config/custom_components/vantage/init.py”, line 63, in async_setup_entry
await vantage.initialize()
File “/usr/local/lib/python3.13/site-packages/aiovantage/init.py”, line 321, in initialize
await asyncio.gather(
…<7 lines>…
)
File “/usr/local/lib/python3.13/site-packages/aiovantage/_controllers/base.py”, line 143, in initialize
await self.fetch_state()
File “/usr/local/lib/python3.13/site-packages/aiovantage/_controllers/base.py”, line 152, in fetch_state
attrs_changed = await obj.fetch_state()
^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/base.py”, line 218, in fetch_state
fetched_properties[prop] = await getter(self)
^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/load.py”, line 71, in get_level
return await self.invoke(“Load.GetLevelHW” if hw else “Load.GetLevel”)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/aiovantage/_object_interfaces/base.py”, line 186, in invoke
_command, _vid, result, _method, *args = Converter.tokenize(return_line)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: not enough values to unpack (expected at least 4, got 3)

Damn, can’t believe I missed this for so long, fantastic work on completing it and switch it to asyncio. I’m still working off my fork of @gjbadros’s code, can’t complain too much though, without it I would have literally zero control over my system, so thanks so much Greg!
We moved in to a house with a vantage system 3 years ago, former owners took the ipads and didn’t know the passwords and the installer went out of business. When we found someone to work on it they accidently wiped it (luckily by then I had copied the sd card). Second guy couldn’t even rename things correctly. since then I’ve been doing all the work myself, but everything is reverse engineering. Still don’t know the admin password, I have it turned off so I can access the system.

@loopj When I have time anything I can do to help let me know, looks like I will need to add fans, software engineer here.

Few questions, since it sounds like you all know Vantage better than I.

  1. Guessing MDS8RW101 modules don’t have power monitoring sensors?
  2. Most of the lighting is recessed, it was 50W halogen, I switched everything to LED and it works. However, given that the MDS8RW101 was not designed for LED are there issues I should be aware of?
  3. Any advantage/disadvantage to upgrading firmware? Currently on 3.9.0.
  4. If I make a change to the xml file on the microsd and restore will that update the system? I wanted to do some cleanup, there are a lot of things in there that are no longer on the system (replaced the hvac controllers with ecobee, since it had 1 sensor per floor 8 feet high) and I don’t have design center :frowning:

Thanks!!!

Hi Loopj,

Thank you so much for your incredible work on both this integration and the underlying aiovantage library. It’s a fantastic piece of engineering and has opened the door for so many of us to connect to our Vantage systems.

I was running into some stability challenges in my environment, likely due to how often I restart Home Assistant for other configuration changes. I’m a big fan of decoupled services, so I decided to build an “alternative architecture” that runs as a standalone Python bridge.

It uses your aiovantage library to connect to the controller and then translates all the loads to MQTT for HA to auto-discover. This just moves the integration “outside” of HA itself, which fits my particular needs for a persistent, standalone service.

For anyone else who might prefer a separate bridge model (and is comfortable managing a systemd service in Linux), I’ve shared the code here:
https://github.com/srhunt-cyber/Vantage---MQTT-bridge-for-Home-Assistant

Again, this wouldn’t have been possible without your library, so thank you for all your hard work on it.