initial, step 2 already
This commit is contained in:
63
apps/abstraction/README.md
Normal file
63
apps/abstraction/README.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# Abstraction Layer
|
||||
|
||||
The abstraction layer is an asyncio-based worker that manages device communication through MQTT.
|
||||
|
||||
## Features
|
||||
|
||||
- **Configuration Loading**: Reads device configuration from `config/devices.yaml`
|
||||
- **MQTT Integration**: Connects to MQTT broker for real-time device communication
|
||||
- **Async Design**: Built with asyncio for efficient concurrent operations
|
||||
- **Message Subscription**: Listens to `home/#` topics for device events
|
||||
- **Logging**: Structured logging at INFO level
|
||||
|
||||
## Running
|
||||
|
||||
```bash
|
||||
# Start the abstraction worker
|
||||
poetry run python -m apps.abstraction.main
|
||||
```
|
||||
|
||||
The worker will:
|
||||
1. Load configuration from `config/devices.yaml`
|
||||
2. Connect to MQTT broker (172.16.2.16:1883)
|
||||
3. Subscribe to topic `home/#`
|
||||
4. Log "Abstraction worker started" at INFO level
|
||||
5. Keep running and processing MQTT messages until interrupted
|
||||
|
||||
## Configuration
|
||||
|
||||
The worker reads configuration from `config/devices.yaml`. Example structure:
|
||||
|
||||
```yaml
|
||||
mqtt:
|
||||
broker: "172.16.2.16"
|
||||
port: 1883
|
||||
client_id: "home-automation-abstraction"
|
||||
keepalive: 60
|
||||
|
||||
devices:
|
||||
- id: "light_living_room"
|
||||
type: "light"
|
||||
name: "Living Room Light"
|
||||
mqtt_topic: "home/living_room/light"
|
||||
```
|
||||
|
||||
## MQTT Broker
|
||||
|
||||
The worker connects to a real MQTT broker at:
|
||||
- **Host**: 172.16.2.16
|
||||
- **Port**: 1883
|
||||
- **Authentication**: None required
|
||||
|
||||
Topics subscribed:
|
||||
- `home/#` - All home automation topics
|
||||
|
||||
## Dependencies
|
||||
|
||||
- **PyYAML**: Configuration file parsing
|
||||
- **aiomqtt**: Modern async MQTT client
|
||||
- **asyncio**: Asynchronous I/O
|
||||
|
||||
## Stopping
|
||||
|
||||
Press `Ctrl+C` to gracefully stop the worker.
|
||||
Reference in New Issue
Block a user