Metadata-Version: 2.3
Name: tecnosystemi-unofficial
Version: 0.4.2
Summary: Unofficial Python library for controlling Tecnosystemi devices (Pico, etc.) via UDP
Keywords: tecnosystemi,pico,iot,udp,hvac
Author: Karim Ramadan
Author-email: Karim Ramadan <karim.r.emam@gmail.com>
License: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: jinja2>=3.1
Requires-Dist: pytest>=8 ; extra == 'dev'
Requires-Dist: pytest-timeout ; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23 ; extra == 'dev'
Requires-Python: >=3.10
Provides-Extra: dev
Description-Content-Type: text/markdown

# tecnosystemi-unofficial

Unofficial Python library + CLI for controlling **Tecnosystemi** IoT devices (Pico ventilation units and more) over UDP.

> [!WARNING]
> This is a community reverse-engineering effort based on the decompiled Android app. It is not affiliated with or endorsed by Tecnosistemi S.r.l.

## Documentation

| | |
|---|---|
| 📦 [**Library / API**](docs/library.md) | Use `TecnoClient` and `PicoDevice` in your own Python code |
| 🖥️ [**CLI**](docs/cli.md) | Interactive terminal tool to discover, inspect and control devices |

## Installation

```bash
pip install tecnosystemi-unofficial
```

For the CLI:

```bash
pipx install tecnosystemi-unofficial
tecno --help
```

## Quick example

```python
from tecnosystemi_unofficial import TecnoClient
from tecnosystemi_unofficial.devices import PicoDevice

with TecnoClient(ip="192.168.1.16") as client:
    pico = PicoDevice(client, pin="1234")
    print(pico.get_state())
    pico.turn_on()
    pico.set_speed(3)
    pico.set_mode(1)  # 1 = Recupero (heat-recovery)
```

## Running Tests

```bash
uv run pytest
```
