Rule mit Gerätetaster aktivieren / deaktivieren

  • Nachdem ich im Thread " MaxPowerHold / MaxPowerWindow " nun schon einiges über Tasmota

    gelernt habe,möchte ich nun Programmiertechnisch einen Schritt weiter gehen.

    Dazu vorab mal die Beschreibung meiner gewünschten praktischen Anwendung.

    Ich möchte mit meinem Sonnoff Pow R2 (tasmota 13.0.3) das Ladegerät meines E-Bikes (aus)schalten.

    Lithium Akkus haben die höchste Lebenserwartung,wenn man den Ladezustand zwischen 30% und 80% hält

    (also nicht oder selten bis auf 100% auflädt).

    Bei meinem Bike ist es so,das zu beginn der Ladung des "leeren" Akkus etwa 160 Watt gezogen werden.

    Die Leistung steigt immer weiter bis auf 180-190 Watt,und fällt dann wieder wenn der Akku über 80% Ladezustand hat.

    Das ist so,damit der Akku zum Ende der Ladung hin weniger Stress hat und dadurch eben länger lebt.

    Nun sage ich meinem Sonoff,er soll kurz nach erreichen einer Leistung von 180 Watt das Ladegerät abschalten.

    Das erreiche ich mit:

    rule1 on Energy#Power>=180 do ruletimer1 60 endon on Energy#Power<180 do ruletimer1 0 endon

    rule2 on rules#timer=1 do power1 0 endon

    backlog rule1 1; rule2 1; rule1 5 rule2 4

    Das funktioniert soweit ganz gut,nur möchte ich auch mal schnell und unkopliziert den Akku ganz

    voll laden können wenn ich doch mal eine weitere Strecke zurücklegen will.Dazu muss das "Programm"noch

    erweitert werden,was ich mir wie folgt vorstelle:


    Der Normalzustand : bis 80% laden und abschalten.

    Der Ausnahmezustand: voll laden durch deaktivieren von Rule1.

    Nach einem schnellen doppelklick des Tasters soll Rule1 ausgeschaltet werden und nach einem weiteren doppelklick

    wieder angeschaltet werden können.Alternativ ginge auch ein 2 oder 3 Sekunden langes gedrückt halten des Tasters.

    Habe natürlich wieder einiges probiert,aber nichts hat funktioniert.

    zB habe ich gelesen das man den Switchmode auf 8 stellen und dann mit einem schnellen doppelklick

    (2 klicks innerhalb von 0,5sek) und einer Rule was machen kann.

    Zum testen einfach mal was probiert zum Relais ausschalten:

    switchmode 8

    rule3 on Switch0#state=3 do power1 0 endon

    dann doppelklick,aber nichts passiert.

    Wie kann man das realisieren?

  • Moin.

    Ist der Eingang den als "Switch" eingestellt? Und Switch"0" gibt's ja nicht, wenn dann Switch1 ;)

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • mit Switch1 hab ich probiert,geht auch nicht.

    Der Switch ist ja der Taster am Gerät,muß ich den noch extra als "Switch einstellen?

    Wo mache ich das?

  • Ich versteh nicht ganz was genau du machen möchtest?

    Ja klar ist der Switch der Taster am gerät. Möchtest du einen Extra Button für die Funktion haben oder wie meinst du das?

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Um mit Switchmode zu arbeiten muss der EIngang des Tasters auf Switch gestellt werden, yepp

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Unter Einstellungen Vorlagen.

    Den POW R2 als Vorlage wählen, den Button als Switch einstellen, Vorlagennamen vergeben (zb. "POW R2 Mod") und in sonstigen Einstellungen die Vorlage aktivieren.

    geht aber möglicherweise auch schon einfach über gerät konfgurieren. Kann ich jetzt nicht auswendig sagen.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Ich habe es nun hinbekommen das ich mit dem Taster am Gerät eine rule deaktivieren konnte.

    Dann war aber die standard Funktion, Gerät ein/ausschalten über den Taster nicht mehr möglich.

    <X X( Hilfee

  • Moin.

    vielleicht hilft es ja erst mal den Rules Syntax durchzulesen ;)

    long-press-on-a-switch

    EDIT:

    oder für den Button Double Press:

    button-single-press-double-press-and-hold

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    Einmal editiert, zuletzt von HoerMirAuf (4. August 2023 um 12:53)

  • Moin,danke für den Link

    Habe mich nun für die long press Variante entschieden.

    button auf switch umgestellt und gespeichert

    switchmode auf 5 gestellt

    setoption32 auf 30 gestellt

    mit

    rule3 on switch1#state=3 do rule1 0 endon

    kann ich nun rule1 mit einem long press deaktivieren.

    mir fehlen noch 2 Funktionen bis zur Vollendung meines Projektes:

    - mit einem weiteren long press soll die zuvor deaktivierte rule1 wieder

    aktiviert werden können.also mit long press an/aus schalten der rule.

    - bei deaktivierter rule1 soll die blaue Wlan LED (Led1) leuchten oder blinken.

    wenn du mir dabei nochmal helfen könntest? :)

    Einmal editiert, zuletzt von tobi320i (6. August 2023 um 14:45)

  • Moin

    um eine Rule zu toggeln:

    rule<x> 2

    Und für die LED Anzeige, die LED invertiert stellen:

    LED_I

    (sollte sie bei ausgeschaltetem GPIO leuchten dann eben "LED" nicht "LED_I")

    Und den rule status auswerten:

    Code
    rule3
    on switch1#state=3 do rule1 2 endon
    on rule1#state do ledpower %value% endon

    Die Frage ist inwieweit das mit den anderen "LED-Anzeigen" kollidiert.

    EDIT:

    Das wäre noch Sinnvoll beo "LEDPOWER":

    SetOption31 1 to disable LED even when Wi-Fi or MQTT is not connected


    Notfalls den LED GPIO als Relais bzw Relais_i konfigurieren. z.B. Power2 und dann eben statt LEDPOWER mit POWER2 %value% arbeiten.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    Einmal editiert, zuletzt von HoerMirAuf (7. August 2023 um 07:51)

  • Geht schon, muss man aber etwas triksen:

    Code
    rule3
    on switch1#state=3 do rule1 2 endon
    on rule1#state=0 do var1 1 endon
    on rule1#state=1 do var1 0 endon
    on var1#state>0 do backlog ledpower 2; mult1 1 endon
    on var1#state=0 do ledpower 0 endon

    EDIT:

    musste die Rule nochmal überarbeiten. Hatte sie versehentlich fürs blinken, wenn die Rule aktiv ist ausgelegt.

    evtl mit calcres 0 die variablen auf integer stellen.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    8 Mal editiert, zuletzt von HoerMirAuf (7. August 2023 um 09:14)

  • der Code funktioniert leider nur zum Teil.

    var1 scheint vom rule1#state nicht beschrieben zu werden.

    rule1 wird wie gewünscht an/aus geschaltet.Die LED blinkt jedoch nur beim manuellen setzen von var1 1

    rule3 on switch1#state=3 do rule1 2 endon on rule1#state=0 do var1 1 endon on rule1#state=1 do var1 0 endon on var1#state=1 do backlog ledpower 2; mult1 1 endon on var1#state=0 do ledpower 0 endon

    calcres steht auf 0

  • Moin.

    ahhh ... übersehen ... rule1#state wird als string eingelesen:

    Code
    rule3
    on switch1#state=3 do backlog rule1 2; rule1 endon
    on rule1#state=OFF do var1 1 endon
    on rule1#state=ON do var1 0 endon
    on var1#state>0 do backlog ledpower 2; mult1 1 endon
    on var1#state=0 do ledpower 0 endon

    EDIT:

    Nachdem das obige Beispiel extrem unzufriedenstellend läuft, hier nun eine Variante die richtig gut funktioniert:

    Code
    rule3
    on switch1#state=3 do backlog rule1 2; rule1 endon
    on rule1#state=OFF do backlog ledpower 1; ruletimer1 1 endon
    on rule1#state=ON do backlog ruletimer1 0; ledpower 0 endon
    on rules#timer=1 do backlog ledpower 2; ruletimer1 1 endon

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    3 Mal editiert, zuletzt von HoerMirAuf (8. August 2023 um 14:31)

  • das blinken nun mal außen vor gelassen habe ich folgendes festgestellt,

    wenn ich rule1 über den switch1#state=3 an/aus schalte,wird der rule1#state nicht geschrieben und bleibt bei POWER2#STATE=1 performs "rule1 1" hängen.

    wenn ich die rule1 jedoch manuell mit rule1 0(oder1) schreibe,läuft rule2 komplett durch.dann werden auch die var geschrieben

    rule2 on switch1#state=3 do power2 2 endon on power2#state=0 do rule1 0 endon on power2#state=1 do rule1 1 endon on rule1#state=OFF do var1 1 endon on rule1#state=ON do var1 0 endon

  • je mehr ich probiere,desto weniger verstehe ich die Abläufe.

    Ich bin kurz vorm Aufgeben,aber ich möchte verstehen warum es ist wie es ist ||

    ich bin nun mitlerweile bei 3 rules für mein Vorhaben und habe ein zweites Relais (power2) hinzugefügt,sodaß ich über den web-ui button dann ebenfalls die rule 1 deaktivieren kann.Das funktioniert auch soweit.

    rule3 funktioniert jedoch nicht nach einem Neustart und auch nicht,wenn man power1(Relais im Gerät) normal über einen Klick auf den Gerätetaster einschaltet.Beim manuellen starten über rule3 1 geht es dann einmal.

    in rule2 funktioniert das schreiben des rule1#states wie im oberen post beschrieben nicht.

    meine 3 rules:

    rule1

    on Energy#Power>=10 do ruletimer1 20 endon on Energy#Power<10 do ruletimer1 0 endon on rules#timer=1 do power1 0 endon

    rule2

    on switch1#state=3 do power2 2 endon on power2#state=0 do backlog rule1 0 endon on power2#state=1 do backlog rule1 1 endon on rule1#state=OFF do var1 1 endon on rule1#state=ON do var1 0 endon on var1#state>0 do backlog ledpower1 1; rule3 1 endon on var1#state=0 do backlog rule3 0; ledpower1 0 endon

    rule3

    on Energy#Power<11 do ruletimer1 5 endon on Energy#Power>=11 do ruletimer1 0 endon on rules#timer=1 do power1 0 endon

    die rule3 soll übrigens aktiv sein,wenn ich denn Akku zu 100% aufladen will

    die rule1 bei aufladen bis nur 80%.Die hier eingetragenen Werte sind natürlich nur Testwerte

  • hi

    wenn ich rule1 über den switch1#state=3 an/aus schalte,wird der rule1#state nicht geschrieben und bleibt bei POWER2#STATE=1 performs "rule1 1" hängen.

    wenn du dir mein Beispiel genau ansiehst, wirst du sehen das hinter dem toggeln der rule nochmal die rule selbst aufgerufen wird

    on switch1#state=3 do backlog rule1 2; rule1 endon

    Und genau dieser Aufruf triggert dann "rule1#state"

    Das mit den Variablen zum blinken vergiss mal lieber. Damit läuft nur der Speicher voll und es blinkt ewig nach dem deaktivieren nach.

    Die Ruletimer Lösung ist wesentlich besser.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • je mehr ich probiere,desto weniger verstehe ich die Abläufe.

    Ich bin kurz vorm Aufgeben,aber ich möchte verstehen warum es ist wie es ist ||


    ich bin nun mitlerweile bei 3 rules für mein Vorhaben und habe ein zweites Relais (power2) hinzugefügt,sodaß ich über den web-ui button dann ebenfalls die rule 1 deaktivieren kann.Das funktioniert auch soweit.


    rule3 funktioniert jedoch nicht nach einem Neustart und auch nicht,wenn man power1(Relais im Gerät) normal über einen Klick auf den Gerätetaster einschaltet.Beim manuellen starten über rule3 1 geht es dann einmal.

    Naja ... z.B:

    on rules#timer=1 do power1 0 endon

    ist diese rule ja bereits im ruleset1 also der rule1 das muss dann schon mal nicht mehr auch in der rule3 sein.

    und wenn du mehrfachabfragen machen möchtest , dafür eignet sich dann "break" anstatt "endon"

    Bsp:

    on Energy#Power<11 do ruletimer1 5 break

    on Energy#Power<10 do ruletimer1 20 endon

    oder du beschreibst einfach mal genau was du konkret machen möchtest.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070