Das ist also die allgemeine Frage, aber ich werde das Szenario hier bereitstellen.
Ich verwende den Mosquitto-Server, um mqtt comm zwischen esp-Relay-Modulen ( Sonoff von Itead ) und Home Assistant bereitzustellen . Meistens funktioniert es einwandfrei. Jedes Modul hat sein eigenes Thema, und es gibt in HASS so viele "leichte" Konfigurationen wie Module, sodass sie über einzelne Umschalttasten vom Web-Frontend aus gesteuert werden können.
Ich habe jedoch inkonsistente Zustandssituationen erlebt, in denen das Licht tatsächlich eingeschaltet ist und das Umschalten in HASS als ausgeschaltet angezeigt wird (und auch die entgegengesetzte Situation). Beim Überprüfen der Protokolle habe ich festgestellt, dass Mosquitto bestimmte Nachrichten nicht an HASS veröffentlicht (die alle Modulstatus-Themen abonnieren sollten). state/sonoff_xx/POWER
Insbesondere scheint HASS bei 4 Modulen und den entsprechenden Status-Themen ( ) nur die Themen der Module 2 und 4 zu abonnieren, nicht jedoch die Themen 1 und 3. Das Folgende ist das erwartete Verhalten für Modul 4, das gleiche kann für das überprüft werden anderes Arbeitsmodul, aber das Veröffentlichen in HASS fehlt für die anderen beiden.
Jun 15 19:22:46 nas mosquitto[9486]: Received PUBLISH from sonoff4 (d0, q0, r1, m0, 'stat/sonoff4/POWER', ... (2 bytes))
Jun 15 19:22:46 nas mosquitto[9486]: Sending PUBLISH to home-assistant (d0, q0, r0, m0, 'stat/sonoff4/POWER', ... (2 bytes))
Dies ist keine Frage in Bezug auf HASS und die Relay-Module, sondern es geht darum, wie Sie den Status des MQTT-Servers ermitteln können, für den bestimmte Clients abonniert sein sollen, bei Betrachtung der Protokolle jedoch nicht.
log_type all
inmosquitto.conf
). Tatsächlich habe ich den Abonnementeintrag überprüft, indem ich während derjournalctl -f
Ausführung eine Verbindung von einer Konsole aus hergestellt habe . Ich konnte jedoch keine Einträge zu HASS-Abonnements finden, da dies möglicherweise vor Tagen passiert ist und Journald nicht als persistent konfiguriert ist, sodass ich nur den aktuellen Startvorgang zur Hand hatte. Aus diesem Grund habe ich gehofft, den Moskito-Status überprüfen zu können.Sie können das Moskito-Protokoll für alle aktivieren und das Protokoll abonnieren. Dort finden Sie Nachrichten, die Sie für jede Client-Aktion wie Verbinden, Trennen, Abonnieren und Veröffentlichen von Fehlern dekodieren können.
du wirst einstellen
in mosquitto.conf abonnieren Sie dann
quelle