Tasmota Rule Relais abschalten bei erreichen Endschalter

  • Hallo Zusammen,

    ich bin etwas ratlos. ich möchte mit einem ESP01 mit Tasmota folgendes erreichen:

    -ein Relais on/off -> das ist kein Problem

    -mit einem Endschalter bei erreichen der Endlage immer sicher das Relais abschalten

    -meine Config:

    GPIO3 hat ist ein Switch

    GPIO2 ist ein Relais-Ausgang

    folgende Schritte habe ich erreicht:

    SetOption114 1 um die direkte Verbindung Relais-Schalter zu lösen

    switchmode2 2

    Eine Rule ist erstellt:

    Rule1 ON 
    Switch2#State==1 DO Power1 OFF 
    ENDON

    Rule1 1

    Damit geht es einmalig, das Problem: Hat der Endschalter bereits ausgelöst, wenn ich Power1 ON schalte, geht das Relais an, obwohl der Endschalter immer noch ausgelöst hat.

    Muss ich hier eine endlose / persitant Auslösung der Rule Aktivieren oder habe ich einen anderen Gedankenfehler?

    4 Mal editiert, zuletzt von lara (20. September 2024 um 05:23)

  • Zur hilfreichsten Antwort springen
    • Offizieller Beitrag

    Hi

    was kommt den in der Konsole, wenn du nur "rule1" eingibst?

    ändere doch mal den Syntax (nur ein "="):

    on switch2#state=1 do power1 0 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

  • Vielen Dank für eure Antworten

    ändere doch mal den Syntax (nur ein "="):
    -> ich hatte es so gelesen bei ON/OFF ein=, bei Zahlenvergleich zwei==
    habe aber beides schon ausprobiert und grundsätzlich funktioniert es ja, aber nur einmalig bei auslösen des Triggers und dann nie wieder


    Ein weiteres Relais organisiert den Gegenrichtungslauf des Motors? - Verriegelung der Relais usw.
    ->ehrlich gesagt war das nur ein plakatives Beispiel, eigentlich will ich den Trockenlauf einer Pumpe verhindern (Schwimmerschalter), daher gibt es nur 1 Relais an/aus :)

    • Hilfreichste Antwort
    Code
    rule1
    ON switch2#State=1 DO Backlog VAR1 1; power1 0 ENDON
    ON switch2#State=0 DO Backlog VAR1 0; power1 1 ENDON
    ON POWER1#State=1 DO ADD1 1 ENDON
    ON POWER1#State=0 DO VAR1 1 ENDON
    ON VAR1#State>1 DO Power1 0 ENDON

    Das könnte ein erster Test bei dir sein.

    Ein Versuch einen Trigger auszulösen wenn power1 bedient wird. Nachteil es wir kurz anlaufen, aber für einen Trockenlaufschalter wird es ausreichen um einenmanuellen Start auf dem WEBUI-Button zu unterbinden.

  • Damit wird das Wiederanschalten zuverlässig verhindert - gut soweit

    Jedoch geht nun die Pumpe aber immer wieder an, sobald der Schalter aus ist, auch wenn ich das Relais manuell auf OFF setzte
    Das sollte auch nicht passieren, ist etwas vertrackt...

    so klappt es wie ich es mir vorstelle, vielen Dank!!

    rule1
    ON switch2#State=1 DO Backlog VAR1 1; power1 0 ENDON
    ON switch2#State=0 DO Backlog VAR1 0 ENDON
    ON POWER1#State=1 DO ADD1 1 ENDON
    ON POWER1#State=0 DO VAR1 1 ENDON
    ON VAR1#State>1 DO Power1 0 ENDON

    Einmal editiert, zuletzt von lara (20. September 2024 um 23:06)

  • lara 20. September 2024 um 23:06

    Hat einen Beitrag als hilfreichste Antwort ausgewählt.
  • Wenn das Ziel damit erreicht ist kann noch eine Optimierung in der OFF-Rückstellung durch eine 2. Rule versucht werden, die sicherlich etwas schneller auslöst bei "verbotener" WEBUI-Nachschaltung.

    rule2 1

    rule1
    ON switch2#State=1 DO Backlog VAR1 1; power1 0 ENDON
    ON switch2#State=0 DO VAR1 0 ENDON
    ON POWER1#State=1 DO ADD1 1 ENDON
    ON POWER1#State=0 DO VAR1 1 ENDON

    rule2
    ON VAR1#State>1 DO Power1 0 ENDON


    PS: Danke für den Kelch :thumbup:

  • Ich habe noch etwas rumprobiert, da die variable var1 bei jedem power1 on um eins hochgezählt wird, jedoch nur bei switch=0 auf 0 gesetzt wird, wurde bei wiederholtem power on/off das Relais immer wieder off gestellt (da var dann immer weiter hochgezählt wurde)

    nach einigem probieren habe ich dann doch die "einfache" Variante mit if gewählt, die nun immer zuferlässig funktioniert:

    rule1
    ON switch2#State=1 DO Backlog VAR1 1; power1 0 ENDON
    ON switch2#State=0 DO VAR1 0 ENDON
    ON POWER1#State=1 DO IF(%var1%==1) Power1 0 ENDIF ENDON