odoo_mqtt/iot_bridge/tests
matthias.lotz 910f2d1112 feat: online/offline detection via availability topic (direct_session)
Lasercutter (direct_session) sendet Plain-Text 'online'/'offline' auf
<device-id>/availability – bislang wurden diese Nachrichten still verworfen.

Änderungen:
- mqtt_client.py: non-JSON Payloads als {'_raw': text} durchleiten
  (statt bei JSONDecodeError komplett zu verwerfen)
- device_manager._add_device: direct_session-Geräte abonnieren zusätzlich
  <device_id>/availability; Eintrag landet in device_map
- device_manager._remove_device: entfernt ALLE Topics eines Geräts
  (vorher nur das erste gefundene – Bug bei mehreren Topics)
- device_manager.route_message: {'_raw': 'online'/'offline'} erzeugt
  device_online / device_offline Event in der Queue (case-insensitive)
- 15 neue Unit-Tests in test_availability_pipeline.py (102/102 grün)
2026-03-11 15:39:36 +01:00
..
fixtures chore: Apply code quality tools (black, isort, ruff) 2026-02-18 22:20:25 +01:00
integration Phase 4.2: Add integration tests for reconnect, config push, and event delivery 2026-02-19 19:17:23 +01:00
tools Phase 3: Complete type safety & logging unification (3.1-3.2) 2026-02-18 23:54:27 +01:00
unit feat: online/offline detection via availability topic (direct_session) 2026-03-11 15:39:36 +01:00
__init__.py initial version 2026-02-10 20:00:27 +01:00
conftest.py feat: parser_config als Wire-Format durchgehend (Phase 3 komplett) 2026-03-11 13:05:54 +01:00
helpers.py chore: Apply code quality tools (black, isort, ruff) 2026-02-18 22:20:25 +01:00
test_e2e_push_architecture.py Phase 3: Complete type safety & logging unification (3.1-3.2) 2026-02-18 23:54:27 +01:00
test_mqtt_config_push.py chore: Apply code quality tools (black, isort, ruff) 2026-02-18 22:20:25 +01:00
test-config-push.json feat: Implement HTTP Config API for Bridge (Phase 3.1) 2026-02-12 20:05:49 +01:00
test-config-push.sh feat: Implement HTTP Config API for Bridge (Phase 3.1) 2026-02-12 20:05:49 +01:00