tis-smartbus
Async Python client for the TIS Control SmartBus, talking to a TIS IP gateway (IP-COM-PORT / GTY) over UDP on the local network. No cloud, no dependencies.
It powers the TIS Control integration for Home Assistant.
Install
pip install tis-smartbus
Use
import asyncio
from tis_smartbus import TISGateway, CurtainAction, PanelType
async def main():
gw = TISGateway("192.168.1.50") # the IP gateway on your LAN
await gw.connect()
for module in await gw.discover(): # read-only: every module identifies itself
print(module.subnet, module.device, module.device_type.model, module.name)
print(await gw.read_channels(1, 5)) # [100, 0, 40, ...] — levels in %
gw.set_channel(1, 5, 2, 75, ramp_seconds=2)
gw.run_scene(1, 8, area=1, number=3)
gw.curtain(1, 6, 1, CurtainAction.OPEN)
gw.panel(1, 10, PanelType.COOL_SETPOINT, 23)
gw.add_listener(lambda tel: print(hex(tel.opcode), tel.source, tel.content.hex()))
await asyncio.sleep(30) # watch the bus
await gw.close()
asyncio.run(main())
What it covers
| Opcode | |
|---|---|
| Discovery (device type + address, module name) | 0x0004 / 0x000E |
| Single channel (lights, relays), with fade | 0x0031 → 0x0032 |
| Channel status | 0x0033 → 0x0034 |
| Scenes | 0x0002 |
| Curtains | 0xE3E0 |
| AC / floor heating panel control | 0xE3D8 → 0xE3D9 |
| Universal switch | 0xE01C → 0xE01D |
The wire format (datagram header, telegram layout, CRC-16/XMODEM) is documented in
protocol.py. The device-type table maps 250+ TIS module codes to
their model names.
Notes
- The gateway broadcasts replies to UDP port 6000, so
TISGatewaylistens on 6000 by default. Only one program per machine should do that; passbind_port=0for a send-only test. - Commands are fire-and-forget UDP; state comes back as telegrams on the bus.
Development
PYTHONPATH=src python -m unittest discover -s tests -v
License
Apache-2.0 © TIS Control
Metadata
Release files for tis-smartbus 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tis_smartbus-0.1.0.tar.gz | 19.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tis_smartbus-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.9 kB
Release files / tis_smartbus-0.1.0.tar.gz
| Download URL | tis_smartbus-0.1.0.tar.gz |
|---|---|
| Size | 19.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
44e4bd58ec47c70c9c0857e3ecdf9f85a510714339ddc77b1de5b33b83b7a017
|
|
BLAKE2b-256 checksum How to use checksums |
fd20af4d41b4de8ce7fd8ab8827f82230e58afdd29cd6e3da33bd5f778d935e4
|
| 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 Oct 8, 2026.
Transparency logRelease files / tis_smartbus-0.1.0-py3-none-any.whl
| Download URL | tis_smartbus-0.1.0-py3-none-any.whl |
|---|---|
| Size | 17.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a6f874a56a1528953068ab2b1ad7aac676316fa108bb378e9d0a05e66f874d13
|
|
BLAKE2b-256 checksum How to use checksums |
fc52785da232a025c37994f72351c47a0458e18f3db5c994474821d7311789fe
|
| 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 Oct 8, 2026.
Transparency log