mal wieder Tasmota Rules

  • Hallo,

    ich bin eigentlich davon ausgegangen das es kein Problem sein wird mein Vorhaben umzusetzen.

    Vielleicht weil es schon spät war gestern oder weil ich 1-5 Bier zu viel hatte. :)

    Ich habe eine Led Feuchtraumleuchte in der ich ein Koppelrelais sowie ein Sonoff Basic reingebaut habe.

    Der Basic soll eine Steckdose schalten die außerhalb der Feuchtraumlampe montiert ist.

    Das Koppelrelais habe ich zusammen mit der LED Röhre zusammen geklemmt um den Zustand der Led zu bekommen.

    Von dem Schaltkontakt des Koppel Relais bin ich auf GND und RX des Sonoff Basics "neue Ausführung kein Gpio14 vorhanden"

    Ich möchte gerne das wenn ich das Licht innerhalb 2-3sek 2x ein und wieder ausschalte, der Basic toggelt also die Steckdose außerhalb schaltet.

    Mit einem Schalter die Lampe und den Basic schalten.

    Das sollte doch mit einer Rule möglich sein oder?

    Brauche ich switchmode und switchtopic

    Code
    Rule1
      ON switch1#state==2 DO add1 1 ENDON
      ON switch1#state==2 DO Power1 2 ENDON
      ON var1#state!=0 DO Backlog delay 6;var1 0 ENDON
      ON var1#state==2 DO Power1 toggle ENDON

    geht das in die richtige Richtung?

  • Moin.

    warum machst du das mit 2 x Schalten? Nimm doch einfach "long press"

    Disable switch single press and use long press

    SetOption11 0

    Switches do not have double press feature

    [assuming a connected pushbutton configured as Switch1]

    • single press: Does nothing (empty Delay commands)
    • hold 2 secs: Toggle Power1
    Code
     code" style="font-size: inherit; color: var(--md-default-fg-color--lightest);">Backlog SwitchTopic1 0; SwitchMode1 5; SetOption32 20  
    Code
     code" style="font-size: inherit; color: var(--md-default-fg-color--lightest);">Rule1  ON Switch1#State=3 DO Power1 2 ENDON  ON Switch1#State=2 DO Delay ENDON  


    bzw. double press:

    Button single press, double press and hold~

    [assuming Button1 and Setoption73 0]

    • single press: Toggle Power1
    • double press: send a mqtt message
    • hold 2 secs: send a different mqtt message
    Code
     code" style="font-size: inherit; color: var(--md-default-fg-color--lightest);">Backlog ButtonTopic 0; SetOption1 1; SetOption11 1; SetOption32 20
    Code
     code" style="font-size: inherit; color: var(--md-default-fg-color--lightest);">Rule1  ON button1#state=3 DO publish cmnd/topicHOLD/power 2 ENDON  ON button1#state=2 DO publish cmnd/topicDOUBLEPRESS/power 2 ENDON 

    Rule1 1

    Another example:

    [assuming Button1 and Setoption73 0]

    • single press: send MQTT message
    • double press: Toggle Power1 (SetOption11 swaps single and double press)
    • hold 2 secs: send another mqtt message
    Code
     code" style="font-size: inherit; color: var(--md-default-fg-color--lightest);">Backlog ButtonTopic 0; SetOption1 1; SetOption11 0; SetOption32 20  
    Code
     code" style="font-size: inherit; color: var(--md-default-fg-color--lightest);">Rule1  ON button1#state=3 DO publish cmnd/topicHOLD/power 2 ENDON  ON button1#state=2 DO publish cmnd/topicSINGLEPRESS/power 2 ENDON 

    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

  • Wie wird den die Steckdose außerhalb geschaltet?

    Ist die dann an dem Basic in der Leuchstofflampe angeschlossen?

    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

  • Ah, schade.

    Stimmt ich hatte auch nen Denkfehler mit meinen Hinweisen auf double press.

    Das bezieht sich ja auch taster die am Sonoff angeschlossen sind.

    Hmmmm .... ich hab noch keine rechte Idee wir das zu lösen ist.

    Der Ansatz wäre:

    Beim schalten wird ein ruletimer gestartet und eine variable zählt hoch.

    Ist der ruletimer abgelaufen setzte er die Variable wieder auf 0

    Ist die Variable auf 2 bevor der Ruletimer abgelaufen ist wird getoggelt.

    EDIT ... denkfehler.

    Bei jedem schalten wird ja der Ruletimer neu gestartet.

    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

  • Das Problem ist das das der Trigger (schalten) ja nur einmal den Timer antriggern darf auch wenn 2 mal geschaltet wird.

    oke ... das wäre mein Vorschlag

    rule1 on system#boot do var1 0 endon on switch1#state==1 do add1 1 endon on var1#state==1 do backlog rule2 1; ruletimer1 5 endon on var1#state==2 do backlog rule2 0;power1 2; var1 0 endon

    rule2 on rules#timer=1 do backlog var1 0; rule2 0 endon

    Funktion:

    wenn der Schalter schaltet wird var1 hochaddiert (ist ja beim start "0")

    nach dem ersten schalten ist var1=1 und die rule2 wird aktiviert und ein ruletimer gestartet

    in der rule 2 wird der ruletimer überwacht. Wenn dieser nach 5 Sekunden abläuft, weil kein 2 tes mal innerhalb 5 Sekunden geschaltet wird, wird var1 wieder auf 0 gesetzt und rule2 deaktiviert sich selbst.

    wird aber innerhalb der 5 sekunden ein 2tes mal geschaltet ist der ruletimer ja noch nicht abgelaufen der var1 auf 0 zurücksetzt und somit wird var1 auf 2 hochgezählt. Ist diese auf 2 wird ebenfalls die rule2 mit der Timerüberwachung deaktiviert, var 1 wieder auf 0 gesetzt UND das Relais1 getoggelt,

    Du siehst ... ganz so unkompliziert ist das nicht ;)

    EDIT:

    auch ...

    Rule 1 muss natürlich noch aktiviert werden:

    rule1 1

    und ich schätze rule1 muss auch auf once gesetzt werden damit der switch#state trigger erst auf 0 und wieder auf 1 wechseln muss damit er auslöst

    rule1 5

    und der switchmode muss noch 2 gestellt werden damit die rule auch auf switch#state reagiert:

    switchmode1 2

    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

    9 Mal editiert, zuletzt von HoerMirAuf (27. Oktober 2020 um 10:30)

  • super vielen dank das du dir gedanke darüber machst.

    Soweit funktioniert es nur verkehrt herum, also wenn das Licht aus ist ist der switch1 auf on mache ich das Licht an geht er auf off.

    Habe versucht in den configs switch1 auf switch1n zu ändern aber dann ist switch1 immer auf on.

    Wie kann ich das drehen.

    Muss ich 3,3v auf rx legen?

    Edit

    Habe jetzt tx als relais2i und rx als switch2 deklariert.

    Die Rule habe ich dann in

    Code
    rule1 on system#boot do var1 0 endon on power2#state==1 do add1 1 endon on var1#state==1 do backlog rule2 1; ruletimer1 5 endon on var1#state==2 do backlog rule2 0;power1 2; var1 0 endonrule1 on system#boot do var1 0 endon on switch1#state==1 do add1 1 endon on var1#state==1 do backlog rule2 1; ruletimer1 5 endon on var1#state==2 do backlog rule2 0;power1 2; var1 0 endon

    geändert.

    Beim ausschalten des Lichts muss ich die Rule wieder anstoßen also 2mal schalten damit er power1 toggelt.

    2 Mal editiert, zuletzt von bishop (24. Oktober 2020 um 21:48)

  • Moin.

    In deinem Code den du postest ist aber einiges durcheinander. Da kommt Deine Änderung auf power#state und dann ist aber meine komplett Rule noch mit drin

    Code
    rule1 on system#boot do var1 0 endon on power2#state==1 do add1 1 endon on var1#state==1 do backlog rule2 1; ruletimer1 5 endon on var1#state==2 do backlog rule2 0;power1 2; var1 0 endonrule1 on system#boot do var1 0 endon on switch1#state==1 do add1 1 endon on var1#state==1 do backlog rule2 1; ruletimer1 5 endon on var1#state==2 do backlog rule2 0;power1 2; var1 0 endon

    Soweit funktioniert es nur verkehrt herum,

    Stimmt. Weil der Switch#state ja auf EIN abfragt: switch1#state==1 (mein Fehler, hatte überlesen das du 2x Ausschalten geschrieben hast)

    Wenn du auf AUS abfragen möchtest dann switch1#state==0

    Habe jetzt tx als relais2i und rx als switch2 deklariert.

    Wenn, dann hättest Du den switchode auf 2 ändern müssen. ;)

    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 (26. Oktober 2020 um 07:29)