Tech-Ecke / Basteleien / IR-Lesekopf mit Tasmota Firmware

  IR-Lesekopf mit Tasmota Firmware (Hichi Wifi)

Alternative zum poweropti von powerfox

Diese Seite beinhaltet

Da ich beim Einrichten meines Hichi Wifi IR-Lesekopfes den ein oder anderen Klemmer hatte, entsteht mal wieder eine neue Seite auf der Tech-ecke. Inwiefern die Einzelnen Schritte zu anderen IR-Leseköpfen mit Tasmota Firmware passen kann ich leider nicht sagen, da ich aktuell nur diesen einen habe.

Inbetriebnahme


WLAN-Konfiguration

Der erste Schritt, das einbinden ins heimische WLAN-Netzwerk ist relativ unspektakulär. Das Prozedere kennt man von vielen anderen IoT-Geräten, weshalb ich hier mal nur schnell drüber fliegen werde.


Script für Zähler einfügen

Im nächsten Schritt muss dem Lesekopf ein Script aufgespielt werden, damit er mit dem Stromzähler kommunizieren kann. Das Script ist Zählerabhängig und muss passend zum Zählertyp und Hersteller erstellt werden. Man braucht sich das Script in aller Regel jedoch nicht selbst zusammenbasteln, sondern kann sich auf der GitHub-Seite "Smart-Meter-Interface" ein fertiges Script angeln.
Auf der Seite sucht man am rechten Bildschirmrand nach seinem Zähler bzw. Zählerserie und wählt ihn aus. Er wird dann in der Mitte angezeigt und durch einen Klick auf den "Pfeil" am Ende der "View script"-Box erscheint auch schon der begehrte Code. Diesen kopiert man sich hier in die Zwischenablage.

Zurück auf der Tasmota-Seite wählt man [Consoles] und dann [Edit Script]. Die Tasmota-Seite öffnet man übrigens im Browser durch Eingabe der IP-Adresse, welche der Lesekopf vom Router zugewiesen bekommen hat - darum hat man sich diese auch wie beschrieben notiert :-)

Im Edit-Fenster fügt man nun das kopierten Script ein, setzt den Haken bei "Script enable" und klickt abschließend auf [Save].

Im Main "Menu" sollten nun auch die Werte vom Zähler reinpurzeln.

So, bis hierher war eigentlich alles problemlos. Aber ich habe natürlich mehr vor als mir nur die drei Daten ab und zu mal anzuschauen. Da ich bislang einen poweropti von powerfox in Betrieb hatte, habe ich auch schon eine ungefähre Vorstellungen was ich mit den gesammelten Daten gerne anstellen würde, dazu später mehr. Als erstes möchte ich die aktuelle Last anderen Geräten, wie z.B. meinem Smart Lüfter zur Verfügung stellen. Dieser lief bis dato mit der API von powerfox, aber so recht hat mir das noch nie gefallen. Zum einen ist deren Server sehr unzuverlässig und zum anderen finde ich es irgendwie schräg die Daten erst ins Internet zu blasen, um sie von dort dann wieder einzufangen. Mit dem Tasmota nutze ich jetzt die Kommunikation via MQTT-Protokoll, welches auch von vielen Smart-Home-Systemen genutzt wird. Und genau dabei kam ich ins Stolpern.


MQTT einrichten

Eigentlich ist alles ganz einfach, wenn man weiß wie :-/ Als erstes benötigen man einen MQTT-Broker, dieser läuft bei mir aktuell auf einem "Raspberry Zero W2". Wie man den MQTT-Broker Mosquitto auf einem Raspberry einrichtet steht hier.
Zum Einrichten am Tasmota klickt man im "Main Menu" auf [Configuration] und dann auf [Configure MQTT]. Im daraufhin erscheinendem Fenster trägt man bei Host die Adresse des Brokers ein, im meinen Fall die lokale IP-Adresse meines Raspberry Zero. Der Standardport für einen MQTT-Broker ist "1883". Bei Client kann man irgend einen sprechenden Namen eintragen. Danach den Benutzername (User) und Passwort (Password) für den Broker (falls gesetzt). Im Feld Topic tragen wir nun den Topic ein, unter dem der Lesekopf die Daten "Puplishen" soll. Ich verwende hier den gleichen Namen wie bei Client. Und jetzt kommen wir zu meinem ersten Stolperer! Im Feld "Full Topic" wird jetzt noch ein Prefix angegeben (in meinem Fall "iot"), gefolgt vom Topic, welcher hier aber mit der Variable %topic% eingetragen wird, das Ganze getrennt und abgeschlossen mit einem Schrägstich (Forward Slash). Also im Feld "Topic" steht bei mir nun "StromZaehler", im Feld "Full Topic" steht "iot/%topic%/", daraus ergibt sich der komplette Topic von "iot/StromZähler"... dachte ich zumindest, aber das Stolpern geht weiter :-/

 

Ich fasse mich an der Stelle jetzt mal kurz. Dem Topic "iot/StromZähler" ist am Ende noch ein "SENSOR" anzuhängen, wodurch der schlussendliche Topic "iot/StromZaehler/SENSOR" lautet. Das mag für routinierte Tasmotaner alles logisch erscheinen, für mich als Neuling war es eine echte Hürde. Wie auch immer, mit dem kleinen Tool TE MQTT Client kann man jetzt die Daten vom IR-Lesekopf anfliegen sehen... oder doch nicht :-/ Nun ja, im ersten Moment dachte ich das wirklich, aber es lag letztendlich doch nur an meiner Ungeduld.

Sendeintervall anpassen
Denn der Tasmota sendet ab Werk nur alle 300 Sekunden eine Nachricht. Die 5 Minuten sind für mein Vorhaben jedoch entschieden zu lange. Zum Glück kann der Intervall zwischen 10-3600 Sekunden frei gewählt werden. Um den Interval auf 10 Sekunden zu setzen gibt man folgenden Befehl in der Konsole ein:

 Alternativ kann man die Einstellung auch im Browser seiner Wahl erledigen. Dazu gibt man in der Adresszeile folgendes ein:

Anstelle von "<IP-Tasmota>" setzt man die IP-Adresse des Lesekopfes ein. Der so abgesetzte Befehl wird den Sendeintervall auf 10 Sekunden reduzieren. Die "%20" vor der "10" ist der Sonderzeichencode für ein Leerzeichen, der Befehl lautet also "TelePeriod 10". Der Browser quittiert einem die vorgenommene Änderung wie folgt:

Der Lesekopf sendet nun alle 10 Sekunden einen Nachricht in form eines Strings, der in etwa wie folgt aussehen kann:

{"Time":"2024-05-06T18:10:59","SML":{"total_in":6852.65,"total_out":14917.27,"power_curr":-3650}}

Die Nachricht wird jedoch von Zähler zu Zähler etwas anders ausfallen. Mein Zähler liefert nur die drei Werte "Verbrauch gesamt", "Einspeisung gesamt" und "aktuelle Last", andere Zähler liefern mit unter einiges mehr an Daten, entsprechend länger wird der String dann ausfallen. Ein negativer Wert (-) bedeutet dass gerade Eingespeist wird, ein positiver Wert (ohne Vorzeichen) zeigt einen Bezug an.


"Retain Message" einschalten - Was ist "Retain Message" und warum sollte ich es einschalten?
Wird eine Message (Sensorwerte) an den Broker gesendet, so gibt es dies an alle aktuell verbindenen Clients, die den entsprechenden Topic abonniert haben weiter, danach verwindet die Message im Datennirwana. Meldet sich ein Client neu beim Broker an, so wird er zunächst keine Werte bekommen, bis der Publisher abermals gesendet hat. Je nach Konfiguration kann das beliebig lange dauern und so lange bleibt der Client mit leeren Händen da stehen. Wenn 'Retain Message" jedoch eingeschaltet ist, dann bekommt der Client direkt beim anmelden, den zuletzt gepublishten Wert und muss nicht warten. "Retain Message" macht nicht immer Sinn, aber im Falle von Sensoren, insbesondere Temperatursensoren wo nur alle paar Minuten einen Wert lostreten kann es durchaus Sinn machen diese Option zu aktivieren.

Dazu klickt man im Hauptmenü auf (1) "Consoles", dann auf (2) Console und gibt im Textfeld (3) "SwitchRetain ON" ein und bestätigt mit der Eingabetaste. Die Änderung sollte in der Ausgabe (4) angezeigt werden.


Beispielanwendung
So, und was macht man nun mit den Werten? Ein plakatives Beispiel ist mein Smart Lüfter, dieser kann wahlweise über die API von powerfox oder eben per MQTT Daten beziehen und verarbeiten. Das schöne am MQTT ist, dass ich den XP-Rechner wieder vom Internet nehmen konnte, da sich mein Broker im heimischen Netz befindet.
Aber man kann auch mittels ESP8266 ganz auf einen Rechner verzichten und somit viele Geräte relativ einfach "smart" machen. Wie das funktioniert kann man hier erfahren.



 Daten sammeln und verarbeiten


  Daten in Textdatei schreiben

Eine recht einfache Methode die Daten zu sammeln ist, diese an einen Webserver zu senden, der sie mittels PHP-Script in eine Textdatei schreibt. Dazu benötigt man einen Webserver der PHP unterstützt. Das ist ebenfalls mal wieder ein Fall für den Raspberry, man komm an so einem Ding quasi gar nicht mehr vorbei und für weniger als 20 EUR hat man damit jede Menge Spaß. Wie man den Webserver und PHP auf einem Raspberry installiert und konfiguriert kann man hier nachlesen. Jedoch sollte man bei der Anwendung Abstand von einer SD-Karteninstallation nehmen und stattdessen eine SSD als Datenspeicher verwenden. SD-Karten sind nicht für einen ständigen Schreibzugriff ausgelegt und können dadurch früher als erwartet ausfallen. Zum Experimentieren eignet sich aber auch XAMPP, welcher ohne Installation und im Handumdrehen auf jedem Windows-Rechner (ab XP) einen Webserver mit PHP-Unterstützung laufen lässt. Wie das geht ist hier zu sehen.

Als erstes muss man das Script vom Stromzähler etwas manipulieren, so dass es die Daten in einem vorgegebenen Intervall über eine PHP-Datei an den Webserver sendet. Dazu öffnet man den Script-Editor in der Tasmota-Oberfläche über [Consoles] und dann [Edit Script]. Grau ist der originale Code von der "Smart-Meter-Interface" Seite für meinen Stromzähler, der grüne Code ist nun zusätzlich hinzugekommen.

Das PHP-Script "logger.php" auf dem Server sieht wie folgt aus:

Auch hier müssen die Messwerte gegebenenfalls analog dem Stromzähler-Script angepasst werden ($_GET['a'], $_GET['b'], etc.). Die Daten werden nun zeilenweise in die Textdatei "stromlog.txt" gespeichert. Die Datei wird im gleichen Verzeichnis wie die "logger.php" geschrieben und endlos befüllt. Möchte man beispielsweise eine monatliche Textdateien anlegen, so nimmt man  $Jahr + $Monat mit in den Dateinamen auf.


  Daten in MySQL-Datenbank schreiben

Wenn man die Daten nicht gerade in Excel, sondern webbasiert abrufen, filtern und grafisch darstellen möchten, dann ist es wesentlich eleganterer die Daten in eine MySQL-Datenbank zu schaufeln. Dazu benötigen wir jedoch erst einmal eine entsprechende Datenbank und ja, das ist wieder ein Anwendungsfall für den Raspberry. Auch hier gilt, wie schon bei der Textdatei, die Himbeere sollte hierzu mit einer SSD-Karte betrieben werden. Wie man eine MySQL-Datenbank (Maria DB) auf dem Raspberry installiert ist hier nachzulesen. Und auch bei dieser Übung kann zu Testzwecken der XAMPP zum Einsatz kommen. Wie die Datenbank selbst aufgesetzt und konfiguriert wird ist auf der XAMPP-Seite zu finden.
Als erstes benötigen wir eine neue Datenbank mit dem Namen "StromLogger", darin wird eine Tabelle mit dem Namen "Verbrauch" benötigt die wie folg aufgebaut sein muss:

Um die Tabelle schnell anlegen zu können kann man den folgenden Code in die SQL-Anweisung auf der phpMyAdmin-Seite einfügen und ausführen. Siehe dazu den Tipp auf der XAMPP-Seite unter "Exportieren und Importieren von Daten".

In der Datenbank muss jetzt noch ein neuer Benutzer mit dem Namen und Passwort "Tasmota" angelegt werden. Wie das erledigt wird ist ebenfalls auf der XAMPP-Seite unter "Neue Benutzer anlegen" nachzulesen. Die Zugangsdaten kann und sollte man natürlich später entsprechend anpassen (Datenbank + PHP-Datei). Nun fehlt nur noch die modifizierte PHP-Datei:

Das Stromzähler-Script ist das gleiche wie beim Schreiben in eine Textdatei.



  Daten in InfluxDB schreiben

Wenn es um das Sammeln von Messdaten geht, so stolpert man eigentlich zwangläufig über InfluxDB. Es dreht sich hier um eine sogenannte Time-Series-Datenbank, welche für das Sammeln von hochfrequenten Zeitreihendaten optimiert wurde. Das Datenaufkommen vom Stromzähler ist sehr überschaubar, weshalb es in Bezug auf Performance eigentlich keinen triftigen Grund gibt nicht doch eine MySQL bzw. MariaDB zu verwenden. Aber die pure Neugierde hat mich dazu bewegt mir mal anzuschauen was der Mainstream so treibt...
Im Grunde könnte man die Daten, wie bei MySQL ebenfalls per PHP-Script in die Datenbank pumpen. Hierzu gibt es auch fertige InfluxDB Libraries, wie z.B. diese hier, aber die gängige Praxis ist eine Andere. Zunächst werden alle Sensordaten zu einem MQTT-Broker, z.B. Mosquitto  geschickt, dort werden sie von einem Übermittler, wie beispielsweise Node-RED abgeholt und in die InfluxDB  geschrieben. Von da können die Daten dann genutzt werden um die in Grafana, mit Kurven, Balkendiagramen und Gauges visuell darstellen zu können.

Ja, das klingt aufwendig und das ist es datenflusstechnisch auch, aber eben nicht in der Anwendung. Mit dieser Softwarekombination lässt sich so einiges im Bereich Smart-Home-Bereich relativ leicht automatisieren und visuell darstellen.

  Installation

Wie die einzelnen Softwarepakete auf dem Raspberry PI installiert werden, ist den folgenden Links zu entnehmen:

Mosquitto, Node-RED, InfluxDB, Grafana


  MQTT - Mosquitto

Sind die Installationen abgeschlossen, so kann mit dem Einrichten begonnen werden. Als erstes sorgt man dafür, dass die Messdaten vom Stromzähler dem MQTT-Broker (Mosquitto) übergeben werden. Wie man das über die Tasmotaoberfläche einrichtet findet man weiter oben auf dieser Seite unter "MQTT einrichten".


  Node-Red

Im Anschluss startet man die GUI von Node-RED im Browser (Google Chrome, FireFox...) durch Eingeben URL vom Raspberry, mit angehangenem ":1880" (Port). In meinem Fall ist das  "192.168.178.139:1880". Anmeldung bei Node-RED
Node-RED kann von Haus aus nicht mit der InfluxDB kommunizieren, hier muss zunächst die entsprechende Library installiert werden und das geht wie folgt:

  1. oben rechts auf die drei Balken
  2. im Menü "Palette verwalten" auswählen
  3. im darauf folgendem Fenster auf Tab "Installation" wechseln
  4. im Suchfeld "Influx" eingeben und mit Eingabetaste bestätigen
  5. bei "node-red-contrib-influxdb" auf [Installieren] klicken

Als nächstes zieht man sich die folgend aufgeführten Steuerelemente, von der linkten Liste auf das Blatt und verbindet diese an den Knotenpunkten.  Wer nicht suchen mag kann oben links die Suche nutzen.
"mqtt in", "function", "delay" (Verzögerung) und "Influxdb".

Durch einen Doppelklick auf die Steuerelemente können deren Einstellungen und Eigenschaften gesetzt und geändert werden.

Bei mqtt in muss der Server und ein Topic angegeben werden. Steht noch kein Server im Drop-Down zur Verfügung, so kann man diesen über den Button [+] hinzufügen. Hier muss dann nur die IP-Adresse des Servers angegeben werden, der Rest bleibt wie vordefiniert. Da Mosquitto und Node-RED auf dem selben Raspberry werkeln, kann anstatt der IP-Adresse auch einfach "localhost" eingetragen werden. Bei Topic kommt der im Tasmota vergebene Topic-Pfad rein, in meinem Fall also "iot/StromZaehler/SENSOR". Zum Abschluss stellt man noch QoS auf "0" und dann war es das auch schon.

Bei function wird folgender JavaScript Code hinterlegt:

Die Message vom Topic enthält im meinen Fall drei Werte: power_curr, total_in und total_out, dazu gleich mehr beim Debuging. Hier greife ich also den Wert von power_curr (aktueller Bezug, bzw. Einspeisung) ab und schreibe ihn in die Variable "f". Diese Wiederum schreibe ich die Message (msg), welche dann die Function wieder verlassen soll. Das Weiterreichen geschieht mittels "return msg". Das soll aber nur dann stattfinden wenn "f" nicht den Wert "999999" hat. Ich weiß nicht ob dies ein generelles Problem ist, aber von Zeit zu Zeit scheint die Abfrage am Zähler nicht sauber zu funktionieren und der Tasmota schmeißt dann die sechs 9'er raus, welche ich natürlich nicht in der Datenbank haben möchte.

Bei Verzögerung kann man die Anzahl der weiterzureichenden Messages einschränken. Stellt man hier z.B. 1 Minute ein und vom Tasmota kommt alle 10 Sekunden eine Message, so werden 5 von 6 Messages fallen gelassen. Es wird also nur ein Wert pro Minute durchgelassen. Überträgt man anstatt power_curr beispielsweise den Zählerstand total_in, so reichen wohl auch 10 Minuten völlig aus.

Bei Influxdb muss der Datenbankserver und der Datenbankname angegeben werden. Das wäre wieder die IP-Adresse bzw. "localhost" und ein sinniger Name (ohne Umlaute, Sonderzeichen...). Diesen Namen müssen wir uns merken, denn beim Einrichten der InfluxDB muss die Datenbank mit identischem Namen angelegt werden. Ansonsten muss hier auch noch bei Measurement der Feldname des Datensatzes angegeben werden, unter dem die Werte in der Datenbank dann zu finden sind. Um eine gute Übersicht zu bewahren könnte dieser z.B. gleich dem Topic-Name sein. Auch hier wieder keine Umlaute oder Sonderzeichen verwenden.

Hat man alle Einstellungen vorgenommen, so kann man das Ganze über die Schaltfläche [Übernehmen (Deploy)] scharfschalten.

Debuging
Nun sollte eigentlich alles so laufen wie vorgesehen und wenn nicht, dann muss debugt werden. Dazu bietet Node-RED die Debug-Steuerelemente, welche auch in der Linken liste zu finden sind. Diese zieht man ebenfalls auf das und Verbindet sie mir dem Ausgang den man abfragen möchte.

Die Debugs lassen sich über das Rechteck am rechten Rand übrigens ein und ausschalten, so muss man diese sich trennen oder gar löschen um gezielt auf eine Stelle zu schauen. Im Bild sind Debug 2 und 3 ausgeschaltet und Debug 1 lauscht am Ausgang vom "mqtt in". Um nun zu sehen was da so rauspurzelt, klickt man am rechten oberen Bildschirmrand auf das Debug-Symbol. 

 Wie man am Ausgang vom "mqtt in" sieht (dazu alle grauen Dreiecke aufklappen), werden drei Messwerte in einer Message ausgegeben. Hier erkennt man nun auch den, in der Function verwendeten Pfad zu power_curr, welcher hier gelb hinterlegt ist "msg.playload.SML.power_curr". Befindet man sich mit dem Mauscursor über diesem Wert, so kann man den Pfad zum Wert über das erste der drei kleinen Icons in die Zwischenablage kopieren.
Schaltet man Debug 2 ein, so wird man als Ausgabe nur noch den Wert in power_curr sehen. Diesen könnte man auch in der Function analysieren und z.B. bei einer aktuell hohen Einspeisung der Solaranlage einen entsprechende Message mit "mqtt out" rausschreiben, die z.B. die Wallbox fürs E-Auto aktiviert. Da geht so einiges. Mittels "http request" lassen sich auch Webinhalte einlesen und HTML-Code parsen um Werte abzugrasen und weiter zu verwerten.


  InfluxDB

Wie bereits weiter oben erwähnt muss in InfluxDB eine Datenbank manuell angelegt werden, bevor diese von Node-RED befüllt werden kann. Die einzelnen Datenfelder werden jedoch automatisch angelegt, sobald die dazugehörigen Werte in die Datenbank geschrieben werden. Dazu in der Konsole (PuTTy) zunächst die Datenbank per "influx" starten und dann mittels "create database DeinDBName" eine Datenbank anlegen. Das alles und noch Weiteres ist bei der Installationsbeschreibung von InfluxDB zu finden.


  Grafana

Nachdem die ersten Daten in die InfluxDB geschrieben wurden, kann man dies sich in Grafana visualisiert anzeigen lassen. Welche Schritte dazu notwendig sind, ist bei der Installation zu Grafana unter Erste Schritte aufgeführt. Ich habe hier mal einen "Graph" und "Singlestat" aufs Dashboard gezogen und ein wenig was eingestellt. Das Ganze sieht dann so aus:

Mein persönliches Fazit zu Noder-RED -> InfluxDB -> Grafana
Die Kombination der Tools ist eigentlich auf den ersten Blick ganz nett, jedoch kommt bei Grafana auf dem Handy schnell Frust auf. Es ist auf dem Handy einfach nicht zu gebrauchen und das wäre eigentlich meine bevorzugte Plattform, um mal eben nach den wichtigsten Werten zu schauen. Hier werde ich mir definitiv eine Alternative Ausschau halten. Zum analysieren der Daten am PC (mit großem Monitor) ist es jedoch ganz gut zu gebrauchen.
Node-RED hat mich, trotz anfänglicher Skepsis dann doch überzeugt, das Tool werde ich definitiv weiter verwenden.
InfluxDB werde ich aller Wahrscheinlichkeit wieder von meinem Raspberry löschen und mit der mir vertrauten MariaDB weiterarbeiten. Am Ende werde ich wohl einmal pro Tag meinen Zählerstand, und den Photovoltaikertrag inkl. Eigenverbrauchsquote in die Datenbank schreiben und den Rest nur "flüchtig" über MQTT bereitstellen. Da sehe ich keine Notwendigkeit auf InfluxDB zu setzen. Das Ganze hat dann auch den Charme, dass ich anstatt eines Pi4 + SSD den kleineren Zero 2W mit SD-Karte verwenden kann. Denn ohne permanenten Schreibzugriff durch die Datenbank wird die SD-Karte auch lange halten. Ansonsten ist man mit einer SSD wohl besser beraten.

 

Alternative zu Grafana

 


  MQTT zugriff im Browser via WebSocket

Bei der Suche nach einer Grafana-Alternative bin ich über WebSocket gestolpert. Damit lassen sich MQTT Messages über den Browser via JavaScript empfangen und auch senden. Zumindest für das Heimische Netzwerk ist das eine tolle Möglichkeit, verschiedene Sensorwerte gesammelt auf einer Webseite anzeigen zu lassen. Da man auch Messages publishen kann, könnte man sogar Steckdosen und Geräte damit steuern. Es gibt auch kostenlose und anmeldungsfreie MQTT-Broker mit WebSocket im Netz (z.B. HiveMQ ws://broker.hivemq.com:8000/mqtt"). Klar, jeder kann da mitlauschen und auch Störmessages senden. Also ich würde dringend davon abraten, über diesen Broker Geräte zu schalten! Aber um den Wert eines Temperatursensors dort abzulegen hätte ich jetzt keinen Schmerz. OK, gelingt es einem den Topic meiner Person zuzuordnen und er weiß, dass da die Temperaturwerte meines Wohnzimmers stehen + Winter + mehrere Tage keine Heizung an = Urlaubsreise... Jo, das könnte man auch einfacher und zielgerichteter rausfinden. Aber es gibt noch etwas weitaus bedenklicheres, als die öffentlich einsehbaren Daten. Und zwar wenn man die MQTT-Daten direkt von Tasmota aus und nicht via NodeRed sendet. Denn Tasmota kann auch Befehle per MQTT erhalten und lässt sich so quasi fernsteuern. Dazu benötigt man neben dem Topic zwar auch noch den MQTT-Clientname. Aber Achtung: Dieser wird beim Anmelden von Tasmota mit an den Broker gesendet! Abhilfe schafft hier nur eine Firmware-Mod, welche diese Info nicht sendet. Wie auch immer, das Ganze ist dennoch nicht uneingeschränkt zu empfehlen, jeder sollte wissen was er tut. Alternativ kann man sich auch einen kostenlosen Account bei HiveMQ anlegen (bis zu 100 Clients kostenlos) und die Daten dann über eine Verschlüsselte Verbindung senden.

Nun gut, bleiben wir zunächst mal im lokalen Netzwerk. Bevor man Websocket im heimischen Netz via Raspberry Mosquitto nutzen kann, muss zunächst die "mosquitto.conf" etwas angepasst werden (wenn nicht schon geschehen). Was genau steht hier.

Hier mal ein sehr einfacher Aufbau, um sich bei einem Broker anzumelden und einen Topic zu abonnieren.

Es muss lediglich <DeinTopic> und <BrokerURL> in der Zeile 6 und 7 entsprechend ersetzt werden. Das extern verlinkte Script "mqtt.min.js" (v5.10.1) kann auch heruntergeladen und ins Homepageverzeichnis kopiert werden, um unabhängig vom Internet zu sein.

 Über den Button Vorschau kann das Script getestet werden. In der Vorschau muss der Topic über das Eingabefeld angegeben werden. Publishen zu dem Topic ist ebenfalls über den Button [Publish] möglich.
Tipp: Möchte man z.B. mit Node-RED oder  TE MQTT Client auf den HiveMQ zugreifen, so ist bei Server "broker.hivemq.com" und bei Port "1883" anzugeben.


HTML Gauges

Wer sich nun inspiriert fühlt ein Dashboard für aktuelle Sensorwerte in HTML zu basteln, der sollte sich mal gauges.js von Bernii anschauen -  GitHub Download.

HTML Graph

Um einen Graph zu erzeugen werde ich mir bei Gelegenheit mal die JpGraph PHP-Bibliothek anschauen, welche auf MySQL-Daten zurückgreift.


Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !
[erstellt: 28.04.2021 - letzte Aktualisierung 27.01.2024]