PRTG und Tasmota
Auf dieser Seite zeige ich, wie Sie sehr einfach die Vielzahl an "Tasmota"-kompatiblen IoT-Devices sehr einfach mit PRTG koppeln können. Das kann zuhause die 100 Sensor "Free-Version" von PRTG sein. Sie können aber damit auch einfach Serverräume, Türschlösser, Energiebedarf u.a. überwachen.
Schnittstellen
PRTG unterstütze mehrere Möglichkeiten, Statusmeldungen und numerische Werte in das System zu bringen. Auf der Seite PRTG Plattform habe ich die Zusammenhänge zwischen Server, Probe und Agent geschrienen und PRTG kann über seine Probe selbst Werte von einem erreichbaren System über unterschiedlichste Wege (RPC, WMI SNMP HTTP etc.) abfragen aber auch Werte zugesendet bekommen.
Tasmota ist eine der vielen ESP8266/ESP32 3rd Party Firmware-Optionen, um Geräte mit Chips der ESP8266 oder ESP32-Reihe mit einer "offenen" Firmware zu versehen, die unterschiedlichste Sensoren auslesen und an weitere Systeme melden kann. Primär kommt hier MQTT oder mittlerweile auch eine REST-API zum Einsatz. Wenn Sie eine Kopplung zwischen PRTG und einer Tasmota-Instanz herstellen wollen, dann gib es folgende Optionen:
-
MQTT
Tasmota kann seine Daten problemlos per MQTT an einen MQTT-Server senden.PRTG ist zwar selbst kein MQTT-Broker, so dass Sie selbst einen Browser zusätzlich betreiben müssen. PRTG kann dann aber problemlos Werte vom MQTT-Broker einlesen. Siehe PRTG und MQTT. - PRTG-Polling
Tasmota ist selbst ein Webeserver und hat auch eine HTTP/REST-API, die sie von PRTG auch regelmäßig abfragen können. Allerdings muss dann das IoT-Device permanent "eingebucht" und zumindest von der PRTG-Probe erreichbar sein. Für Batteriebetrieb eignet sich diese Option natürlich nicht. Es skaliert auch nicht so gut, weil PRTG dann immer wieder pollen muss und die IoT-Devices per IP auch erreichbar sein müssen. Ich schotte aber meine IoT-Devices z.B. durch ein eigenes WLAN mit eigenen Subnetz ab und einige Installationen nutzen noch NAT, so dass PRT das Device gar nicht erreichen kann. - Tasmota Rules und WebSend
PRTG kann aber auch von einem Gerät per HTTP angesprochen werden. Mit den PRTG - HTTP Push-Sensoren kann PRTG einen Sensor betreiben, an den mein IoT-Device bei Bedarf Daten per HTTP senden kann. In Tasmota gibt es die Möglichkeit, über hinterlegte Regeln bei gewissen Eingangszuständen eine Aktion auszulösen und per "WebSend" kann ich so einen Wert direkt zum PRTG-Server senden lassen - Eigenbau
Ich habe Anfangs überlegt, die Daten mit einer eigenen Firmware einzusammeln und dann eine PRTG-kompatible JSON-Struktur per HTTP an meinen PRTG-Server zu senden. Das wäre zumindest eine Option für bestehende Projekte, die die Daten heute schon anderweitig senden. Aber nicht jeder möchte so tief an der Hardware programmieren.
Tasmota unterstützt leider keine SNMP-Anfragen oder Traps und KNX (https://tasmota.GitHub.io/docs/KNX/) über UDP/TCP-Multicasts an Port 3671 versteht aktuell leider PRTG noch nicht. Aber gerade die "WebSend"-Funktion kann in Verbindung mit den Tasmota-Regeln sehr leistungsfähig sein.
Tasmota mit HTTPPush
Ich habe zuerst einmal den ESP8266/ESP32 mit Tasmota versorgt und ganz klassisch nach Anleitung konfiguriert.
Tätigkeiten | erledigt |
---|---|
ESP8266 besorgenDie gibt es sogar schon in Deutschland für 3-8 € pro Stück und ESP8266 aus China sogar schon unter 2€. Oder sie kaufen eines der fertigen Systeme, die sie mit Tasmota versorgen können.
|
![]() |
Sensoren anschließenWenn ich Werte an PRTG melden will, dann muss ich natürlich auch Wert erheben. Der eingebaute Temperatursensor im ESP32 wäre nur ein Beispiel und die WLAN-Empfangsstärke zu messen ist auch nicht repräsentativ. Also sie Sie sich einen Sensor aus.
Ich habe zum Test einfach einen SR04-Ultraschallsensor angeschlossen, mit dem ich die Belegung im Carport messe.
|
![]() |
Tasmota installierenEinige Boards haben sogar schon Tasmota installiert oder können Sie mit Tuyaconvert ohne elektrische Kenntnisse umprogrammiert werden. Einige müssen Sie seriell über den PC flashen. Schließen Sie das Board an den PC an und am einfachsten Nutzen Sie den WebInstaller mit Chrome oder Edge.
Für die meisten Sensoren können Sie direkt "Tasmota Sensors" nutzen.. Ich finde es schon interessant, dass ein Browser mittlerweile mit COM-Ports umgehen und Firmware flashen kann. |
![]() |
Tasmota konfigurierenNach dem Flashen startet Tasmota einen kleinen Webserver, über den die eine Einrichtung vornehmen können. Ich nutze dazu lieber die im WebInstaller enthaltene Console um schnell folgende Befehle abzusetzen: Sie setzen die WLAN-Konfiguration und optional einen MQTT-Host und einen SyslogHost. Passen Sie die Werte ihrer Umgebung an. Backlog SSID1 wlanssid; Password1 wlankennwort MqttHost 192.168.178.10 Backlog Loghost 192.168.178.10; LogPort 514; Syslog 2 In der Konsole sehe ich nach dem Neustart direkt, ob die WLAN-Verbindung geklappt hat und welche IP-Adresse der ESP8266 nutzt. Ich gehe dann auf die WebUI und konfiguriere die Sensoren an den angeschlossenen Ports |
![]() |
Sensoren testenNach dem Neustart sollte Tasmota die Werte der konfigurierten Sensoren auf der Weboberfläche anzeigen. Kontrollieren Sie die Werte und die Bezeichnung. Sie können auch auf der Konsole die MQTT-Meldungen sehen. Mit dem Befehl "Status 8" sehen Sie dir konfigurierten Sensoren und ihren Wert aber vor allem auch den Namen. Hier mal ein SR04 Ultraschall-Abstandssensor
Die JSON-Struktur kann ich auch aufklappen und bekomme: { "StatusSNS":{ "Time":"2022-01-07T23:37:11", "SR04":{"Distance":84.491} } } Interessant ist hier "SR4" und "Distance" |
![]() |
PRTG HTTPPush testenAls nächsten Schritt sollten Sie in PRTG einen HTTP-Push-Sensor anlegen. Das habe ich auf PRTG - HTTP Push-Sensoren beschrieben und sollte kein Problem sein. Dann nutze ich die Tasmota-Commandline, um einmal Daten zu senden: WebSend [192.168.178.91:5050] /<SensorID>?value=1.3 Beachten sie folgende Besonderheiten:
Je nach Eingabe sehen Sie in der Konsole auch die Antwort. Wenn Sie einen nicht erreichbaren Host oder Port angeben, kommt ein Fehler. Bei einer falschen SensorID aber nicht. Da die Verbindung beim ESP8266 aufgrund der eingeschränkten Leistung nur per HTTP möglich ist, kann ich mit Wireshark auf dem PRTG-Server den Request und die Antwort recht einfach finden:
Dieser Request war erfolgreich. |
|
Tasmota RegelnNun brauche ich eine Regel, die die Daten immer wieder sendet. Tasmota unterstützt bis zu drei Regelsätze und da ich "Rule1" schon mit einer MQTT-Regel belegt habe, nutze ich einfach Regelsatz2: Rule2 ON SR04#Distance DO WebSend [192.168.178.91:5050] /418C0D9B-01B1-4393-B492-B84A43FC0547?value=%value% ENDON Rule2 1 Ich sage Tasmota, dass es bei jedem Lesevorgang des Sensors SR04 den Wert von "Distance" per WebSend an die URL senden soll. Diese Aktion ist in der Konsole sichtbar.
Hier sollten Sie aber genau hinschauen, denn es kann sein, dass Tasmota den Sensor sehr oft liest und dann auch jedes Mal die Regel angetriggert wird. Wenn das der Fall ist, können Sie mit der Time-Trigger arbeiten. Passend zu den normalen Sensorintervallen von PRTG von 1 Minute oder 5 Minuten gibt es: Time#Minute startet jede Minute Time#Minute|5 startet alle 5 Minuten Entsprechend kann ich dann eine Regel bauen, die einmal pro Minute die Daten sendet: Wenn Sie dies nicht machen, sendet Tasmota alle 4-5 Sekunden ein Datenupdate an PRTG, der all diese Daten auch in der Datenbank speichert: Rule2 ON SR04#Distance DO var1 %value% ENDON ON Time#Minute DO WebSend [192.168.178.91:5050] /418C0D9B-01B1-4393-B492-B84A43FC0547?value=%var1% ENDON Rule2 1 Da ich keinen Weg gefunden haben, einen beliebigen Wert zu referenzieren, lasse ich jede Änderung in "var1" ablegen und alle Minute triggert die zweite Zeile, die den Inhalt von Var1 dann an PRTG sendet. Insgesamt hat Tasmota 16 Variablen. Nach einiger Zeit sehe ich in PRTG dann die Werte:
Wer mehrere Werte senden will, kann diese als Einzelwerte mit eigenen Regeln zu mehreren Push-Sensoren senden oder formatiert eine PRTG-tauglich JSON-Antwort. Über die in PRTG eingebauten Möglichkeiten können Sie dann ja Alarme erzeugen, Ausfälle melden etc. Achtung: SaveData 3600
|
![]() |
Das war schon der ganze Prozess
Tasmota mit MQTT
Der zweite einfache Weg ist natürlich der Einsatz eines vorhandenen MQTT-Broker, z.B. Mosquitto o.ä., an den das Tasmota-Gerät einfach den Status meldet. PRTG kann mittlerweile auch MQTT-Daten auslesen und in sein Monitoring übernehmen.
- MQTT
- PRTG und MQTT
- Everything you need to monitor MQTT and more
https://www.paessler.com/mqtt
Tasmota HTTP-API
Tasmota kann so konfiguriert werden, dass Sie per HTTP auch Aktionen auslösen und Daten abfragen können. Insofern können Sie mit einem PRTG JSON-Sensor auch die Daten abrufen. Das geht native ohne größere Einstellungen aber hat meiner Ansicht nach folgende Einschränkungen.
- IP-Erreichbarkeit
Da PRTG die Verbindung zum IoT-Device aufbauen muss, muss es auch eine IP-Verbindung geben. Meine IoT-Geräte sind aber in der Regel nicht ungeschützt im gleichen IP-Subnetz, so dass ich mir Gedanken über Routing und Firewalls machen muss. Ich werde auch sicher nicht von einer PRTG-Instanz der Firma oder in der Cloud auf einen im Internet veröffentlichten Sensor zugreifen. - Statische IP-Adresse
In Tasmota können statische IP-Adressen konfiguriert werden aber bequemer geht es mit DHCP. Wenn ein Sensor aber einige Tage "Offline" und die Leasedauer des DHCP-Pools kürzer ist, dann bekommt das Gerät vermutlich eine neue IP-Adresse. Auch nicht elegant - Always On
Ein ESP8266/ESP32 ist per WLAN im Netzwerk und damit PRTG ihn abfragen kann, muss er dauernd laufen. Damit scheidet dieser Weg natürlich aus, wenn es um "Batteriebetrieb" geht.
Die Nutzung eines PRTG - HTTP Push-Sensoren hat hier deutlich mehr Vorteile.
Weitere Links
- ESP8266
- WeMOS IoT-Device
- NodeMCU / LUA
- MQTT
- PRTG - HTTP Push-Sensoren
- ESP8266/ESP32 3rd Party Firmware
-
Nagios: check_tasmota
https://exchange.nagios.org/directory/Plug-ins/Others/check_tasmota/details - ESP8266 und ESP8285 Module - Starter Anleitung
http://stefanfrings.de/esp8266/ - Adafruit ESP8266 Temperature / Humidity Webserver
https://learn.adafruit.com/esp8266-temperature-slash-humidity-webserver - Depends on Adafruit DHT Arduino library
https://GitHub.com/adafruit/DHT-sensor-library -
Arduino SimpleServer
https://raw.GitHubUsercontent.com/wemos/D1_mini_Examples/master/examples/04.Shields/DHT_Shield/SimpleServer/SimpleServer.ino