odoo_mqtt/iot_bridge/core
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
..
__init__.py refactor(phase2.2): Refactor main.py - Extract bootstrap and service_manager 2026-02-18 22:43:00 +01:00
bootstrap.py refactor(phase2.3): Migrate to Pydantic V2 and modernize config management 2026-02-18 22:53:36 +01:00
device_manager.py feat: online/offline detection via availability topic (direct_session) 2026-03-11 15:39:36 +01:00
event_queue.py docs: complete phase 4.4 public API docstrings 2026-02-19 19:27:32 +01:00
service_manager.py feat: parser_config als Wire-Format durchgehend (Phase 3 komplett) 2026-03-11 13:05:54 +01:00
session_detector.py docs: complete phase 4.4 public API docstrings 2026-02-19 19:27:32 +01:00