Metadata-Version: 2.5
Name: pyairseekers
Version: 0.2.0
Summary: Async Python client for the Airseekers Tron robotic mower: cloud API, local Foxglove bridge, live video
Project-URL: Homepage, https://github.com/mikey0000/PyAirseekers
Project-URL: Documentation, https://github.com/mikey0000/PyAirseekers/tree/main/docs
Author: Michael Arthur
License-Expression: MIT
License-File: LICENSE
Keywords: airseekers,asyncio,foxglove,mower,ros,tron,whep
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Home Automation
Classifier: Typing :: Typed
Requires-Python: >=3.13
Requires-Dist: aiohttp>=3.10
Provides-Extra: ble
Requires-Dist: bleak>=0.22; extra == 'ble'
Provides-Extra: mqtt
Requires-Dist: paho-mqtt>=2.0; extra == 'mqtt'
Description-Content-Type: text/markdown

# pyairseekers

Async Python client for the Airseekers Tron robotic mower.

| Transport | Module | What for |
|---|---|---|
| Cloud REST | `pyairseekers.AirseekersCloud` | commands, settings, tasks, maps, account data |
| Local Foxglove bridge (`ws://<mower-ip>:8765`) | `pyairseekers.FoxgloveClient`, `pyairseekers.MowerController` | live telemetry; verified `stop` / `pause` |
| WHEP on the vendor's SRS server | `pyairseekers.whep_play` | live camera video |
| Cloud MQTT / BLE | `pyairseekers.mqtt` / `pyairseekers.ble` | experimental |

There is no published Airseekers API. Every endpoint in
[`docs/api/`](docs/api/README.md) is marked verified, observed or inferred.

```bash
pip install pyairseekers
```

```python
async with aiohttp.ClientSession() as session:
    cloud = AirseekersCloud(email, password, session)
    devices = await cloud.get_devices()
    await cloud.dock(devices[0]["sn"])
```

See [`examples/basic.py`](examples/basic.py). Failed commands raise
`AirseekersApiError` (with `.code`); network trouble raises
`AirseekersTransportError`; rejected credentials raise `AirseekersAuthError`
and stay rejected until `set_credentials()`.

## Development

Read [`CONSTITUTION.md`](CONSTITUTION.md) and [`CONTRIBUTING.md`](CONTRIBUTING.md).

```bash
uv sync
uv run pre-commit run --all-files
```

## Credits

- Cloud endpoint discovery: [AdrianTIonut/airseekers-tron-ha](https://github.com/AdrianTIonut/airseekers-tron-ha)
- Foxglove client and ROS1 deserializer: [Shimmi/airseekers-tron-ha](https://github.com/Shimmi/airseekers-tron-ha)
