Metadata-Version: 2.4
Name: raise-suite-sdk
Version: 0.1.0
Summary: RAISE Suite SDK for local devices to communicate with the local RAISE Suite Agent
License: EUPL-1.2
License-File: LICENSE
Author: RAISE Suite Developers
Requires-Python: >=3.11,<4.0
Classifier: License :: OSI Approved :: European Union Public Licence 1.2 (EUPL 1.2)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: paho-mqtt (>=2.0.0,<3.0.0)
Project-URL: Repository, https://github.com/cyclopt-pc/raise-suite-sdk
Description-Content-Type: text/markdown

# RAISE Suite SDK

A Python SDK that enables local devices to communicate with a local RAISE Suite Agent over MQTT. It provides a clean, type-safe wrapper around `paho-mqtt` v2 for connecting, publishing, subscribing, and handling device messages.

## Features
- **Modern Packaging**: Fully managed via Poetry with `pyproject.toml`.
- **Clean Namespace**: Main class exposed via `from raise_suite_sdk import MqttClient`.
- **Robust Logging**: Zero direct terminal spam. All communications use structured standard Python logging under `raise_suite_sdk`.
- **Type Hints**: Full PEP 484 type signatures for enhanced IDE autocomplete.

## Installation

Using Poetry:
```bash
poetry add raise-suite-sdk
```

Or pip:
```bash
pip install raise-suite-sdk
```

## Quick Start

```python
import logging
from raise_suite_sdk import MqttClient

# Configure logging in your parent application
logging.basicConfig(level=logging.INFO)

# Define callback
def on_message_received(topic: str, payload: dict, qos: int):
    print(f"Received message from {topic}: {payload}")

# Initialize and start the client
client = MqttClient(
    client_id="my-app-client",
    user="my_username",
    password="my_password",
    broker="localhost",
    port=1883,
    on_message=on_message_received
)

client.start()

# Publish a dictionary payload (automatically serialized to JSON)
client.publish("my/topic", {"status": "ok"}, qos=1)

# Stop the client when done
client.stop()
```

## License

Licensed under the European Union Public Licence 1.2 (EUPL-1.2). See [LICENSE](LICENSE) for the full text.

