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 conservative common map has been cross-checked against manufacturer protocols for Home-family, series-4 and large-f controllers. Optional registers remain explicit opt-ins because their presence still depends on controller family, firmware and installed hardware.

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 and large-f 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 encoding raw 20–90 with multiplier 0.5, therefore the physical writable range is 10–45 °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.0a4.tar.gz (19.5 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.0a4-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: thessla_green_modbus-0.1.0a4.tar.gz
  • Upload date:
  • Size: 19.5 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.0a4.tar.gz
Algorithm Hash digest
SHA256 1b997b94a4d8c5a496d3208a1c98e937f8ab905cdbe5ef40e257b7593a482fa1
MD5 beda028d00de664970939f7c0208e12b
BLAKE2b-256 6588589f9089626c4ebee8927f5e47fd8ef8ebf191a7073ed3fc044a21af8461

See more details on using hashes here.

Provenance

The following attestation bundles were made for thessla_green_modbus-0.1.0a4.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.0a4-py3-none-any.whl.

File metadata

File hashes

Hashes for thessla_green_modbus-0.1.0a4-py3-none-any.whl
Algorithm Hash digest
SHA256 fa009df538fe3ef7abc24b7fe4e4d56c4407d05a94911368819498fd481e76f5
MD5 5259b52d78dc9e28d32f825c253e7208
BLAKE2b-256 7ad6710520d1aeeee146156d46d4a282e2cbd11e8c7cf98ec3b07f55f2ecc6a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for thessla_green_modbus-0.1.0a4-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.0a4 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