OpenHab 2 Rules Addon Verzögerung?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
NeticsDE
Beiträge: 4
Registriert: 8. Sep 2018 07:30
Answers: 0

OpenHab 2 Rules Addon Verzögerung?

Beitrag von NeticsDE »

Hallo,

zurzeit nutze ich das openHab2 auf meine Raspberry. Alles funktioniert auch wirklich super zuverlässig. Ich habe nun das Problem das wenn ich eine Regel erstelle mit meinen Kriterien schaltet er es zwar super, doch mein LED Controller schaltet zu langsam. Er verschluckt dann Befehle. Zur Erklärung

Wenn

XYZ

Dann

An
Color XYZ
Off

Aber nur wenn

XYZ

Ich brauche aber nach ON eine kleine Pause und nach dem Farbwechsel auch eine kleine Pause bis er dann wieder aus geht.


Ich nutze die PaperUI das für mein Verwendungszweck auch wirklich reicht. Nur er prügelt die Befehle einfach zu schnell durch sodass einfach der Farbwechsel nicht durch kommt bzw nur sporadisch.

Gibt es da eine Lösung oder muss ich zwingend auf diverse Tools umsteigen wie es sich eigentlich gehört? Wenn das zu vermeiden ist würde ich das wirklich bevorzugen.

LG Jan

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

Re: OpenHab 2 Rules Addon Verzögerung?

Beitrag von udo1toni »

Die Next Generation Rules sind immer noch experimentell. In den "alten" Rules ist diese Problem keines, wahlweise (wenn die Pause wirklich klein sein soll) mit einem kurzen Thread::sleep() (weniger als 500 Millisekunden) oder mit einem internen Timer. Die Syntax ist auch einfach und fast alle Rules, die in den diversen Foren zu finden sind, laufen in der alten Rule Engine. Konkret sähe das so aus:

Code: Alles auswählen

var Timer myTimer = null                                    // Timer Variable definieren
var Number nStep = 0                                        // Zähler Variable definieren

rule "Farbalarm"                                            // Rule Name
when
    Item XYZ received command                               // Trigger
then                                                        // Tu das
    if(ZYX.state == ON) {                                   // aber nur falls
        myTimer?.cancel                                     // falls ein Timer aktiv ist, canceln
        nStep = 0                                           // Zähler initialisieren
        myTimer = createTimer(now, [|                       // Timer anlegen (und sofort ausführen)
            nStep ++                                        // Zähler erhöhen
            switch nStep {                                  // selektiv nach Zähler
                case 1 : {                                  // falls 1
                    abc.sendCommand(ON)                     // einschalten
                    myTimer.reschedule(now.plusMillis(500)) // Timer neu planen (in 500 Millisekunden)
                }
                case 2 : {                                  // falls 2
                    abc.sendCommand(color as HSBType)       // Farbe setzen
                    myTimer.reschedule(now.plusSeconds(15)) // Timer neu planen (in 15 Sekunden)
                }
                default : {                                 // ansonsten
                    abc.sendCommand(OFF)                    // ausschalten
                    myTimer = null                          // Timervariable leeren
                }
            }
        ])
    }
end
Diese Rule ist eine kleine State Maschine, da sie nur eine Steuergröße hat, könnte man es auch als Chaser bezeichnen. Die Befehle sollten einigermaßen selbsterklärend sein. Natürlich sind einige Teile nur angedeutet, da Du in Deinem Posting auch nur allgemein beschrieben hast.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten