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
OpenHab 2 Rules Addon Verzögerung?
- udo1toni
- Beiträge: 15246
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OpenHab 2 Rules Addon Verzögerung?
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:
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.
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
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet