Debuggen von MQTT über Websockets auf Envoy 1.28.0

Ich habe unsere Envoy-Installation von Envoy 1.11.1 auf 1.28.0 migriert und verwende nun auch SNI zur Auswahl des richtigen Zertifikats. Ein großer Teil dieser Migration ist die Aktualisierung der Syntax der Konfiguration für Envoy von der v2 API auf die v3 API. Das Upgrade verlief gut, mit Ausnahme unseres Websocket-basierten MQTT-Dienstes...

Weiterlesen

Paho MQTT Client (Javascript), Envoy, VerneMQ: Fehlersuche bei Verbindungsabbrüchen

Nachdem ich picockpit auf meinem Server installiert hatte, wurde ein Fehler festgestellt: Das Web-Frontend brach in regelmäßigen Abständen ab. Dies war in der lokalen Entwicklungsumgebung nicht der Fall. Benutzer von picockpit meldeten denselben Fehler. Ich habe den Fehler heute behoben und einen Hotfix eingespielt. Es stellte sich heraus, dass es ein Timing-Problem war. TL;DR wie...

Weiterlesen

VerneMQ wie man Clients zwangsweise per Kommandozeile trennt

Es gibt einen Befehl vmq-admin session show, der Ihnen die derzeit verbundenen Clients anzeigt: Leider wird diese Ausgabe für eine Gesamtbreite von 80 Zeichen abgeschnitten (egal wie viele passen würden) und es gibt derzeit keinen Hinweis darauf, dass es so ist. Siehe dieses VerneMQ Github-Problem: https://github.com/vernemq/vernemq/issues/1200 Zum Trennen von Clients benötigen Sie die client_id...

Weiterlesen

VerneMQ MQTT-Verbindung verloren (8): AMQJS0008I Socket geschlossen. verschiedene Mountpoints

In meinem Setup schreibe ich die Einhängepunkte der Clients von denen, die von den Listenern eingerichtet wurden, auf individuelle Einhängepunkte je nach Clientgruppe um. Die Idee dahinter ist die perfekte Isolierung der Mehrmandantenfähigkeit auf dem Server. Einzelne Clients aus verschiedenen Gruppen können sich also nicht gegenseitig sehen, selbst wenn sie sich bei "#" anmelden...

Weiterlesen

Ändern des Einhängepunkts bei auth_on_register webhook für VerneMQ

Es ist möglich, Modifikatoren zusammen mit dem "result" zu übergeben: "ok" Rückgabewert Ihres Webhooks für VerneMQ. Die offizielle Dokumentation von VerneMQ gibt einige Beispiele für die Syntax. Ändern des Mountpoints Es ist auch möglich, den Mountpoint zu ändern, aber die client_id muss anscheinend auch übergeben werden! Ich habe eine Anfrage gestellt...

Weiterlesen

Debugging von VerneMQ-Verbindungs-/Authentifizierungsproblemen bei dualer Authentifizierung mit Webhooks und vmq_diversity

TL;DR https://github.com/vernemq/vernemq/blob/master/apps/vmq_diversity/src/vmq_diversity_plugin.erl enthält eine Anweisung, die die Authentifizierung / Autorisierung über andere Kanäle blockiert, wenn Ihr Lua-Skript "false" zurückgibt: führt zu: statt andere Plugins zu versuchen, wie Sie vielleicht angenommen haben! Um dieses Problem zu vermeiden, geben Sie einfach nichts von Ihrem Lua-Skript zurück, wenn Sie das nicht wollen...

Weiterlesen

MQTT Topic Tree Design - bewährte Verfahren, Tipps und Beispiele

Generischer MQTT-Hintergrund Bei MQTT wissen Sender und Empfänger nichts voneinander - der Broker übernimmt die Nachrichtenübermittlung. Dadurch können die Nachrichten räumlich, zeitlich und in ihrer Intensität voneinander getrennt werden. Der Sender kann mit der von ihm gewünschten Geschwindigkeit und zum gewünschten Zeitpunkt senden. Der Empfänger kann die Nachrichten abholen, wann er will...

Weiterlesen

VerneMQ: econnrefused & Webhook Beispiel

Webhooks aktivieren Sie wie folgt in Ihrer vernemq.conf.local (.local, wenn Sie auf Docker laufen, so dass die Einstellungen am Ende der Datei erhalten bleiben): plugins.vmq_webhooks = on vmq_webhooks.js_auth_on_register.hook = auth_on_register vmq_webhooks.js_auth_on_register.endpoint = http://container_picockpit:1200/example/path Beachten Sie, dass die db-basierte Authentifizierung ebenfalls fehlschlägt, wenn Ihr Webhook nicht erreichbar ist (econnrefused) ... ! Wenn Sie Fehler erhalten wie...

Weiterlesen

VerneMQ Docker überschreibt meine Konfiguration

Situation Sie bearbeiten die Datei vernemq.conf und müssen feststellen, dass Ihre Konfiguration beim nächsten Start (mit dem offiziellen Docker-Container) von VerneMQ überschrieben wird. Insbesondere der Abschnitt mit den Listenern am Ende der Datei wird Ihnen "aufgezwungen". Lösung VerneMQ wird mit einem Skript (start_vernemq) gestartet. Das Skript kann hier eingesehen werden: https://github.com/vernemq/docker-vernemq/blob/master/bin/vernemq.sh Das...

Weiterlesen