![]() |
Alternative zum poweropti von powerfox
![]() |
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.
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überfliegen 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 zusammenzubasteln, sondern kann sich
auf der
GitHub-Seite "Smart-Meter-Interface"
ein fertiges Script holen.
Auf der Seite sucht man am rechten
Bildschirmrand nach seinem Zähler bzw. seiner 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
Vorstellung, 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.
Eigentlich ist alles ganz einfach, wenn man weiß wie :-/ Als erstes benötigt
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 erscheinenden
Fenster trägt man bei Host die Adresse des Brokers ein, in
meinem Fall die lokale IP-Adresse meines Raspberry Zero. Der
Standardport für einen MQTT-Broker ist "1883". Bei Client kann
man irgendeinen sprechenden Namen eintragen. Danach den Benutzernamen (User) und
das Passwort (Password) für den Broker (falls gesetzt).
Im Feld Topic tragen wir nun den Haupt-Topic ein, unter dem der
Lesekopf die Daten publishen soll. Dieser wird dann automatisch in die Variable
%topic% geschrieben. Ich verwende hier den gleichen Namen wie beim
Client, das schafft mir Übersicht. Im Feld "Full
Topic" muss jetzt noch ein Root-Topic (Wurzel-Topic) angegeben werden, in meinem Fall "iot", gefolgt vom Topic,
der hier als Variable %topic% angegeben wird. Das Ganze getrennt und abgeschlossen mit einem Schrägstrich (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"
über den dann die Daten rauspurzeln...
dachte ich zumindest, aber da kommt noch was :-/
![]() |
![]() |
![]() |
Der finale Full-Topic lautet am Ende nämlich "iot/StromZaehler/SENSOR". Das mag für routinierte Tasmotaner alles logisch erscheinen, mich
hat das als Tasmota-Neuling vor eine Hürde gestellt. 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 wirklich es klappt nicht, aber es lag letztendlich doch nur an
meiner Ungeduld. Denn die Daten werden in der Grundeinstellung nur alle 5
Minuten gesendet, also wartet man um ungünstigsten Fall auch diese 5 Minuten
bevor man die ersten Daten sieht, dazu gleich mehr.
Der eingegebene Topic
wird auch zum WLAN-Gerätename. Im Router wird also das Gerät in meinem Fall ab
jetzt als "StromZaehler" geführt.
Sendeintervall anpassen
Die 5
Minuten sind für mein Vorhaben jedoch definitiv zu lange. Zum Glück kann der
Intervall zwischen 10–3600 Sekunden frei gewählt werden. Um den Intervall 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 eine 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 mitunter 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 dieser dies an alle
aktuell verbundenen Clients, die den entsprechenden Topic abonniert haben,
weiter, danach verschwindet 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 dastehen.
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,
die nur alle paar Minuten einen Wert senden, 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 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 kommt 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öchte, dann ist es wesentlich eleganter, 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 betrieben werden. Wie man eine MySQL-Datenbank (MariaDB)
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 folgt 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-Datenbank 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 sie in
Grafana mit Kurven, Balkendiagrammen 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
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 Tasmota-Oberflä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 der URL vom
Raspberry mit angehängtem ":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:
![]() |
Als nächstes zieht man sich die folgenden Steuerelemente von der linken 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 demselben 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 in meinem Fall drei Werte: power_curr,
total_in und total_out, dazu gleich mehr beim Debugging. 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 in 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 9er raus, die 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 fallengelassen. 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-Namen 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 Blatt und verbindet sie mit 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 nicht 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 von "mqtt in". Um nun zu sehen, was da so rauspurzelt, klickt man am rechten oberen Bildschirmrand auf das Debug-Symbol.
![]() |
Wie man am Ausgang von "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.payload.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 eine 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 weiterzuverwerten.
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:
Nachdem die ersten Daten in die InfluxDB geschrieben wurden, kann man sie 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 etwas 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 nach einer Alternative
umschauen. 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 weiterverwenden.
InfluxDB werde ich aller Wahrscheinlichkeit nach 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.
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 Node-RED 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-Clientnamen. 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.
Über den Button „Vorschau“ kann das Script getestet werden. In der Vorschau
muss der Topic über das Eingabefeld angegeben werden. Das 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.
Hier mal eine kleine
Übersicht von Öffentlichen MQTT-Broker.
verschlüsselt (für https://):
wss://broker.hivemq.com:8884/mqtt
wss://mqtt.eclipseprojects.io:443/mqtt
wss://broker.emqx.io:8084/mqtt
wss://test.mosquitto.org:8081/mqtt
wss://iot.coreflux.cloud:443/mqtt
unverschlüsselt (für http://):
ws://broker.hivemq.com:8000/mqtt
ws://mqtt.eclipseprojects.io:8083/mqtt
ws://broker.emqx.io:8083/mqtt
ws://test.mosquitto.org:8083/mqtt
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.
![]()