Beiträge von HoerMirAuf

    Hi.


    Hab's jetzt nicht ins kleinste Detail überprüft aber wenn die Rule so geht, passt doch.


    Event brauchst du, weil eine Änderung einer Varibale innerhalb einer Rule <on ... endon> während deren Laufzeit nicht berücksichtigt wird.

    Wenn also in der Variable der Wert geändert wird, kommt das erst in einer weiteren Rule <on ... endon> zum tragen.

    Bei jedem event trigger wird der aktuelle vorher veränderte Variablen Wert verwendet.

    Deshalb ist es auch nicht unwichtig in welcher Reihenfolge Rules angewendet werden.

    Moin


    Du musst zuerst Timer anlegen die als Befehl "Regel" verwenden, nicht on oder off.

    Dann wird dieser Timer wie du in deinem Beispiel aufzeigts in den Rules auch so ausgwertet.


    Steht der Timer auf "Regel" und du willst doch etwas schalten muss das dann eben mit in die Rule.

    Bsp:

    Clocktimer1 soll folgendes tun: Power1 on UND Event Timer1

    Clocktimer2 soll folgendes tun: Power1 off UND Event Timer2

    Code
    Rule1
    on clock#timer=1 do backlog power1 1; <was auch immer>; event Timer1 endon
    on clock#timer=2 do backlog power1 0; <was auch immer>; event Timer2 endon
    on event#timer1 do <dies oder das> endon
    on event#timer2 do <dies oder das> endon


    Dein Code schaut soweit i.O aus ich denke das du den Timer nicht auf Regel gestellt hast, ;)

    Moin. Welche FW Version?

    Bei mir passt das spielend in den Speicher zumal dir Rules seit geraumer Zeit kompermiert werden und deswegen weit über 1000 Zeichen fassen.


    Oder du hast es abgetippt und immer "Enter" gedrückt nach jeder Zeile.


    Zitat

    rule2 on system#boot do backlog var1 0; var2 0; var3 1 endon on SR04#distance>%var1% do backlog var4 %value%; var5 %value%; event checklimit=%value%; event senddistance endon on SR04#distance<%var2% do backlog var4 %value%; var5 %value%; event checklimit=%value%; event senddistance endon on event#checklimit>30 do var4 31 endon on event#checklimit<5 do var4 4 endon on event#senddistance do backlog scale1 %var4%, 31, 4, 0, 100; event pubdata endon on event#pubdata do backlog publish stat/Wassertank_Distance/RESULT {"Wassertank_prozent":"%var4%"}; var1 %var5%; var2 %var5%; add1 %var3%; sub2 %var3% endon

    Hi


    Code
    on system#boot do backlog var1 0; var2 0; var3 1 endon
    on SR04#distance>%var1% do event checklimit=%value%; var4 %value% ; event senddistance endon
    on SR04#distance<%var2% do event checklimit=%value%; var4 %value% ; event senddistance endon
    on event#checklimit>30 do var1 31 endon
    on event#checklimit<5 do var1 4 endon
    on event#senddistance do backlog scale1 %var1%, 31, 4, 0, 100; event pubdata endon
    on event#pubdata do backlog publish stat/Wassertank_Distance/RESULT {"Wassertank_prozent":"%var1%"}; var1 %var4%; var2 %var4%; add1 %var3%; sub2 %var3% endon

    EDIT

    Ups ... mir ist eben aufgefallen, das ich 2 backlogs vergessen habe. var1 hatte ich auch doppelt verwendet.

    Das sollte zwar nicht machen aber nicht elegant.


    Hier Überarbeitet:

    Code
    Rule1
    on system#boot do backlog var1 0; var2 0; var3 1 endon
    on SR04#distance>%var1% do backlog var4 %value%; var5 %value%; event checklimit=%value%; event senddistance endon
    on SR04#distance<%var2% do backlog var4 %value%; var5 %value%; event checklimit=%value%; event senddistance endon
    on event#checklimit>30 do var4 31 endon
    on event#checklimit<5 do var4 4 endon
    on event#senddistance do backlog scale1 %var4%, 31, 4, 0, 100; event pubdata endon
    on event#pubdata do backlog publish stat/Wassertank_Distance/RESULT {"Wassertank_prozent":"%var4%"}; var1 %var5%; var2 %var5%; add1 %var3%; sub2 %var3% endon

    Moin.


    Ach so, jetzt checke ich das. Die Polaritatsumschaltung für die Laufrichtung erfolgt vor dem Auswahlschalter.

    Das muss ja dann eine komplette 2 polige Umschaltung sein damit die Motoren umgepolt werden.


    Wenn du genug Auswahlpositionen hast dann kannst du die Gruppen für auf und ab über Dioden separat definieren.

    Nicht ganz so schön, weil bei die Gruppen UND Schaltung dann jeweils nur bei der richtigen Polarisierung arbeiten, aber besser als nix.


    Auf dem Bild schaltet z.B. Pos4 {[G1 und G2] Aufwärts} und Pos5 {[G1 und G2] Abwärts}.

    Pos4 ist nur funktional bei Auf und Pos5 nur bei Ab.


    Pos6 und Pos7 dasselbe. Nur für G1/G3



    EDIT:

    oder du ersetzt den Um - und Positionsschalter durch einen 2 poligen Positionsschalter:

    Bsp. 6 Pos / 2 pol.

    Dann kannst Du nur mit dem Auswahlschalter jede beliebige Kombi ohne Dioden verklemmen,

    Ich suche aber eigentlich (habe das nicht richtig beschrieben) einen dreistufigen Sonoff, der 1-0-2 schalten kann und denke, daß es sowas nicht gibt.

    Wie der User mafrei gesagt hat. Einen Sonoff DUAL oder Shelly 2. Haben 2 Relais mit Schließer.

    Das lässt sich dann, zumindest mit Tasmota, wie ein Wechsler einstellen (Interlock) oder eben frei zuordnen.


    Oder eben ein Wechsler Relais nachscchalten

    Hi.


    Die var1 kannst du nicht toggeln. Toggeln kann man nur etwas das 2 oder mehrere definitierte Zustände hat.

    Eine Variable kann aber alles sein. String jeder Wert ... zwischen was soll sie da toggeln?


    Versuch es mal mit %value% und immer den aktuellen switch1#state bei änderung übertragen:

    rule3 on switch1#state do var1 %value% endon on switch1#state=2 do websend [192.168.188.101] power toggle endon

    So,


    hab nochmal nachgesehen. Ohne Zeit, also ohne NTP Sync (offline) arbeiten weder Timer noch Rules.

    Tasmota ist eben nicht für den Standalone Betrieb konzipiert.


    Einen Versuch gäbe es noch:

    Code
    Rule1
    on system#boot do time 1622628000 endon
    on Power1#State=1 do backlog Power2 1; delay 10; Power1 0 endon
    on Power1#State=0 do Power2 0 endon

    Der trigger system#boot geht ja auch schon ohne Zeitsync.

    mit "timer 1622628000" sollte der NTP deaktiviert und die zeit im Epoche Format auf heute 12:00 gesetzt werden.


    Das Tasmota Teil hat zwar nie ne richtige Zeit sollte aber dann mit den Rules bzw. Pulsetime arbeiten ... in der theorie.

    Hi.


    Offline gibt es keine Zeitsynchronisierung, ohne Zeit keine Timerfunktion. Wusste ich zwar auch nicht aber offenbar gilt das auch für den Pulsetime.

    Ich weiß zwar nicht ob das dann auch für die Rules gilt aber ein versuch wäre es Wert.


    Den Pulsetime wieder raus nehmen.


    Pulsetime1 0


    Und die Rule aus Beitrag #6 ändern/erweitern:

    (der Delay bestimmt die Dauer zum ausschalten in Sekunden 300=5Min)

    Rule1 on Power1#State=1 do backlog Power2 1; delay 300; Power2 0 endon on Power1#State=0 do Power2 0 endon


    Wäre mal eine Rückmeldung interessant ob's geht.

    Oke, ich glaube es gefunden zu haben.


    Das Tasmota Teil läuft in unterschiedlichen Netzwerken. Teil's nur lokal ohne Internet.

    Deshalb sind die jeweilgen Router als NTP Server eingetragen.


    Wechsle ich das WLAN, scheint tasmota nicht von alleine auf NTP2 umzuspringen wenn NTP1 nicht erreichbar und bei jedem erfolglosen Sync-Versuch laggt das Teil.


    Trage ich per Console z.B. den NTP2 manuell nach (obwohl schon so eingetragen) ntpserver2 192.168.1.1 dann wird sauber gesynct auch nach nem reboot. Kurios :/