fix: TelemetryMonitor MQTT rc=5 (Not Authorized) #2

Merged
ppfeiffer merged 1 commit from investigate/issues into main 2026-03-12 07:23:50 +01:00
Owner

Problem

TelemetryMonitor meldet beim Start wiederholt:

WARNING:TelemetryMonitor:MQTT connection failed: rc=5
WARNING:TelemetryMonitor:MQTT disconnected unexpectedly: rc=5

Obwohl der MQTT-Verbindungstest im Web-Interface erfolgreich ist.

Ursache

rc=5 = MQTT CONNACK "Not Authorized" – der Broker kennt die Verbindung,
lehnt sie aber wegen fehlender Credentials ab.

Der Web-Interface-Test liest Username + Passwort aus dem Request-Body und ruft
username_pw_set() auf. TelemetryMonitor._setup_mqtt() las zwar server,
port und transport aus [MQTT], ignorierte aber username, password,
use_auth_token und use_tls vollständig.

Fix

__init__() – neue Felder aus [MQTT]:

  • self.mqtt_username
  • self.mqtt_password
  • self.mqtt_use_auth_token
  • self.mqtt_use_tls

_setup_mqtt():

  • tls_set() wenn mqtt_use_tls
  • username_pw_set(username, password) wenn mqtt_username gesetzt
  • Log zeigt jetzt "as 'username'" oder "(no auth)" beim Verbinden

_on_mqtt_connect():

  • Lesbare Fehlertexte statt rohem rc=5
    z.B. "Nicht autorisiert (fehlende oder falsche Credentials)"

Geänderte Datei

  • modules/service_plugins/telemetry_monitor_service.py
## Problem TelemetryMonitor meldet beim Start wiederholt: ``` WARNING:TelemetryMonitor:MQTT connection failed: rc=5 WARNING:TelemetryMonitor:MQTT disconnected unexpectedly: rc=5 ``` Obwohl der MQTT-Verbindungstest im Web-Interface erfolgreich ist. ## Ursache `rc=5` = MQTT CONNACK **"Not Authorized"** – der Broker kennt die Verbindung, lehnt sie aber wegen fehlender Credentials ab. Der Web-Interface-Test liest Username + Passwort aus dem Request-Body und ruft `username_pw_set()` auf. `TelemetryMonitor._setup_mqtt()` las zwar `server`, `port` und `transport` aus `[MQTT]`, ignorierte aber `username`, `password`, `use_auth_token` und `use_tls` vollständig. ## Fix **`__init__()`** – neue Felder aus `[MQTT]`: - `self.mqtt_username` - `self.mqtt_password` - `self.mqtt_use_auth_token` - `self.mqtt_use_tls` **`_setup_mqtt()`**: - `tls_set()` wenn `mqtt_use_tls` - `username_pw_set(username, password)` wenn `mqtt_username` gesetzt - Log zeigt jetzt `"as 'username'"` oder `"(no auth)"` beim Verbinden **`_on_mqtt_connect()`**: - Lesbare Fehlertexte statt rohem `rc=5` z.B. `"Nicht autorisiert (fehlende oder falsche Credentials)"` ## Geänderte Datei - `modules/service_plugins/telemetry_monitor_service.py`
fix: TelemetryMonitor MQTT rc=5 (Not Authorized)
Some checks failed
Build and Push Docker Image / build (pull_request) Failing after 38s
Tests / test (pull_request) Failing after 20s
197791bba1
Ursache: TelemetryMonitor las zwar Server/Port/Transport aus [MQTT],
ignorierte aber username, password, use_auth_token und use_tls komplett.
_setup_mqtt() rief connect_async() ohne username_pw_set() auf.
Der MQTT-Broker lehnte die Verbindung deshalb mit rc=5 (Not Authorized) ab,
obwohl der Web-Interface-Test (der MQTTv5 + Credentials nutzt) funktioniert.

Fix in __init__:
- self.mqtt_username   <- [MQTT] username
- self.mqtt_password   <- [MQTT] password
- self.mqtt_use_auth_token <- [MQTT] use_auth_token
- self.mqtt_use_tls    <- [MQTT] use_tls

Fix in _setup_mqtt():
- tls_set() wenn mqtt_use_tls
- username_pw_set(username, password) wenn mqtt_username gesetzt
- Log-Meldung zeigt jetzt ob mit oder ohne Auth verbunden wird

Verbesserung in _on_mqtt_connect():
- rc-Codes mit lesbaren Fehlertexten statt rohem 'rc=5'
  ('Nicht autorisiert (fehlende oder falsche Credentials)')

Referenz: PacketCaptureService liest Credentials korrekt seit
commit 1462ff (username_pw_set in connect_mqtt_brokers)
ppfeiffer referenced this pull request from a commit 2026-03-12 07:24:29 +01:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ppfeiffer/meshcore-bot!2
No description provided.