MQTT Topic Tree Design best practices, consigli ed esempi

Background generico di MQTT Con MQTT il mittente e il ricevitore non sono a conoscenza l'uno dell'altro - il broker gestisce la messaggistica. Questo permette ai messaggi di essere separati nello spazio, nel tempo e nell'intensità. Il mittente può inviare alla velocità che vuole e al tempo che vuole. Il ricevitore può raccogliere i messaggi a...

Weiterlesen

VerneMQ: esempio di econnrefused e Webhook

Webhooks attivate i webhooks in questo modo nel vostro vernemq.conf.local (.local quando si esegue su docker, in modo che le impostazioni in fondo al file persistano): 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 Notate che se il vostro webhook non è accessibile (econnrefused), anche l'autenticazione basata sul db fallirà ... ! Se si ottengono errori come...

Weiterlesen

envoy che serve una risposta statica

Oltre al routing e al reindirizzamento è possibile servire risposte statiche con Envoy. In questo caso voglio servire una risposta vietata (403) route_config: virtual_hosts: - nome: picockpit domini: ["picockpit.local:443", "picockpit.local"] route: - match: { prefisso: "/demo" } direct_response: status: 403 body: inline_string: "Proibito". - match: {prefix: "/"} route: {cluster: target_picockpit} Può anche servire...

Weiterlesen

Python Paho MQTT client autofirmato certificati websockets, howto

Usare Paho in Python con websockets e certificati autofirmati per una connessione websocket https:// ha un paio di insidie, così sto affrontando questo con un po' di codice di esempio qui: 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 sovrascrive la mia configurazione

Situazione Hai modificato vernemq.conf, solo per scoprire che la tua configurazione viene sovrascritta da VerneMQ al prossimo avvio (usando il contenitore Docker ufficiale). In particolare, la sezione con gli ascoltatori alla fine del file è "forzata". Soluzione VerneMQ viene avviato utilizzando uno script (start_vernemq). Lo script può essere visto qui: https://github.com/vernemq/docker-vernemq/blob/master/bin/vernemq.sh Il...

Weiterlesen

envoy non si connette a VerneMQ per MQTT su websockets, codice di errore 503

Alcune rapide informazioni di base per chiunque si imbatta negli stessi problemi, e come debuggarli. Codice di errore 503 Questo è il codice di errore che sto ottenendo: Errore durante il WebSocket handshake: Codice di risposta inaspettato: 503. Imposta la registrazione di envoy su debug Ecco il mio docker-compose.yaml per envoy: versione: '3.7' servizi: envoy: build: context: ./ dockerfile: Dockerfile container_name:...

Weiterlesen

websockets di envoy per configurazione delle rotte, impostazione del test JavaScript

Nel mio articolo di ieri ho discusso a lungo la configurazione e il test di envoy per il proxy dei websockets. Oggi vorrei aggiungere alcune informazioni aggiuntive. sintassi corretta per l'aggiornamento dei websocket per rotta È possibile abilitare l'aggiornamento dei websocket per rotta. Non è necessario aggiungerlo globalmente: - nome: envoy.http_connection_manager config: #upgrade_configs: # - upgrade_type: websocket ...

Weiterlesen

envoy, docker e websockets - debug e configurazione

I websockets sono una tecnologia eccitante, che permette di aggiornare una connessione HTTP a una connessione binaria persistente di lunga durata, che si può usare per inviare messaggi bidirezionali. Per inciso, il protocollo MQTT può essere trasportato utilizzando websockets - che è l'unico (?) modo per un client JavaScript consegnato dal sito web, per esempio. In...

Weiterlesen

modo corretto di istanziare il client Paho in JavaScript per wss (secure websocket)

La documentazione Paho è purtroppo abbastanza frammentata al momento, e alcuni link sul sito web di Eclipse non funzionano. Ecco alcuni link funzionanti (al 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 Ed ecco un fantastico sito web di Steve: http://www.steves-internet-guide.com/using-javascript-mqtt-client-websockets/ C'è un importante cambiamento nello spazio dei nomi Paho, dove si incontrano problemi nell'uso...

Weiterlesen

Comprendere Erlang & Lua / Luerl per VerneMQ MongoDB auth_on_register hook

Il mio obiettivo / TLDR Il mio obiettivo con questo post sul blog è quello di spiegare come impostare mountpoint personalizzati per VerneMQ modificando lo script auth Lua di MongoDB (lua/auth/mongodb.lua). Impostare un mountpoint personalizzato è possibile con VerneMQ non solo impostando manualmente i mountpoint per specifici ascoltatori (ad esempio le porte), ma anche programmaticamente durante l'autorizzazione...

Weiterlesen