Beiträge von gemu2015
-
-
-
die ottelo scripte sind sehr groß. du brauchst dazu mehr scriptspeicher, am besten nimm die binary von ottelo und lies
in seinem blog unter "Kurzanleitung Script mit dem Editor übertragen"
-
-
Nein, kann man nicht, jedenfalls nicht mit %var%
du kannst allerdings die Webseite im script erzeugen und den HTML code auf das Filesystem schreiben mit den Werten aus Variablen.
Das wäre aber nicht sehr elegant weil du das in kurzen Abständen immer wieder machen müsstest.
-
das müsste funktionieren!
der decoder funktioniert aber nur, wenn du NICHT im dump mode bist.
also wieder zurückschalten mit sensor53 d0
-
ist leider nicht so
Dropbox abgestürzt, habe wieder hier direkt gespeichert, update siehe oben
-
also grundsätzlich ist alles was in >W erzeugt wird HTML und geht mit allen Tasmota Versionen.
dabei ruft Tasmota den Seitenaufbau einmal auf für die statischen Anteile und ca alle 3 Sekunden für den dynamischen Anteil, also Sensorwerte.
im Script werden alle Zeilen vom dynamischen Teil aufgerufen wenn sie kein Dollarzeichen am Beginn der Zeile haben. (diese Zeilen werden nur einmal aufgerufen)
anstatt >W kann man auch schreiben >WS für dynamischen (sensor update) oder >WM für statischen Anteil
dann darf aber kein >W vorkommen.
wcs ist wie gesagt ein script Befehl für den dynamischen (programmgesteuerten) Webseitenaufbau den du hier gar nicht brauchst, (Beispiel ist das komplexe Timersrcipt)
die Variable wm (webemode) unterscheidet dabei zwischen statischem und dynamischem Aufruf. Wenn wm 0 ist dann ist es der dynamische Anteil.
-
wcs (web content send) ist eigentlich für dynamische Webseiten gedacht.
das macro bu() kann hier auch verwendet werden. dort kannst du ja beliebige script Variablen als Parameter angeben.
Was willst du denn bezwecken ?
wenn du z.B. Text 2 zeilig im Button haben willst, füge einfach ein <br> ein.
bu(p1 "zeile1<br>zeile2" "off")
-
hier das bereinigte script
es waren einige Syntaxfehler drin. Es gibt so gut wie keinen Syntaxcheck im scripter. es können aber sehr seltsame Dinge passieren wenn man z.B. eine Bedingung nicht richtig abschliesst also eine geschweifte Klammer auf ohne geschweifte Klammer zu. am besten bleibst du bei einer Schreibweise, entweder if then else oder geschweifte Klammern.
Wenn du mit Einrückungen arbeitest siehst du das viel besser.
Wenn du mehr mit scripten machen willst solltest du den scripteditor verwenden, dort gibt es auch eine Syntax Colorierung mit der man Fehler besser finden kann und das Programm wird auf Knopfdruck auf den ESP übertragen,
Code
Alles anzeigen>D res=0 mod=0 cnt=0 tag=0 to=0 Enabel1=0 timer1="00:00" >B res=is1(0 "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|") res=is(0 "Su|Mo|Tu|We|Th|Fr|Sa|") #UHR if wm==0 { wcs <center><h1 style="color:#0e70a4;font-size:40px;">%2.0hours%:%2.0mins%:%2.0secs%</h1>%is[wday]% %0day%-%is1[month]% %0year% } >S if upsecs%2==0 then dp2.0 mod=ttget(1 6) if mod==0 then res=ttget(1 0)+ttget(1 1) else res=sunrise+ttget(1 1) endif timer1=s(int(res/60))+":"+s(res%60) endif #TIMERS if wm==0 then Enabel1=ttget(1 7) if Enabel1==1 then wcs <blockquote style="border-style: solid; wcs border-width: 5px; border-color: #0e70a4; background-color: #1f1f1f"> wcs Timer1: %timer1% wcs </blockquote> else wcs endif endif >W %=#UHR %=#TIMERS
-
vielleicht hilft das
bei den Geräten bei denen ich einen Tasmota Timer verwende benutze ich dieses script zur Anzeige der aktuellen Zeiten im Web UI
Code
Alles anzeigen>D res=0 mod=0 up="8:00" down="21:00" >S if upsecs%5==0 then dp2.0 mod=ttget(1 6) if mod==0 then res=ttget(1 0)+ttget(1 1) else res=sunrise+ttget(1 1) endif up=s(int(res/60))+":"+s(res%60) mod=ttget(2 6) if mod==0 then res=ttget(2 0)+ttget(2 1) else res=sunset+ttget(2 1) endif down=s(int(res/60))+":"+s(res%60) endif >W Rolladen auf{m}%up% Rolladen zu{m}%down%
-
-
die script macros erzeugen einfach HTML code der primär für die Darstellung untereinander im Tasmota Hauptmenu gedacht war. z.B <center>
mit den speziellen Optionen kann man einzelne Elemente dabei ausschalten
special html options:
so(flags):
WSO_NOCENTER = 1 force elements not centeredWSO_NODIV = 2 force elements not in extra <div>
WSO_FORCEPLAIN = 4 send line in plain (no table elements)
WSO_FORCEMAIN = 8 send lines in main mode ($ mode)
wenn du also z.B so(1) schreibst dann werden die Elemente linksbündig statt zentriert dargestellt
du kannst dir den erzeugten HTML Code im Browser anschauen mit "Quelltext anzeigen"
warum es manchmal Verschiebungen gibt weis ich leider auch nicht.
-
In den tasmota scripting docs
-
Code
so(7) <blockquote style="border-style: solid; border-width: 5px; border-color: #0e70a4; background-color: #1f1f1f"> ck(cbox1 "Timer 1 " 70) nm(00 23 1 hh1 "hh " 70 0) nm(1 60 1 mm1 "mm " 70 0) pd(mixer1 "Laufzeit " 70 "1sec" "2sec" "3sec") </blockquote>
so funktioniert es, sieh dir die special html options an (so(x)). du must bestimmte automatische Einstellungen abschalten damit es geht.
-
-
Du musst arrays IMMER erst anlegen
-
acp(dst src) = copy array, if src is numeric variable or constant, array dst is filled with this value
-
claimsererial() wird auf jeden Fall aufgerufen wenn uartindex 0 ist.
es kann sein dass es ein Problem gibt wenn man einen C3 ohne usb-uart chip verwendet
ich habe nur einen C3 mit usb-uart chip und der funktioniert mit 2 Metern
das wurde mal bei Tasmota diskutiert welche Probleme es da geben kann, ich dachte das wäre inzwischen auch behoben.
-
Zitat
Ein echtzeit SML Emulator wäre für viele auch zu verlockend um zu Bescheißen.
es geht nicht um Emulation sondern um Umleitung der seriellen Schnittstelle in Echtzeit. (was ohnehin kaum Sinn machen würde)
eine Emulation wäre mit scripting aber gar kein Problem