Preview CometVisu mit MQTT
Verfasst: Mi Feb 09, 2022 12:27 am
In der nächsten CometVisu Version 0.12.0 (und damit auch in den aktuellen Release Candidates) ist bereits Unterstützung für MQTT als Backend implementiert. Da hier Stand heute noch keine ausreichende Test-Tiefe vorhanden ist, ist dieses Feature aktuell noch im Status "Preview".
Um die MQTT-Schnittstelle auszuprobieren braucht es nur ein paar einfache Schritte:
Als erstes wird ein MQTT Broker, wie Mosquitto, benötigt. Dieser Broker muss MQTT über Websockets bereit stellen. Ob der Broker auf dem TWS in einem Docker-Container läuft, oder wo anders im Netz läuft, ist egal.
Wichtig ist aber, dass wenn die CometVisu über HTTPS läuft (also über den Proxy), so muss die WebSocket-Schnittstelle des Brokers auch über Secure WebSockets (also "wss:" statt "ws:") erreichbar sein. Mit der neuesten TWS Software (3.0 Release Candidate 1.1) kann hier der TWS-Proxy auch für WebSocket verwendet werden.
In der CometVisu muss nun nur in der Config-Datei im <pages>-Element mit dem Attribut backend="mqtt" der MQTT-Modus ausgewählt werden. Über das Attribut backend-url wird die URI der Websocket-Schnittstelle angegeben. Mit den optionalen Attributen username und password können, so notwendig, auch noch die Credentials übergeben werden.
Beispielsweise könnte das <pages>-Element so aussehen:
In der Config selbst sind bei den <address>-Elementen die MQTT spezifischen Transforms zu benutzen: https://www.cometvisu.org/CometVisu/de/ ... .html#mqtt
Bei Werten in JSON-Strukturen gibt es hier nun ein neues Feature bei den Transforms: diese können für solche speziellen Fälle erweitert werden. So fügt beispielsweise dieser Code
ein Switch hinzu, dass unter mqtt/switch_js ein JSON der Form {"c":{"d":"1"}} beschreibt, bzw. liest.
Das bedeutet, dass ein JSON in verschiedenen Widget durchaus mit seinen verschiedenen einzelnen Teilen verwendet werden kann.
Aber, was aktuell nicht geht, ist so ein JSON mit mehreren Werten gleichzeitig zu erzeugen.
Um die MQTT-Schnittstelle auszuprobieren braucht es nur ein paar einfache Schritte:
Als erstes wird ein MQTT Broker, wie Mosquitto, benötigt. Dieser Broker muss MQTT über Websockets bereit stellen. Ob der Broker auf dem TWS in einem Docker-Container läuft, oder wo anders im Netz läuft, ist egal.
Wichtig ist aber, dass wenn die CometVisu über HTTPS läuft (also über den Proxy), so muss die WebSocket-Schnittstelle des Brokers auch über Secure WebSockets (also "wss:" statt "ws:") erreichbar sein. Mit der neuesten TWS Software (3.0 Release Candidate 1.1) kann hier der TWS-Proxy auch für WebSocket verwendet werden.
In der CometVisu muss nun nur in der Config-Datei im <pages>-Element mit dem Attribut backend="mqtt" der MQTT-Modus ausgewählt werden. Über das Attribut backend-url wird die URI der Websocket-Schnittstelle angegeben. Mit den optionalen Attributen username und password können, so notwendig, auch noch die Credentials übergeben werden.
Beispielsweise könnte das <pages>-Element so aussehen:
Code: Alles auswählen
<pages backend="mqtt" backend-url="wss://timberwolf123.local:443/proxy/mqtt/ws" username="testUser" password="testPasswort" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" lib_version="9" design="pure" xsi:noNamespaceSchemaLocation="../visu_config.xsd">
Bei Werten in JSON-Strukturen gibt es hier nun ein neues Feature bei den Transforms: diese können für solche speziellen Fälle erweitert werden. So fügt beispielsweise dieser Code
Code: Alles auswählen
<switch>
<label>switch JSON</label>
<address transform="MQTT:json:c.d" retain="true">mqtt/switch_js</address>
</switch>
Das bedeutet, dass ein JSON in verschiedenen Widget durchaus mit seinen verschiedenen einzelnen Teilen verwendet werden kann.
Aber, was aktuell nicht geht, ist so ein JSON mit mehreren Werten gleichzeitig zu erzeugen.