Update zu dem Thema
Mit der neuesten Tasmota Version V14.4.n.n ist es möglich das script in die user_config_override.h zu integrieren. Habe ich also auf diese weise dann lösen können!
Beiträge von StephanF
-
-
-
Hallo Zusammen.
Ich habe mit über einen ESP32 eine Rollladensteuerung realisiert.
Das klappt auch sehr gut. Entsprechend habe ich das WebUI auch "Aufgehübscht" (ich weiss, ist Ansichtsache)
Nun ich lese die Position des Shutters im Bereich >E ins eine Variable und zeige diese dann auch im WebUI an.
Das klappt sehr gut
Nun habe ich auch einen Button integriert, welcher den Shutter in eine "Sonnenschutz" Position fahren soll.
Um diese Position im WebUI änderbar zu machen, habe ich entsprechend zwei Eingabe Felder gemacht...Das klappt auch soweit...wenn ich die Zahl im Eingabefeld [1] oder [2] ändere, dann wird die Änderung auch übernommen, jedoch funktioniert meine Abfrage auf Änderung der entsprechenden Variable nicht und es kommt eine Fehlermeldung [3] in der Konsole
Es wird also die Variable "Shutter1#position" angemekert, die aber beim Normalen fahren des Rolladen ausgelesen und angezeigt wird..
Hier mal mein Script...
Kann mir da einer helfen und sagen was ich falsch mache?
1. warum kommt die Fehlermeldung in der Konsole, wenn ich den Wert eines Eingabefeldes Ändere?2. warum wird die Abfrage auf Änderung nicht ausgeführt?
Code
Alles anzeigen>D p:shpg=35 p:shpb=35 sht12=0 sht3=0 sht12aktiv=0 sht3aktiv=0 pos1=0 pos2=0 pos3=0 stop=0 >E pos1=Shutter1#Position pos2=Shutter2#Position pos3=Shutter3#Position >S ;Wenn eine Änderung der Positionen gemacht wird, diese im Flash speichern if (chg[shpg]>0) or (chg[shpb]>0) { Print 1Vars to flash svars Print 2Vars to flash ->webbutton9 Gäste-%shpg%%% ->webbutton12 Büro-%shpb%%% } >F if pwr[1]==0 and pwr[2]==0 and pwr[3]==0 and pwr[4]==0 and sht12aktiv==1 { sht12aktiv=0 } ; Anwahl Gäste Rolladen öffnen if pwr[7]==1 { sht12=1 =>power7 0 } ; Anwahl Gäste Rolladen schliessen if pwr[8]==1 { sht12=2 =>power8 0 } ; Anwahl Gäste Rolladen Sonnenschutz if pwr[9]==1 { sht12=3 =>power9 0 } ; Anwahl Gäste Rolladen Stop if sht12aktiv==1 and sht12<=3 and sht12>0 { sht12=4 } ; Anwahl Stop Rolladen Gäste und Büro if stop==1{ sht12=4 sht3=4 stop=0 } ; Befehle Gästerolladen ausführen switch sht12 case 1 ; Gäste Beide Rolläden öffnen print cases 1 - Gäste Beide Rolläden öffnen =>shutteropen1 =>shutteropen2 sht12aktiv=1 case 2 ; Gäste Beide Rolläden schliessen print cases 2 Gäste Beide Rolläden schliessen =>shutterclose1 =>shutterclose2 sht12aktiv=1 case 3 ; Gäste Beide Rolläden auf Sonnenschutz print cases 3 Gäste Beide Rolläden auf Sonnenschutz =>shutterposition1 %shpg% =>shutterposition2 %shpg% sht12aktiv=1 case 4 ; Gäste Beide Rolläden STOP print cases 4 Gäste Beide Rolläden STOP =>shutterstop1 =>shutterstop2 ends sht12=0 ; ========== AB HIER Büro Rolladen ========== if pwr[5]==0 and pwr[6]==0 and sht3aktiv==1 { sht3aktiv=0 } ; Anwahl Büro Rolladen öffnen if pwr[10]==1 { sht3=1 =>power10 0 } ; Anwahl Büro Rolladen schliessen if pwr[11]==1 { sht3=2 =>power11 0 } ; Anwahl Büro Rolladen Sonnenschutz if pwr[12]==1 { sht3=3 =>power12 0 } ; Anwahl Büro Rolladen Stop if sht3aktiv==1 and sht3<=3 and sht3>0 { sht3=4 } ; Befehle Bürorolladen ausführen switch sht3 case 1 ; Büro Rolladen öffnen print cases 1 - Büro Rolladen öffnen =>shutteropen3 sht3aktiv=1 case 2 ; Büro Rolladen schliessen print cases 2 Büro Rolladen schliessen =>shutterclose3 sht3aktiv=1 case 3 ; Büro Rolladen auf Sonnenschutz print cases 3 Büro Rolladen auf Sonnenschutz =>shutterposition3 %shpb% sht3aktiv=1 case 4 ; Büro Rolladen STOP print cases 4 Büro Rolladen STOP =>shutterstop3 ends sht3=0 >W @<div style="display: flex; border-style: solid; border-width: 5px; border-color: #0e70a4; background-color: #1f1f1f; padding: 10px;"><div> nm(5 99 1 shpb "Sonnensch. Büro : " 60 0) nm(5 99 1 shpg "Gäste: " 60 0) </div> </blockquote> bu(stop "Stop" "Stop") <b>Posistion Rolläden</b> <p>Gäste links: %0pos1% %% rechts: %0pos2% %% Büro %0pos3% %%</p> heap: {m}%heap%
-
Hallo.
Ich habe einen "Sender" und "Empfänger" es soll eine variable als "Schaltsignal genutzt werden.
Wenn ich auf der Sender Seite eine "1" da rein schreibe, soll auf der Empfänger Seite das Relais eingeschaltet werden.Wenn eine 0 drin steht, dann soll das Relais aus gehen.
Leider funktioniert das Update der Globalen variable nur sporadisch.Wie kann ich das Update der globalen variablen "forcieren"?
So sehen die Scripte bei mir aus:
Empfänger:
Code
Alles anzeigen>D g:laspre=0 >F if laspre>=1 then ->power1 1 else ->power1 0 endif >W laspre=%laspre%
Sender:
Ich habe ein "workaround" gefunden, indem ich, auf der Sender Seite, den Inhalt der Variable jeden Zyklus einmal ändere, also wenn eine "1" drin steht, schreibe ich eine "1.1" rein, wenn dann im nächsten Zyklus eine "1.1" drin steht, schreibe ich eine "1" rein. das gleiche mache ich mit der "0". Jetzt bekommt der Empfänger die variable upgedatet. Auf der Empfänger Seite habe ich den Vergleich dann auch entsprechend angepasst.
Sender:
Code
Alles anzeigen>D g:laspre=0 >B >F if laspre==1.1 then laspre=1 endif if laspre==1 then laspre=1.1 endif if laspre==0.1 then laspre=0 endif if laspre==0 then laspre=0.1 endif >W laspre=%laspre% nm(0 100 1 laspre "ltxt")
Empfänger:
Code
Alles anzeigen>D g:laspre=0 >F if laspre>1 then ->power1 1 else ->power1 0 endif >W laspre=%laspre%
LG Stephan
-
-
wenn das Gerät mit einer bekannten IP läuft kann der Script von extern so aktiviert werden
http://192.168.178.xx/cm?cmnd=script%201
Danke Dir.
Das ist schon mal ein erster Hinweis
-
Hallo liebe "Leidensgenossen".
Meine Firmware hat immer Script Support aktiviert und ich nutze auch die Scripte.
Ich erstelle mir in der Regel eine BIN Datei die sowohl die Vorlage als auch alle Settings schon beinhaltet. Somit hat jedes Gerät nach einen "Reset 1" alle notwendigen Einstellungen um wieder seine Arbeit aufzunehmen. Leider scheitet es noch am Script und dessen Aktivierung. Weiss jemand wie ich das in die Bin Datei integrieren kann?
gemu2015 Vlt du Gerhard?LG Stephan
-
Hallo zusammen.
Ich möchte gerne den optionalen Script Editor mit der Syntax Hervorhebung nutzen. Leider bekomme ich den nicht unter Windows "an laufen".Kann hier jemand Tips geben, was ich machen kann?
Hier der Link zu dem Optionalen Editor.Scripting Language - Tasmota
LG
Stephan -
-
Du musst dir eine BIN mit Script Support machen.
Dann kannst du Endschater oder sonstiges im WebUI anzeigen. EIgentlich alles was du möchtest!
-
Hallo
Ich habe mir für meinen Stromzähler einen IR Empfänger angeschaft um diesen nun auszulesen.
Das klappt auch prima. im WebUI wird alles angezeigt.
Nun möchte ich damit Relais schalten.
Dafür muss ich natürlich den entsprechenden Wert im Script verfügbar haben.
Das ist ja im Beispiel Script auch schon enthalten, doch leider bekomme ich dann in die Variable pin nicht rein...
Hier das script welches ich nutze.
https://tasmota.github.io/docs/Smart-Met…th-daily-values
und noch meine Ausgabe.....
Hat einer nen Hinweis wie ich den Wert aus dem SML string in eine variable bekomme? -
Hallo.
Ich habe einen Wemos mit Tasmota geflasht.
Dann ein Relais dran gehangen und einen Schalter.der Schalter schaltet das relais.
Schalter = 1 --> Relais = ON
Schalter = 0 --> Relais = OFF
Das klappt. Wenn aber jetzt der Wemos bei ausgeschaltetem Schalter in den Deepsleep geht, der Schalter während der Deepsleep Phase eingeschaltet wird, und dann der Wemos aufweckt, zeigt der den Schalter immer als OFF an. Ich muss den erst wieder aus und einschalten.
Was kann ich machen das ich den zustand sehe.....
Hintergrund:
Ich habe eine kleine Schneckenfalle gebaut, 2 Drähte mit Spannung. Wenn eine Schnecke auf den Drähten sitzt wird über einen Transistor ein GPIO geschaltet (Somit sehe ich ob eine Schnecke "Festgebraten" ist, passiert normalerweise nicht, da die Schnecken den "Stromschlag" nicht mögen und sich zurück ziehen). alle 2 Std geht der Wemos an und sendet mir den Batteriestand. auch wird dann der Zustand des Schalters gesendet. Wenn ich also nun den Schalter auf "1" sehen würde dann könnte ich einen Alarm auslösen, der mir anzeigt, das ein "Kurzschluss" beseht und die Batterie nicht mehr lange machen wird, wenn ich nichts unternehme -
Hallo.
Ich habe mir an einen Wemos D1 ein Relais gehangen und enen Schalter. Das ist ansich keine Hexerei. Ich kann mit dem Schalter das Relais ein und ausschalten.
Nun dachte ich, dann möchte ich auch noch eine weitere Steckdose die im Netzwerk ist paralell ein und ausschalten mit dem Relais.
Das klappt auch soweit. Dazu habe ich folgende Regel geschrieben.
rule1
on Power1#state=1 do websend [192.168.34.106:80] POWER1 ON endon
on Power1#state=0 do websend [192.168.34.106:80] POWER1 OFF endon
Nun in der Regel klappt das und die andere, entfernte Dose schaltet wie gewünscht. Jedoch manchmal reagiert diese nicht so schnell und ich bekomme nach dem Absetzen des Websend Befehls nicht mehr
“{"WebSend":"Done"}” als Rückgabe, sondern “{"WebSend":"Connect failed"}”.
Weiss jemand wie ich da noch eine Abfrage reinbauen kann, dass wenn ein Fehler kommt, ich verzögert den Websend befehl nochmal absetzen kann. das Ganze dann z.B. bis zu 3-mal...
also ich schicke
--> websend [192.168.34.106:80] POWER1 ON
bekomme dann zurück
--> /RESULT = {"WebSend":"Connect failed"}
dann solle eine Verzögerung von 10 Sekunden sein und erneut der Websend Befehl geschickt werden. Und das Ganze dann etwa 3-5 mal.