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.
Wenn’s mit dem Selber-Kompilieren nicht klappen will, gibt’s hier
https://github.com/Jason2866/Tasmota-specials/tree/firmware
einige fertige .bin (auch mit Script und SML)
Und doch… ein externer ScriptEditor ist bei Tasmota auch verlinkt
https://tasmota.github.io/docs/Scripting-Language/#optional-external-editor
Macht Syntax-Highlighting, wirft alle Kommentare raus und schiebt das Script auf den ESP
ifndef USE_SML_M erzeugt einen ERROR!
#define USE_SML_M
#endif
Ich gehe davon aus, dass du in der ersten Zeile auch ein Hash-Zeichen stehen hast. Der gezeigte Weg bezieht sich auf ältere Tasmota Versionen. Um den Fehler zu umgehen empfehle ich, ein fertiges Binary mit Scripting-Funktion zu verwenden. Du findest diese z.B. unter https://github.com/Jason2866/Tasmota-specials/tree/firmware/firmware/tasmota/other (hier tasmota_scripting). Alternativ stehen in den Kommentaren zu dem Beitrag noch Hinweise, wie man alternative Wege beschreiten kann.
Gruß
Dieter
Hallo,
unter firmware gibt es noch weitere Bäume
…map
…tasmota/other
…tasmota32/other
Um bei meinem ESP8266, der derzeit kein Scrpiting aktiviert hat, Scripting zu aktivieren, welche Firmware.bin muss ich nutzen?
Ist es egal aus welchem Verzeichnis?
Denke es ist dann diese bin richtig: tasmota-scripting.bin
Oder sucht der WebInstaller über der GitHub Seite sich automatisch das richtige file?
Gruß
Andreas
Unter tasmota/other findest du für den 8266 die richtige Firmware. Wenn du nichts besonderes angeschlossen hast reicht die einfache Version. In einem der Kommentare steht auch der Link auf die compilierten Versionen.
Gruß
Dieter
Hallo,
nach einem Wechsel des Stromzählers wird der aktuelle Verbrauch (Consumtion(current)) nicht mehr angezeigt.
Nur noch der aktuelle Zählerstand (Consumption(total)) wird angezeigt.
Kann mir jemand sagen woran das liegen könnte?
Viele Grüße