Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

thessla-green-modbus

Asynchronous, transport-independent Python library for Thessla Green ventilation units using Modbus.

The caller supplies a modbus_connection.ModbusUnit. This package owns the verified register map, typed components, physical-unit decoding and validated commands. It does not own a socket, serial port, polling loop or connection lifecycle.

Status: alpha, protocol/mock tested; not yet verified on physical hardware. The current common map has been cross-checked against manufacturer protocols for Home-family and series-4 controllers. Other Modbus-capable Thessla Green families are represented explicitly and should use the conservative common map until their complete register table is verified.

Installation

python -m pip install thessla-green-modbus

Python 3.12 or newer is required.

Device API

from modbus_connection import ModbusUnit
from thessla_green_modbus import (
    DeviceFamily,
    OperatingMode,
    ThesslaGreenDevice,
)


async def use_device(unit: ModbusUnit) -> None:
    device = ThesslaGreenDevice(unit, family=DeviceFamily.HOME_V)
    await device.async_update()

    print(device.info.serial_number)
    print(device.info.firmware_version)
    print(device.temperatures.outside)
    print(device.ventilation.supply_flow)

    await device.controls.write("manual_speed", 50)
    await device.controls.write("operating_mode", OperatingMode.MANUAL)
    await device.async_update()

Construction performs no I/O. Reading attributes performs no I/O. Transport errors and cancellation propagate to the caller, and cached values are not presented as a successful new reading after a failed refresh.

Product families

DeviceFamily currently identifies these manufacturer product families:

  • HOME_H
  • HOME_V
  • HOME_F
  • SERIES_4_H
  • SERIES_4_V
  • AIRPACK_F
  • UNKNOWN

The family is metadata and a future compatibility hook. It deliberately does not turn optional register ranges on automatically. UNKNOWN exists so a new or unlisted Thessla Green model is not rejected merely because the package predates it.

Optional capabilities

from thessla_green_modbus import DeviceOptions, ThesslaGreenDevice

device = ThesslaGreenDevice(
    unit,
    options=DeviceOptions(
        constant_flow=True,
        comfort=True,
        erv=True,
        pressure_filter_alarm=True,
    ),
)

Only enable capabilities supported by the actual controller. The pressure-switch filter alarm at 8444 is documented for relevant Home-family hardware but is not present in the reviewed series-4 table.

Safety and protocol details

Requests never exceed the manufacturer's 16-register limit and never read across undeclared holes. Input, holding and coil spaces remain separate.

Temperatures use signed 16-bit tenths and 0x8000 as unavailable. Measured airflow uses 0xffff as unavailable. Unknown enum/boolean values decode to None.

All public writes validate before I/O. The manual comfort temperature follows the manufacturer range 20–90 °C in 0.5 °C steps. Temporary airflow and temporary temperature registers are intentionally read-only in this release: manufacturer protocols require atomic three-register activation commands at 4400–4402 and 4403–4405, so a single-register write would be incomplete.

Special functions share holding register 4224 and are represented as one mutually exclusive enum. bypass.disabled=False permits automatic bypass operation; it does not force the damper open.

See protocol provenance and compatibility scope.

Read-only query tool

python script/query.py 192.168.1.179 --port 9999 --unit 10 --framer rtu
python script/query.py 192.168.1.179 --port 502 --unit 10 --framer socket
python script/query.py /dev/ttyUSB0 --transport serial --unit 10
python script/query.py unused --snapshot tests/fixtures/thessla_green.json

The CLI never writes.

Development

python -m pip install -e '.[dev]'
bash script/run_checks.sh

Changes target develop. Releases are tag-driven after a green merge to main; the tag must match the package version exactly.

License

Apache-2.0. This is an independent project, not an official manufacturer package.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

thessla_green_modbus-0.1.0a3.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

thessla_green_modbus-0.1.0a3-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file thessla_green_modbus-0.1.0a3.tar.gz.

File metadata

  • Download URL: thessla_green_modbus-0.1.0a3.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for thessla_green_modbus-0.1.0a3.tar.gz
Algorithm Hash digest
SHA256 77e2a2e8f35f8cf6765961fe5e38750a437ab1ec6f53a9c796cc9b8297e116f8
MD5 152996bf6a0cc7df16fa372dcb8897ed
BLAKE2b-256 1edda8bf3cb1b3257df41926b581b015b94ab284bdf6a8ee213f70379a3ac1ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for thessla_green_modbus-0.1.0a3.tar.gz:

Publisher: release.yml on Misiu/thessla-green-modbus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file thessla_green_modbus-0.1.0a3-py3-none-any.whl.

File metadata

File hashes

Hashes for thessla_green_modbus-0.1.0a3-py3-none-any.whl
Algorithm Hash digest
SHA256 fd61e44d565e05b3e2be4c039774d4f5614c96b763530b5093438aace587f6eb
MD5 064c7f8c99f10d2ec3e796a0df3c5540
BLAKE2b-256 2090d0ff005b742e7a41adb8602f24cc43e0560e8226ad99ffab92cdc999472f

See more details on using hashes here.

Provenance

The following attestation bundles were made for thessla_green_modbus-0.1.0a3-py3-none-any.whl:

Publisher: release.yml on Misiu/thessla-green-modbus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0a3 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page