initial, step 2 already

This commit is contained in:
2025-10-31 14:25:12 +01:00
commit ea17d048ad
24 changed files with 1431 additions and 0 deletions

View 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.