Zum Hauptinhalt springen

Mosquitto Smart-Home-Integration, kostenlos und Open Source

Mosquitto-Integration für Gladys Assistant

Der Zustand deines Mosquitto-MQTT-Brokers in Gladys: Clients, Nachrichtenrate, Ausfälle.

Überwacht den Zustand deines MQTT-Brokers Eclipse Mosquitto in Gladys: verbundene Clients, Nachrichtenrate, Datenverkehr, Abonnements, Laufzeit, Version und Ausfälle, aus den Statistiken, die Mosquitto unter seinen $SYS-Topics veröffentlicht.

Diese Integration steht in keiner Verbindung zur Eclipse Foundation oder zum Mosquitto-Projekt.

Überblick​

Gladys spricht bereits MQTT: Seine MQTT-Integration verbindet sich mit einem Broker, um deine Geräte zu steuern (auch solche im Home-Assistant-Format wie Zigbee2MQTT). Statistiken des Brokers selbst zeigt sie nicht. Diese Integration schon: Die Integration abonniert $SYS/broker/#, nur lesend, und macht aus dem, was Mosquitto über sich selbst sagt, ein Gladys-Gerät, fünf Szenen-Auslöser, eine Szenen-Aktion und ein Dashboard-Widget.

Die Integration veröffentlicht nie eine Nachricht und abonniert nichts außerhalb von $SYS. Alles bleibt in deinem lokalen Netzwerk.

Die Integration kann den Broker überwachen, den Gladys für dich installiert hat (die Zugangsdaten stehen auf der MQTT-Seite von Gladys), wie jeden anderen Mosquitto in deinem Netzwerk.

Voraussetzungen​

  • Gladys 5.1 oder neuer.
  • Mosquitto 1.6 oder neuer (getestet mit 2.1 und 1.6), von Gladys aus erreichbar.
  • Ein Mosquitto-Benutzer, der $SYS lesen darf, oder anonymer Zugang, wenn dein Broker ihn erlaubt.
  • sys_interval in mosquitto.conf nicht auf 0 (standardmäßig 10 Sekunden).

Dem Benutzer Lesezugriff auf $SYS geben​

Wenn dein Broker eine ACL-Datei nutzt (acl_file in mosquitto.conf), füge diese zwei Zeilen für den Benutzer der Integration hinzu und starte Mosquitto neu:

user gladys
topic read $SYS/#

Für anonymen Zugang setze topic read $SYS/# an den Anfang der Datei, vor jede user-Zeile. Ersetze gladys durch deinen Benutzernamen. Ohne sie nimmt Mosquitto die Verbindung an, sendet aber keine Statistiken: Die Seite der Integration zeigt dann genau die Zeilen, die fehlen. Ohne ACL-Datei darf jeder Benutzer $SYS lesen.

Konfiguration​

  1. Öffne den Tab Konfiguration der Integration.
  2. Adresse des Brokers: mqtt:// gefolgt vom Host und dem Port, wenn er nicht 1883 ist (zum Beispiel mqtt://mosquitto.local:1883). Für TLS nimm mqtts:// (Port 8883). WebSocket-Adressen (ws://, wss://) gehen auch.
  3. Benutzername und Passwort: Für einen anonymen Broker leer lassen.
  4. Selbstsigniertes Zertifikat akzeptieren: Nur mit mqtts://, wenn das Zertifikat des Brokers nicht von einer bekannten Stelle signiert ist.
  5. Sprache der Texte: die Namen der Funktionen beim Hinzufügen des Brokers, der Satz der Szenen-Aktion und die Meldungen der Aktion.
  6. Speichern. Das Gerät Mosquitto erscheint im Tab Erkennung, sobald die ersten Statistiken da sind (innerhalb einer Sekunde): Füge es hinzu.

Die Schaltfläche Verbindung prüfen zeigt, ob der Broker antwortet, ob der Benutzer $SYS lesen darf, sowie die Version und die Kennzahlen.

Die Integration verbindet sich mit einer einmal gezogenen und gespeicherten Client-ID (gladys-mosquitto- gefolgt von acht Zeichen) und einer sauberen Sitzung: Die Integration zählt nicht zu den getrennten persistenten Clients, wenn Gladys neu startet.

Das Gerät des Brokers​

FunktionBedeutung
Erreichbar1, solange der Broker antwortet (auch wenn er die Anmeldung ablehnt), sonst 0
Verbundene ClientsJetzt verbundene Clients, diese Integration eingeschlossen
Getrennte persistente ClientsClients mit persistenter Sitzung (clean session aus), die offline sind
Empfangene Nachrichten (/min)An den Broker veröffentlichte Nachrichten pro Minute (gleitender Mittelwert)
Gesendete Nachrichten (/min)Vom Broker an Abonnenten zugestellte Nachrichten pro Minute
Eingehender DatenverkehrEmpfangene Bytes pro Sekunde (gleitender Mittelwert, 1 Minute)
Ausgehender DatenverkehrGesendete Bytes pro Sekunde
AbonnementsAktive Abonnements
Gespeicherte NachrichtenVom Broker aufbewahrte Retained-Nachrichten
LaufzeitZeit seit dem Start von Mosquitto, in Tagen
VersionVersion von Mosquitto, als Text
Belegter SpeicherVon Mosquitto belegter Speicher, wenn er ihn meldet (nicht im 1.6-Docker-Image)

Eine Funktion gibt es nur, wenn Mosquitto ihr Topic veröffentlicht: Manche Builds haben keine Speicherangabe. Mosquitto 1.6 sendet manche Zahlen erst, wenn sie sich ändern: Eine solche Funktion erscheint später, und der Tab „Erkennung“ bietet dann an, das Gerät zu aktualisieren. Ist der Broker nicht erreichbar, geht Erreichbar auf 0 und die anderen Funktionen behalten ihren letzten Wert.

Mosquitto aktualisiert seine Statistiken alle sys_interval Sekunden; Gladys bekommt geänderte Werte höchstens alle 30 Sekunden, und Erreichbar sofort.

Dashboard-Widget​

Das Widget Mosquitto-Broker zeigt den Zustand des Brokers (online, nicht erreichbar, Anmeldung abgelehnt, keine $SYS-Statistiken), seine Version und Laufzeit, dann vier Live-Kacheln: verbundene Clients, empfangene und gesendete Nachrichten pro Minute, Abonnements. Wähle den Broker in den Einstellungen des Widgets.

Szenen-Auslöser​

  • Broker nicht erreichbar: Der Broker ist seit 1, 5, 15, 30 oder 60 Minuten (wählbar) nicht erreichbar. Ein Neustart von wenigen Sekunden löst nichts aus, eine abgelehnte Anmeldung auch nicht. Variable: die Anzahl der Minuten.
  • Broker wieder da: Der Broker antwortet wieder nach einem Ausfall von mindestens einer Minute. Variable: die Dauer des Ausfalls.
  • Broker neu gestartet: Die Laufzeit von Mosquitto ist auf null zurückgegangen. Er wurde neu gestartet (Update, Neustart des Rechners) oder ist abgestürzt, auch ohne sichtbaren Ausfall. Variable: die Version.
  • Weniger verbundene Clients: weniger Clients als die gewählte Zahl (2 bis 100) während einer Minute: Ein Sensor, eine Bridge oder Zigbee2MQTT ist weg. Löst einmal aus, und erst wieder, wenn die Zahl zurück ist. Denk daran, dass die Integration als ein Client zählt.
  • Nachrichtenspitze: mehr veröffentlichte Nachrichten pro Minute als die gewählte Zahl (100 bis 50.000): ein Gerät in einer Schleife, eine Flut. Höchstens einmal alle 30 Minuten pro Schwelle; eine Flut, die nach 30 Minuten noch anhält, wird erneut gemeldet.

Szenen-Aktion​

Zustand des Brokers liefert einen fertigen Satz, zum Beispiel „Mosquitto 2.1.2 läuft seit 3 Tagen, 12 Clients verbunden, 64 Nachrichten empfangen und 87 gesendet pro Minute.“, und seine Zahlen: erreichbar, verbundene Clients, empfangene und gesendete Nachrichten pro Minute, Laufzeit in Stunden, Version.

Ideen für Szenen​

  • Zigbee2MQTT ist weg: Auslöser „Weniger verbundene Clients“ unter 5, Aktion „Nachricht senden“ mit der Zahl der Clients, um nach Zigbee2MQTT zu sehen.
  • Broker ausgefallen: Auslöser „Broker nicht erreichbar“ seit 5 Minuten, Aktion „Nachricht senden“ — die per MQTT gesteuerten Lampen und Sensoren antworten nicht mehr.
  • Wochenbericht: jeden Sonntag um 9:00 die Aktion „Zustand des Brokers“, dann „Nachricht senden“ mit ihrem Satz.

Fehlerbehebung​

  • „Verbunden, aber keine $SYS-Statistiken“: Die ACL lässt den Benutzer $SYS nicht lesen. Füge topic read $SYS/# unter dem Benutzer in der ACL-Datei hinzu (siehe Voraussetzungen) oder prüfe, dass sys_interval nicht 0 ist, und starte Mosquitto neu.
  • „Mosquitto lehnt die Verbindung ab“: falscher Benutzername oder falsches Passwort, oder anonymer Zugang abgeschaltet.
  • „Der Mosquitto-Broker ist nicht erreichbar“: Prüfe Adresse und Port, ob Mosquitto im Netzwerk lauscht (listener 1883 bei Mosquitto 2, das ohne diese Zeile nur lokal lauscht) und bei mqtts:// das Zertifikat (oder hake „Selbstsigniertes Zertifikat akzeptieren“ an).
  • Mehr Details in den Protokollen der Integration; LOG_LEVEL=debug zeigt jeden Schritt.

Grenzen​

  • Ein Broker pro Installation der Integration.
  • Nur Mosquitto: Andere Broker (EMQX, VerneMQ, HiveMQ) veröffentlichen andere $SYS-Topics oder gar keine.
  • Die Raten sind die gleitenden Mittelwerte, die Mosquitto selbst berechnet.
  • Ein per Bridge mit anderen verbundener Broker zeigt nur seine eigenen Zahlen.

Konfigurationseinstellungen​

Diese Einstellungen fragt Mosquitto in seinem Konfigurationsbildschirm in Gladys ab.

EinstellungTypPflichtfeldBeschreibung
Mosquitto verbindensectionNeinDie Integration liest die Statistiken, die Mosquitto unter $SYS/broker/# veröffentlicht. Die Integration abonniert nur und veröffentlicht nie. Der Benutzer braucht in der ACL-Datei Lesezugriff auf $SYS.
Adresse des BrokersstringJamqtt:// (Port 1883) oder mqtts:// für TLS (Port 8883). Der von Gladys installierte Broker geht auch: Seine Zugangsdaten stehen auf der MQTT-Seite von Gladys.
BenutzernamestringNeinLeer lassen, wenn der Broker anonyme Clients zulässt.
PasswortsecretNein
Selbstsigniertes Zertifikat akzeptierenbooleanNeinNur mqtts://: Das Zertifikat des Brokers wird dann nicht geprüft.
Sprache der TexteselectNeinNamen der Funktionen des Brokers beim Hinzufügen, Szenen-Sätze und Meldungen der Aktionen.

So installierst du Mosquitto in Gladys​

  1. Öffne in Gladys Integrationen: Mosquitto erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
  2. Klicke auf Installieren. Gladys lädt das Docker-Image (ghcr.io/guim31/gladys-mosquitto:1.0.0) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration).
  3. Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
  4. Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/guim31/gladys-mosquitto.

Mosquitto benötigt Gladys >=5.1.0. Der Katalog in Gladys wird stündlich aktualisiert, eine neue Version ist also spätestens eine Stunde nach ihrer Veröffentlichung verfügbar.

Du nutzt Gladys noch nicht? Es ist kostenlos und Open Source: folge der Installationsanleitung, um loszulegen.

Über externe Integrationen​

Mosquitto ist eine externe Integration: eine Community-Integration, die als Docker-Container verpackt und auf GitHub veröffentlicht wird. Gladys installiert sie mit einem Klick und führt sie in einer vom Kern isolierten Sandbox aus. Sie wird von guim31 veröffentlicht und gepflegt, nicht vom Gladys-Kernteam.

Abonniere den Newsletter von Gladys Assistant

Ein paar E-Mails im Monat zu neuen Releases und Neuigkeiten aus dem Projekt. Verschickt von Pierre-Gilles Leymarie, dem Gründer des Projekts. Jederzeit abbestellbar 🙂