Implements PUSH architecture - Bridge receives config from Odoo via HTTP NEW FEATURES: - HTTP Config Server (FastAPI on port 8080) - POST /config: Receive device configuration from Odoo - GET /config: Query currently active configuration - GET /health: Health check endpoint with device statistics - Optional Bearer token authentication (BRIDGE_API_TOKEN) - Config Validation (Pydantic models) - BridgeConfig, DeviceConfig, SessionConfig schemas - Validation: unique device_id, unique mqtt_topic - Threshold validation: working_threshold_w > standby_threshold_w - Dynamic Device Management (DeviceManager) - Device diff detection (add/update/remove) - Automatic MQTT subscribe/unsubscribe for topic changes - SessionDetector lifecycle management - Active session closing on device removal - Config Persistence - Saves received config to /data/config-active.yaml - Bridge startup: loads config-active.yaml as fallback - Docker volume iot-bridge-data:/data for persistence NEW FILES: - iot_bridge/config_server.py - FastAPI HTTP server - iot_bridge/device_manager.py - Device lifecycle management - iot_bridge/tests/test-config-push.sh - Integration test script - iot_bridge/tests/test-config-push.json - Test configuration MODIFIED FILES: - iot_bridge/main.py - Integrated HTTP server in thread - iot_bridge/mqtt_client.py - Added subscribe()/unsubscribe() - iot_bridge/requirements.txt - Added fastapi, uvicorn, pydantic - iot_bridge/Dockerfile - EXPOSE 8080, HTTP healthcheck - odoo/docker-compose.dev.yaml - Port 8080, volume /data TESTING: Verified via iot_bridge/tests/test-config-push.sh: ✅ Config push via HTTP works (200 OK) ✅ Old devices removed, new devices added ✅ MQTT topics dynamically updated (subscribe/unsubscribe) ✅ Config persisted to /data/config-active.yaml ✅ Health endpoint shows last_config_update timestamp ✅ Bridge restarts load config-active.yaml automatically NEXT STEP: Phase 3.2 - Implement Odoo-side config push (Model hooks) |
||
|---|---|---|
| extra-addons/open_workshop/open_workshop_mqtt | ||
| iot_bridge | ||
| odoo@fd43f0445a | ||
| python_proto_type | ||
| .gitignore | ||
| FEATURE_REQUEST_OPEN_WORKSHOP_MQTT_IoT.md | ||
| IMPLEMENTATION_PLAN.md | ||