pysaleryd-tage
Python asyncio library for controlling Saleryd HRV units (Erik, Tage, Emil, Carl) over their local WebSocket API.
Installation
pip install pysaleryd-tage
Usage
Connect and read state
import asyncio
from pysaleryd_tage.client import connected_device
async def main():
async with connected_device("192.168.1.100") as (device, disconnected):
print(device.info) # DeviceInfo: model, MAC, firmware versions
print(device.state) # DeviceState: mode, temps, pressure, alarms, ...
# subscribe to state changes
device.subscribe(lambda state: print(state.mode, state.temp_in, state.pressure))
# wait until disconnected or timeout
await asyncio.wait_for(disconnected.wait(), timeout=60)
asyncio.run(main())
connected_device(host, port=3001) is an async context manager. It waits (up to 5 s) for the device to send its initial state before yielding. disconnected is an asyncio.Event set when the WebSocket closes.
Send commands
from pysaleryd_tage.device.command import (
ActiveModeCommand,
ComposedCommand,
PacModeSettingsCommand,
PercentModeSettingsCommand,
PowerCommand,
PressureModeSettingsCommand,
)
async with connected_device("192.168.1.100") as (device, _):
# power on/off
await device.send_command(PowerCommand.on())
# ComposedCommand bundles multiple commands into one send.
# Use += to build it incrementally:
cmd = ComposedCommand()
cmd += ActiveModeCommand.percent() # change the current mode
cmd += PercentModeSettingsCommand(normal=60, away=30, airing=80) # setup
await device.send_command(cmd)
# or construct inline
await device.send_command(
ComposedCommand([
ActiveModeCommand.pressure(),
PressureModeSettingsCommand(pressure=50),
])
)
# PAC (temperature-driven pressure) mode
await device.send_command(
ComposedCommand([
ActiveModeCommand.pac(),
PacModeSettingsCommand(cold_temp=0.0, cold_pressure=20,
hot_temp=20.0, hot_pressure=60),
])
)
Disclaimer
This project is not affiliated with, endorsed by, or associated with the manufacturer in any way. Use at your own risk.
License
MIT
Release files for pysaleryd-tage 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pysaleryd_tage-0.0.3.tar.gz | 15.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pysaleryd_tage-0.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.2 kB
Release files / pysaleryd_tage-0.0.3.tar.gz
| Download URL | pysaleryd_tage-0.0.3.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ab175b20cc96d631c1129aa2514becdcf6adfb38d82462d440a13014c7ee5c66
|
|
BLAKE2b-256 checksum How to use checksums |
7aff5bbd6f09d519282c2fdf6e5f1aed8f0f2b56900497acafcefe46819b2064
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 3, 2026.
Transparency logRelease files / pysaleryd_tage-0.0.3-py3-none-any.whl
| Download URL | pysaleryd_tage-0.0.3-py3-none-any.whl |
|---|---|
| Size | 16.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5dbe46d710fa51436b1a4220e00dae023a07b6ab118acef5b53911ce5fb513a9
|
|
BLAKE2b-256 checksum How to use checksums |
481b367c2321275d629fc80347015c3442d2567c7f8973c5a8a736c9064e11c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 3, 2026.
Transparency log