- ✅ Alle 26 Tests grün (0 failed, 0 errors)
- Phase 2 ist damit 100% fertig!
Tests repariert:
- test_session_detector.py: Alle 7 Tests an env-passing angepasst
- SessionDetector(device.id, device.name) statt SessionDetector(device)
- process_power_event(env, power, ts) statt process_power_event(power, ts)
- test_mqtt_mocked.py: Alle 4 Service-Tests korrigiert
- start_connection_with_env(connection_id, env) Signatur
- stop_connection(connection_id) Parameter hinzugefügt
- IotBridgeService direkt instanziiert
- device.topic_pattern statt nicht-existierendem device_id
Verbesserungen:
- run-tests.sh: Klare Ausgabe mit ✓✓✓ ALL TESTS PASSED ✓✓✓
- run-tests.sh: Parsed Odoo Test-Output korrekt
- run-tests.sh: Exit Code (0=success, 1=failure)
Test-Coverage:
- SessionDetector State Machine vollständig getestet
- Alle 5 States: IDLE/STARTING/STANDBY/WORKING/STOPPING
- Debounce Logic: Start + Stop Timer
- Duration Tracking: Standby/Working Zeiten
- Timeout Detection: 20s Message Timeout
- State Recovery: Nach Restart
SessionDetector ist produktionsreif!
|
||
|---|---|---|
| .. | ||
| models | ||
| python_prototype | ||
| security | ||
| services | ||
| tests | ||
| views | ||
| __init__.py | ||
| __manifest__.py | ||
| FEATURE_REQUEST_OPEN_WORKSHOP_MQTT_IoT.md | ||
| README.md | ||
| run-tests.sh | ||
| 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