3 Commits

Author SHA1 Message Date
MarekWo ca44acab7f fix(observer): don't log deliberate client teardown as a lost connection
Reload/stop tears old MQTT clients down on purpose; the disconnect
callback was logging 'lost connection ... auto-reconnecting' and
recording last_error for every config save. Mark clients as stopping
before teardown and return early in the callback.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 19:48:28 +02:00
MarekWo 79ee58d91a feat(observer): scheduled flood adverts
Observer-owned daemon thread checks every 10 minutes whether
advert_interval_hours has elapsed since the persisted last-advert
timestamp and sends a flood advert via the existing DeviceManager
wrapper. Timestamp persists across restarts so redeploys don't
re-advertise early; failures and disconnected device skip the send
without touching the timestamp.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 19:08:37 +02:00
MarekWo d3590f9228 feat(observer): MQTT publishing module (meshcore-packet-capture compatible)
New app/observer.py: ObserverManager owns per-broker paho-mqtt clients
(own network threads, QoS 0, LWT + retained status) and the packet
fan-out. Packet decode/hash/format functions are ports of upstream
meshcore-packet-capture including its legacy path fallbacks and
unknown-version quirk; validated against 10 live packets from the
reference observer network (hash/route/type/len all byte-identical).
Adds paho-mqtt==2.1.0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 19:00:37 +02:00