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".
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.
[…] Für Tasmota habe ich auch die Scripting Funktionaliät aktiviert (siehe auch meinen Beitrag Tasmota Scripting aktivieren, wie man sich eine eigene Tasmota Version […]
[…] Tasmota Scripting aktivieren […]
Also ich komme hier leider nicht weiter, ich kann den build für tasmota-sensor erzeugen bis zu dem punkt wo ich die änderungen an der konfiguration vornehme.
dann bekomme ich immer einen fehler:
lib\lib_div\ams\GcmParser.cpp:7:23: fatal error: t_bearssl.h: No such file or directory
Da wird irgendwas beim Compilieren falsch gelaufen sein. Du kannst mir per Kontaktformular kurz Deine EMail zukommen lassen, dann schicke ich dir eine cimpilierte Tasmota 12 Version mit aktiviertem Scripting und Sensor.
Gruß
Dieter
Hallo,
würdest du das auch für mich tun? 😉
Gruß
Benjamin
Ist schon auf dem Weg…
Hallo, der Fehler beim Kompilieren ist wohl „normal“ wenn man unter „sensor“ baut. Siehe https://github.com/arendst/Tasmota/discussions/13930
Leider funktioniert es nämlich bei mir auch nicht…
Guten Abend,
habe das gleiche Problem, würde mich ebenfalls sehr über die Datei freuen 🙂
Viele Grüße
Gregor