Seite 1 von 2

Rollladensteuerung mit Funktaster

Verfasst: 23. Sep 2019 10:16
von ollis112
Hallo,

habe mal wieder eine Frage zu Rules:

Ich schalte mein Rollladen zusätzlich mit Funktaster und der Regel:

Code: Alles auswählen

rule Shutter A -Schließen
when
        Item Taster_A received update
then
        sendCommand(Shutter_A, 100)
end
Und entsprechend Taster_B mit befehl 0
Wie kann ich jetzt aber den Rollladen wärend der Fahrt stoppen?
Da gibt es doch bestimmt einen "IF" Zusatz für die Regel

Wäre für Tips sehr dankbar
Gruß
Oliver

Re: Rollladensteuerung mit Funktaster

Verfasst: 23. Sep 2019 12:53
von udo1toni
Ja, es gibt ein if (innerhalb des Execute-Blocks der Rule), das Problem ist hier aber, woran orientierst Du Dich? Dazu müsstest Du ja wissen, ob der Rollladen gerade fährt oder nicht. Varianten hierzu (abhängig davon, was der Rollladen bietet):
1. der Laden fährt immer nur in die Extrempositionen. -> Zeit messen, die der Rollladen zum Fahren von unten nach oben braucht. Timer einrichten, der beim Startbefehl gestartet wird. Wenn der Timer abläuft, wird nur der Timer gelöscht. Inder Rule kannst Du nun prüfen, ob der Timer existiert, falls das der Fall ist, schickst Du STOP.
2. der Laden soll auch in Zwischenpositionen stehen, dies wird vom Rollladen auch rückgemeldet, mit Zahlenwerten zwischen 0 und 100. -> Gleiche Vorgehensweise wie bei 1., allerdings muss die zu erwartende Laufzeit berechnet werden.
3. Wie 2., aber der Laden meldet nix zurück. -> openHAB muss die tatsächlichen Laufzeiten bestimmen und anhand der Referenzwerte und der Fahrtrichtung errechnen, wo sich der Laden befindet.

Da Du vermutlich keinen 3. Taster hast, wäre noch ein mögliche Variante, auszuwerten, ob kürzlich der andere Knopf gedrückt wurde (ebenfalls mittels Timer, aber nur für einen kleinen Zeitraum). Wenn beide Knöpfe kurz hintereinander gedrückt werden, bedeutet das dann Stop (oder auch, wenn der gleiche Taster zweimal innerhalb einer Sekunde gedrückt wurde...)

Jede der Varianten ist realisierbar, aber es wäre wichtig, erst mal zu klären, was Du möchtest.

Re: Rollladensteuerung mit Funktaster

Verfasst: 23. Sep 2019 13:08
von ollis112
Hallo Udo, vielen Dank erst mal,
für mich kommt hier nur die Variante 1 in Frage.
Dann werde ich mal die Zeit stoppen und mich an der Rule versuchen.
Wenn ich es nicht hin bekomme werde ich mich bestimmt nochmal melden. :D
Gruß
Oliver

Re: Rollladensteuerung mit Funktaster

Verfasst: 23. Sep 2019 13:20
von KlausGünther
Welche Rollädenaktoren hast Du denn ?

Nur als Beispiel: Bei den Qubino Shuttern kannst Du auch Werte zwischen 0 und 100 verschicken wenn Du die Geräte richtig eingerichtet hast.

Re: Rollladensteuerung mit Funktaster

Verfasst: 23. Sep 2019 13:34
von ollis112
Hallo Klaus,
ja ich habe so welche und mache das auch bei versch. Szenarien. (Sonnenstand im Sommer und so)
Aber hietr möchte ich einfach nur rauf-stopp-runter bzw umgekehrt , mit 2 Taster

Re: Rollladensteuerung mit Funktaster

Verfasst: 23. Sep 2019 13:47
von sihui
ollis112 hat geschrieben: 23. Sep 2019 13:34 ja ich habe so welche
... und damit funktioniert kein normales

Code: Alles auswählen

Itemname.sendCommand(STOP)
?

Re: Rollladensteuerung mit Funktaster

Verfasst: 23. Sep 2019 13:51
von ollis112
Doch das geht.
da ich aber nur 2 Taster habe, muss ich das mit dem Timer lösen.

Re: Rollladensteuerung mit Funktaster

Verfasst: 23. Sep 2019 14:24
von udo1toni
Einfache Variante:

Code: Alles auswählen

// globale Variablen immer zu Beginn der Datei definieren!
var Timer tStop = null

rule "Shutter A"
when
    Item Taster_A received update or                 // Taste Schließen gedrückt
    Item Taster_B received update                    // Taster Öffnen gedrückt
then
    if(tStop === null) {                             // Timer läuft nicht
        if(triggeringItem.name.contains("A"))        // Taste Schließen gedrückt
            Shutter_A.sendCommand(100)               // also schließen
        else                                         // Taste Öffnen gedrückt
            Shutter_A.sendCommand(0)                 // also öffnen
        tStop = createTimer(now.plusSeconds(30),[|   // und Timer starten
            tStop = null                             // Timer abgelaufen, also Timer löschen
        ])
    } else {                                         // Timer läuft
        Shutter_A.sendCommand(STOP)                  // also Stop
        tStop.cancel                                 // und Timer abbrechen
        tStop = null                                 // sowie löschen
    }
end
Bissi aufgehübscht und erklärt...

Re: Rollladensteuerung mit Funktaster

Verfasst: 23. Sep 2019 14:57
von ollis112
Ui,
ich glaube meine Versuche hätten gänzlich anders ausgesehen.
Danke Udo,
werde das mal so testen.
Gruß
Oliver

Re: Rollladensteuerung mit Funktaster

Verfasst: 23. Sep 2019 16:31
von udo1toni
Achtung, da waren diverse Fehler drin, weil mal schnell hingeschrieben ohne Zeit zum kontrollieren...

Jetzt hoffentlich ohne Fehler.