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.
Wichtig ist, 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.
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.
Wichtig ist, 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.
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:
HTML-Code:
<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
HTML-Code:
<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.
Kommentar