pyAduro is an asynchronous Python 3 library for interacting with Aduro P4 stoves through the Wappsto cloud API. The client automatically filters the connected Wappsto devices to the verified Aduro product P1 [4EFA], exposing all available entities and their real-time state information. Both polling and streaming usage patterns are supported.
- Python 3.10 or newer
- An active Wappsto account with at least one connected Aduro stove
- Either a Wappsto username/password pair or an OAuth token for authentication
Install the library from PyPI:
pip install pyaduroCreate an AduroClient, authenticate, and capture the Wappsto session identifier. The session ID can be reused in subsequent runs to avoid logging in repeatedly.
from aduro.client import AduroClient
USERNAME = "username"
PASSWORD = "password"
client = AduroClient()
await client.async_login(USERNAME, PASSWORD)
session_id = client.session_idIf you already have a valid session ID or OAuth token, pass it directly when creating the client to skip the login call.
Use the session helper to discover stoves and inspect their metadata. All helper methods are asynchronous and should be awaited within an event loop (for example inside an asyncio task).
from aduro.session import AduroSession
session = AduroSession(session_id)
stove_ids = await session.async_get_stove_ids()
device_info = await session.async_get_device_info(stove_ids[0])Each stove exposes a collection of entities. Every entity can include one or both of the following state types:
- Control – writable when the permission flag is
w - Report – read-only state representing the latest reported value
Retrieve the entities for a stove and inspect their individual states:
entities = await session.async_get_device_entities(stove_ids[0])
for entity in entities:
states = await session.async_get_state_value(entity.id)For writable states, call async_patch_state_value with the target state identifier and the new value. The coroutine returns True on success.
success = await session.async_patch_state_value(state_id, value)For integration examples and troubleshooting tips, consult the Home Assistant community forums or open an issue if you need further assistance.