Tasmota Scripting aktivieren

Die bisher von mir verwendeten Tasmota Versionen habe ich als fertige Binaires von der Tasmota- Seite heruntergeladen. Bei deren Verwendung ist mir aufgefallen, dass bis auf die Verwendung der Rules fast keine Möglichkeiten existierten, Sensorwerte umzurechnen und komplexere Entscheidungen treffen zu können.

Genau hierzu gibt es mittlerweile in Tasmota die Scripting-Funktionalität, mit der man deutlich mehr Möglichkeiten bzgl. einer einfachen Programmierung hat als mit den Rules. Allerdings ist dieses Feature nicht in den Standard-Binaries vorhanden, so dass man sich hierzu eine Binary mit dem neuen Feature selber erstellen muss. Die Scripting Möglichkeit benötigt man ebenfalls, um Smartmeter auslesen zu können.

Das Erstellen einer eigenen Binary ist sehr gut auf der Smart Meter Interface Seite von Tasmota Seite erläutert. Eine weitere schöne Erläuterung findet man in dem Video von haus-automatisierung.com. Bei meiner Vorgehensweise habe ich allerdings an einigen Stellen Anpassungen vorgenommen.

Quellcode herunterladen

Die möglichen Erweiterungen von Tasmota werden nicht standardmäßig in die Binaries aufgenommen, da sonst der Programmcode für den ESP8266 zu groß würde. Daher sollte man sich ausgerichtet auf die Anwendung hierzu die Binary selber compilieren.

Hierzu benötigt man den Quellcode der aktuellen Version. Das gesamt Package mit allen Optionen findet man unter folgendem Link.

https://github.com/arendst/Tasmota/releases

Wenn man hier im oberen Bereich neben dem aktiven Reiter "Releases" auf den Reiter "Tags" klickt, erhält man eine Übersicht über alle Releases, die es von Tasmota gibt.

Unter jedem Release gibt es nun ein (kleines) Icon für ein ZIP-Archiv, in dem sich alle Quelldateien befinden. Dieses lädt man einfach herunter und entpackt es in einem eigenen Verzeichnis.

Entwicklungsumgebung

Es gibt mehrere Entwicklungsumgebungen, mit denen man diesen Quellcode verändern und compilieren kann. Ich verwende hierzu das freie Tool Visual Studio Code von Microsoft

Nach der Installation und dem Aufruf muss in der Entwicklungsumgebung noch die Extension "PlattformIO IDE" installiert werden. Dazu einfach auf das Puzzle in der linken Seite klicken und die Etension im oberen Suchefeld im Marketplace suchen und auf "Install" neben der Extension klicken. In der Menüleiste auf der linken Seite erscheint nun ein kleines "Alien"-Icon.

Über den Menüpunkt File / Open Folder brauche ich nur noch das Basisverzeichnis, in dem ich die Tasmota Quelldateien entpackt habe aufrufen und schon steht mir der gesamte Quellcode mit den Erstellmöglichkeiten der Binaires zur Verfügung.

Erster Compilertest

Ich empfehle zuerst zu prüfen, ob das Compilieren funktioniert. Dazu klickt man auf das Alien-Icon. Es erscheint links eine Baumstruktur mit der Überschrift "Project Tasks". Unter "General" befindet sich nun der Task "Build All". Mit diesem Task könnte man nun alle möglichen Binaries erzeugen. Da dies dann insgesamt sehr lange dauert empfehle ich stattdessen, sich ein konkretes Package auszuwählen und nur dieses bauen zu lassen. In meinen vorigen Projekten habe ich immer tasmota-sensors verwendet (wegen der Nutzung des ADS1115), so dass ich meinen Compilertest nur mit diesem Package machen möchte. (Ergänzung Okt. 23: Wenn es zu Fehlern beim Compilieren kommt, dann sollte als Project task tasmota verwendet werden.)

Hierzu gehe ich dem Projekt-Baum in das "tasmota-sensors"-Verzeichnis und finde dort unter dem Verzeichnis "General" den Task "Build". Nach betätigem dieses Tasks sollte der Compilervorgang automatisch starten und nach einigen Sekunden mit einer Erfolgsmeldung im Terminalfenster enden.

Das erzeugte Binary ist anschließend im Quellcode Verzeichnis unter \Tasmota-10.1.0\build_output\firmware zu finden.

Scripting Funktionalität im Quellcode aktivieren

Wenn das Compilieren funktioniert, dann kann nun der Code eingefügt werden, der die Scripting Möglichkeiten in Tasmota aktiviert. Hierzu muss der folgende Code in die Datei  user_config_override.h  vor der letzten #endif-Zeile eingefügt werden. Die Datei findet man im Explorer (Menü links oben) unter "tasmota".

Copy to Clipboard

Nach dem Speichern der Datei kann nun wieder der Build Prozess für tasmota-sensors gestartet werden. Als Ergebnis wird nun eine Binärdatei erzeugt, die die Smart Meter und die Scripting Features beinhaltet.

WICHTIG: Mit diesen Zeilen werden die Rules deaktiviert und Scripte aktiviert. Dies macht auch Sinn, denn mit den Scripten sind mehr Möglichkeiten als mit den Rules gegeben, da sie in vielen Fällen auf der gleichen Syntax basieren. Die Sprachreferenz für das Scripting findet man auf https://tasmota.github.io/docs/Scripting-Language/#script-sections

Ergänzung Okt. 23: Wer den Project task tasmota zur Erzeugung der Binärdatei nutzt und zusätzlich den Analog/Digital-Wandler ADS1115 verwenden möchte, braucht in der user_config_override.h Datei nur die folgenden Zeilen zu ergänzen, um den ADS1115 zu aktivieren:

#ifndef USE_ADS1115
#define USE_ADS1115
#endif

Ergänzung Nov. 2024: Die Zeilen 4-6 im Script beziehen sich nur auf die Verwendung des SML-Protokolls für Smartmeter. Wer dies nicht braucht, kann diese einfach weglassen.

D1 Mini flashen

Das Flashen mit der neue Tasmota Version kann ebenfalls über  Visual Studio Code erfolgen.  Hierzu im VSCode Explorer die Datei "platformio.ini" suchen (ganz unten) und in dieser Datei die Zeile mit "upload_port"  und "monitor_port" anpassen. Hier sollte jeweils der Port angegeben sein, an dem der D1 Mini angeschlossen ist. Windows Nutzer können das einfach über den Gerätemanager feststellen, MAC User über den Befehl ls-la /dev/cu.*. Diesen Portnamen trägt man dort ein und speichert diese Datei wieder.

Anschließend kann man wieder in die Build-Dateien gehen (Alien Icon) und unter "tasmota-sensors" den Job "Upload" aufrufen. Nun wird die Version nochmal compiliert und anschließend auf den D1 Mini übertragen.

Wie üblich, sollte nun ein Tasmota WLAN auftauchen. Hiermit verbindet man sich und konfiguriert anschließend als erstes die Verbindung ins WLAN.

Sollten das Tasmota WLAN nicht auftauchen kann man das Ganze auch über den Tasmotizer 1.2  flashen und dort direkt die Konfiguration für das WLAN aufspielen.

Das Ganze war erfolgreich, wenn man unter Console folgende Menüs sieht

Das Programmieren mit der Scriptsprache ist auf der Tasmota Scripting Seite  ausführlich und mit vielen Beispielen erläutert.