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

Abgesandter, der eine statische Antwort liefert

Neben Routing und Redirecting können Sie mit Envoy auch statische Antworten ausliefern. In diesem Fall möchte ich eine verbotene Antwort (403) ausliefern route_config: virtual_hosts: - name: picockpit domains: ["picockpit.local:443", "picockpit.local"] routes: - match: { prefix: "/demo" } direct_response: status: 403 body: inline_string: "Forbidden". - match: {Präfix: "/"} route: {cluster: target_picockpit} Es kann auch dazu dienen...

Weiterlesen

Python Paho MQTT-Client selbstsignierte Zertifikate Websockets, howto

Die Verwendung von Paho in Python mit Websockets und selbstsignierten Zertifikaten für eine https:// Websocket-Verbindung birgt einige Fallstricke, die ich hier mit etwas Beispielcode angehe: import ssl import time import paho.mqtt.client as mqtt class PCPMQTTClient: def on_connect(self, client, userdata, flags, rc): self.connection_status = rc if rc == 0: self.connected_flag = True self.connection_error_flag...

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

envoy verbindet sich nicht mit VerneMQ für MQTT über Websockets, Fehlercode 503

Einige kurze Hintergrundinformationen für alle, die auf dieselben Probleme stoßen, und wie man sie behebt. Fehlercode 503 Dies ist der Fehlercode, den ich erhalte: Fehler beim WebSocket-Handshake: Unerwarteter Antwortcode: 503. Set envoy logging to debug Hier ist meine docker-compose.yaml für envoy: version: '3.7' services: envoy: build: context: ./ dockerfile: Dockerfile container_name:...

Weiterlesen

envoy Websockets per Routenkonfiguration, JavaScript-Testaufbau

In meinem gestrigen Artikel habe ich die Konfiguration und den Test von envoy für das Proxying von Websockets ausführlich besprochen. Heute möchte ich einige zusätzliche Informationen hinzufügen. korrekte Syntax für Websocket-Upgrade pro Route Sie können Websocket-Upgrade pro Route aktivieren. Sie müssen es nicht global hinzufügen: - name: envoy.http_connection_manager config: #upgrade_configs: # - upgrade_type: websocket ...

Weiterlesen

envoy, Docker und Websockets - Fehlersuche und Konfiguration

Websockets sind eine aufregende Technologie, die es Ihnen ermöglicht, eine HTTP-Verbindung zu einer dauerhaften binären Verbindung auszubauen, die Sie zum Senden bidirektionaler Nachrichten verwenden können. Nebenbei bemerkt kann das MQTT-Protokoll über Websockets transportiert werden - die einzige (?) Möglichkeit für einen JavaScript-Client, der von der Website ausgeliefert wird, zum Beispiel. In...

Weiterlesen

korrekte Instanziierung des Paho Client in JavaScript für wss (secure websocket)

Die Paho-Dokumentation ist im Moment leider ziemlich fragmentiert, und einige Links auf der Eclipse-Website funktionieren nicht. Hier sind einige funktionierende Links (Stand 05/2019): https://www.eclipse.org/paho/clients/js/ https://www.eclipse.org/paho/files/jsdoc/index.html https://github.com/eclipse/paho.mqtt.javascript Und hier ist eine fantastische Website von Steve: http://www.steves-internet-guide.com/using-javascript-mqtt-client-websockets/ Es gibt eine wichtige Änderung im Paho-Namensraum, bei der Sie Probleme bekommen werden, wenn Sie...

Weiterlesen

Verstehen von Erlang & Lua / Luerl für VerneMQ MongoDB auth_on_register hook

Mein Ziel / TLDR Mein Ziel mit diesem Blogpost ist es, zu erklären, wie man benutzerdefinierte Mountpoints für VerneMQ setzt, indem man das mitgelieferte MongoDB auth Lua Skript (lua/auth/mongodb.lua) modifiziert. Das Setzen eines benutzerdefinierten Mountpoints ist bei VerneMQ nicht nur durch das manuelle Setzen von Mountpoints für bestimmte Listener (z.B. Ports) möglich, sondern auch programmatisch während der Autorisierung in...

Weiterlesen