Rule mit Feedback -> Lampen blinken

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
mad-mike
Beiträge: 403
Registriert: 6. Jan 2021 18:05
Answers: 2

Rule mit Feedback -> Lampen blinken

Beitrag von mad-mike »

Hallo zusammen.

Ich möchte eine ""Feedback"" Kontrolle, wenn ich ein Taster drücke.
Besagter Taster ist neben der Haustür, und wird beim verlassen des Hauses einmal gedrückt, -> Zack sind alle Lampen aus.

nun habe ich dies so gelöst:

Code: Alles auswählen

rule "Zentral_off"
when

    Channel "shelly:shelly25-relay:784c5f2ecc:relay2#button" triggered SHORT_PRESSED or         //Taster - Haustür
    Item Zentral_taster changed to ON                                           //APP


then

    Shelly107_Betrieb.sendCommand(if(Shelly107_Betrieb.state != ON) ON else OFF)  
    Thread::sleep(500)
    Shelly107_Betrieb.sendCommand(if(Shelly107_Betrieb.state != ON) ON else OFF)  
    Thread::sleep(500)
    Shelly107_Betrieb.sendCommand(if(Shelly107_Betrieb.state != ON) ON else OFF)  
    Thread::sleep(500)
    Shelly107_Betrieb.sendCommand(if(Shelly107_Betrieb.state != ON) ON else OFF)  
    Thread::sleep(1000)
    Lampe.sendCommand(OFF)                                                      //Gruppe OFF
    HTTPURLThing_km7.sendCommand(ON)                                            //Relai ON
    Zentral_taster.sendCommand(OFF)                                             //APP Schalter
    
end
Jedoch weiß ich, das hier einige User Verbesserungs Vorschläge haben, um das ganze zu optimieren.

Nun wollte ich mal ganz nett fragen, ob man das so realisiert, oder ob man auch dies optimieren kann??

Danke und Gruss
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

Benutzeravatar
udo1toni
Beiträge: 13984
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Rule mit Feedback -> Lampen blinken

Beitrag von udo1toni »

Naheliegend wäre, einen Timer zu nutzen :)

Code: Alles auswählen

var Timer tZentralAus = null                                                                // ein Zeiger für einen Timer
var Integer iZentralAus                                                                     // ein Zähler
val Integer iMio = 1000000

rule "Zentral_off"
when
    Channel "shelly:shelly25-relay:784c5f2ecc:relay2#button" triggered SHORT_PRESSED or     // Taster - Haustür
    Item Zentral_taster changed to ON                                                       // APP
then
    tZentralAus?.cancel                                                                     // Falls Timer existiert, weg damit
    iZentralAus = 5                                                                         // Zähler initialisieren
    tZentralAus = createTimer(now.plusNanos(10*iMio), [|                                    // Timer anlegen und fast sofort starten
        iZentralAus-=1                                                                      // Zähler runterzählen
        if(iZentralAus < 1) {                                                               // falls am Ende angekommen
            Lampe.sendCommand(OFF)                                                          // Gruppe OFF
            HTTPURLThing_km7.sendCommand(ON)                                                // Relais ON
            Zentral_taster.sendCommand(OFF)                                                 // APP Schalter
        } else {                                                                            // ansonsten
            Shelly107_Betrieb.sendCommand(if(Shelly107_Betrieb.state != ON) ON else OFF)    // toggle Relais
            tZentralAus.reschedule(now.plusNanos((if(iZentralAus > 1) 500 else 1000)*iMio)) // plane den Timer erneut ein
        }
    ])
end
Da JavaTime kein plusMillis() kennt, muss es plusNanos() sein, was um den Faktor Million größere Zahlen bedeutet. Die Zahlen kann man natürlich auch ausschreiben :) dann kann man sich auch die eine oder andere Klammer sparen.

Relais ist übrigens Singular und Plural, blöde Franzosen...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 403
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Rule mit Feedback -> Lampen blinken

Beitrag von mad-mike »

Danke.
Funktioniert auf Anhieb.
;)
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

Antworten