This release is a pre-release and may not be stable for production use.
py-atmos-serial
Async Python library for a passive RS485 listen on an ATMOS boiler bus. It is the push-side data layer for the Home Assistant integration in ha-atmos. The gateway library py-atmos-wg1000 remains the pull side.
PyPI name: py-atmos-serial. Import as import pyatmos_serial.
Status: 2026.9.0a1 sketch, published to reserve the PyPI name. The port, the byte buffer, and the update bus exist. Frame layout, checksum, baud, and the register map have not been reverse-engineered. decode_frames raises ProtocolUnknownError for any non-empty buffer. CODEC_IMPLEMENTED is False.
What works today
SerialSettings checks the port name and baud rate. 8N1 is only a UART placeholder, not a captured bus setting.
SerialPortSource opens a serial port and reads it without blocking the event loop.
AtmosSerialFeed counts bytes and would publish RegisterUpdate when a decoder emits a frame. Until then it publishes nothing and keeps the listen loop alive.
What this library does not do
It does not guess opcodes, CRC polynomials, or register ids. It does not transmit on the bus. Home Assistant should treat raw bytes as “the port is alive”, and a decoded register update as the only signal that serial data is fresh enough to prefer over the WG1000 poll.
Development
Python 3.13. Version comes from git tags (hatch-vcs), with fallback 0.0.0 until the first tag.
uv sync --group dev --group test
uv run --group dev --group test poe validate
Release files for py-atmos-serial 2026.9.0a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| py_atmos_serial-2026.9.0a1.tar.gz | 115.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| py_atmos_serial-2026.9.0a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 124.1 kB
Release files / py_atmos_serial-2026.9.0a1.tar.gz
| Download URL | py_atmos_serial-2026.9.0a1.tar.gz |
|---|---|
| Size | 115.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ae50c13b2ac25ce51c91290f4937fc7d4afbb5b0b9fe551834d2183832834061
|
|
BLAKE2b-256 checksum How to use checksums |
9b44e01bc3e0b1cfd1a8c2dfda7a7715e8c24bf5f2b99982bc89d32c6db55664
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 25, 2026.
Transparency logRelease files / py_atmos_serial-2026.9.0a1-py3-none-any.whl
| Download URL | py_atmos_serial-2026.9.0a1-py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fddd409d81df21e1486857086f349ac3544353072bd194fee77cfe368b6e3eb1
|
|
BLAKE2b-256 checksum How to use checksums |
6c46c4c8ca0d64b6aa58a72f6e603ecb3610d5d7ac81f99be381fed53eae290d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 25, 2026.
Transparency log