Den Wifi-Tasmota IR-Lesekopf (Hichi) per HTTP Request auslesen

Der IR-Lesekopf für den Stromzähler von Hichi ist seit Jahren eine etablierte Lösung für das Auslesen des Stromzählers. Schon lange habe ich selbst den USB-Lesekopf im Einsatz und er läuft extrem zuverlässig.

Einem Freund hatte ich kurzerhand die WLAN-Variante mit ESP-01 geschenkt, ohne jedoch auf die Limitierung zu achten, dass ein sinnvolles Auslesen nur mit SmartHome über MQTT (Tasmota als MQTT Client) möglich ist. Also musste etwas Bastelei her, um auch ohne MQTT Broker bequem an die Daten zu kommen.

Für die Einrichtung des Tasmota auf dem Hichi gibt es sehr gute Anleitungen im Netz, die will ich nicht wiederkäuen. Dazu gibt es für eigentliche alle Stromzähler im Tasmota Wiki das passende Script.

Das Auslesen ohne SmartHome

Um ohne MQTT bequem an die Daten zu kommen, ist MQTT eine schlechte Option. Gewählt habe ich daher eine Variante über die sehr schöne Open Source-App „HTTP Request Shortcuts„.

Endpoint des HTTP Requests ist (bei mir) die IP + ?m=1:

http://xx.xx.xx.xx/?m=1

(Im Zweifel bekommt man die korrekte URL auf der Tasmota Seite des Devices, über die Developer Tools – Netzwerk.)

Man bekommt einen nicht ganz so schön nutzbaren Datensatz, den man mittels JavaScript aber leicht etwas zerlegen kann. Den Response des Request deaktiviert man am besten („Nichts anzeigen“), weil man diesen dann über das Scripting steuert.

Das Script selber muss man an die individuelle Zählerkonfiguration anpassen. Bei meinem Fall war es so sehr gut nutzbar:

const regex = /\{s\}(.*?)\{m\}(.*?)kWh/g;
let match;
const extractedValues = {};

while ((match = regex.exec(response.body)) !== null) {
  extractedValues[match[1].replace("LK13BE ","")] = match[2].replace("000","");
}

showDialog("Aktueller Verbauch: "+extractedValues["Verbrauch aktuell"].split(",0")[0] + " W\n\n1 Tag: " + extractedValues["Verbrauch 1 Tag"] + " kWh\n7 Tage: "+ extractedValues["Verbrauch 7 Tage"] +" kWh\n30 Tage:" + extractedValues["Verbrauch 30 Tage"] + " kWh\n365 Tage: "+extractedValues["Verbrauch 365 Tage"]+" kWh\n\nZählerstand: "+extractedValues["Gesamtverbrauch"]+" kWh");

Alternativ kann man es auch als Toast ausgeben lassen (showToast) oder vorlesen lassen (speak). Die Verknüpfung zum Request lässt sich dann auf den Homescreen legen und die aktuellen Zählerdaten sind nur einen Tab entfernt.

Fröhliches Ausprobieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert