A namespaced Python module for controlling Ariston devices with cloud polling.
This is a focused maintenance fork of fustom/python-ariston-api. The original implementation and device support remain credited to fustom and its contributors.
This fork adds account-wide request serialization and pacing, a 30-second
network timeout, bounded HTTP 429 backoff and avoids immediate retries of HTTP
5xx responses. Galevo's diagnostic menu is refreshed every 30 minutes instead
of on every state poll, while core temperatures and modes continue to refresh
normally. It uses the independent ariston_net_api import namespace so it can
coexist with the upstream ariston package used by legacy Home Assistant
integrations.
For Lydos Hybrid, the fork also preserves the last stable operating mode
across a temporary BOOST cycle. If the cloud returns null, 0, an unknown
code or malformed data when BOOST ends, consumers continue to see the mode
that preceded BOOST. This recovery is read-only and never writes a mode back
to the appliance.
The following devices are currently supported:
- Ariston Alteas One 24
- Ariston Velis Evo
- Ariston Velis Lux
- Ariston Lydos Hybrid
- Ariston Genus One
- Ariston Nuos Split
- Ariston Thision S
- Chaffoteaux INOA S 24
Use pip3 to install the latest version of this module.
pip3 install "ariston-net-api @ git+https://github.com/mauropriori/python-ariston-api.git"
First, open Python 3 and import the ariston_net_api module.
python3
import ariston_net_apiDiscover devices if you dont know your gateway id. You can skip this step.
raw_devices = ariston_net_api.discover("username", "password")For example the gateway id for your first device.
raw_devices[0]['gw']Get your device
device = ariston_net_api.hello("username", "password", "gateway", is_metric, "location")raw_devices = await ariston_net_api.async_discover("username", "password")
device = await ariston_net_api.async_hello("username", "password", "gateway", is_metric, "location")First, open Python 3 and import Ariston class from this module.
python3
from ariston_net_api import AristonCreate a new Ariston instance
ariston = Ariston()Now let's try some functions
The cloud requests are asynchronous, so if you call them from a synchronous function or not even from function, you should use asyncio.
import asyncioSync
asyncio.run(ariston.async_connect("username", "password"))Async
await ariston.async_connect("username", "password")- username: Your ariston cloud username.
- password: Your ariston cloud password.
Use this function to discover devices. You can skip this step if you already know the gateway id.
Sync
devices = asyncio.run(ariston.async_discover())Async
devices = await ariston.async_discover()Use this function to create the device object.
Sync
device = asyncio.run(ariston.async_hello("gateway", is_metric, "location"))Async
device = await ariston.async_hello("gateway", is_metric, "location")- gateway: You can find the value in the returned discover dictionary name 'gw'
- is_metric: Optional. True or False. True means metric, False means imperial. Only works with Galevo (Alteas One, Genus One, etc) system. Default is True.
- language_tag: Optional. Check https://en.wikipedia.org/wiki/IETF_language_tag Only works with Galevo (Alteas One, Genus One, etc) system. Default is "en-US".
Sync
device.get_features()Async
await device.async_get_features()Sync
device.update_state()Async
await device.async_update_state()Sync
device.update_energy()Async
await device.async_update_energy()