- Entfernt doppelte Topic-Subscription (war Ursache für Duplikate) - Subscription passiert nur noch in _on_connect() Callback - Ausführliche Dokumentation in iot_bridge_service.py hinzugefügt - Test für Duplikate erstellt (test_no_duplicate_messages.py) - Recovery-Logik für Container-Restart dokumentiert HINWEIS: Service-Design muss überarbeitet werden! - Aktuell: Lazy Init, manueller Start - Sollte sein: Auto-Init beim Odoo-Start, always-on MQTT - Nächster Schritt: Odoo 18 Service Pattern + MQTT Bridge Pattern recherchieren |
||
|---|---|---|
| .. | ||
| models | ||
| python_prototype | ||
| security | ||
| services | ||
| tests | ||
| views | ||
| __init__.py | ||
| __manifest__.py | ||
| FEATURE_REQUEST_OPEN_WORKSHOP_MQTT_IoT.md | ||
| README.md | ||
| run-tests.sh | ||
| test-direct.sh | ||
| test-output.txt | ||
| TODO.md | ||
Open Workshop MQTT
MQTT IoT Device Integration for Odoo 18
Features
- ✅ MQTT Broker Connection - Connect to external MQTT brokers (Mosquitto, etc.)
- ✅ Device Management - Configure and monitor IoT devices
- ✅ Session Tracking - Automatic runtime session detection
- ✅ Flexible Parsers - Support for Shelly PM Mini G3, Tasmota, Generic JSON
- ✅ Session Strategies - Power threshold, Last Will Testament, Manual control
- ✅ Analytics - Pivot tables and graphs for runtime analysis
- ✅ Auto-Reconnect - Exponential backoff on connection loss
- ✅ Message Logging - Debug log for MQTT messages
Installation
-
Install Python dependencies:
pip install paho-mqtt -
Install the module in Odoo:
- Apps → Update Apps List
- Search for "Open Workshop MQTT"
- Click Install
Quick Start
-
Create MQTT Connection
- MQTT → Connections → Create
- Enter broker details (host, port, credentials)
- Click "Test Connection" then "Start"
-
Add Device
- MQTT → Devices → Create
- Select connection
- Configure device ID and topic pattern
- Choose parser type (Shelly, Tasmota, etc.)
- Set session detection strategy
-
Monitor Sessions
- MQTT → Sessions
- View runtime analytics in Pivot/Graph views
Session Detection Strategies
Power Threshold (Recommended)
- Dual threshold detection (standby/working)
- Configurable debounce timers
- Timeout detection
- Reference:
python_prototype/session_detector.py
Last Will Testament
- Uses MQTT LWT for offline detection
- Immediate session end on device disconnect
Manual
- Start/stop sessions via buttons or MQTT commands
Configuration Example
Shelly PM Mini G3:
{
"standby_threshold_w": 20,
"working_threshold_w": 100,
"start_debounce_s": 3,
"stop_debounce_s": 15,
"message_timeout_s": 20
}
Optional: Maintenance Integration
Install open_workshop_mqtt_maintenance (separate module) to link MQTT devices to maintenance.equipment.
Technical Reference
See python_prototype/ directory for:
- Implementation reference
- Test suite (pytest)
- Session detection logic
- MQTT client implementation
Support
- Documentation: See
python_prototype/README.md - Issues: GitHub Issues
- Tests:
pytest python_prototype/tests/ -v
License
LGPL-3