openhab 3 Rule Vergleich von zwei Werten eines Items

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
Benutzeravatar
Grisu27
Beiträge: 31
Registriert: 30. Jun 2021 14:44

openhab 3 Rule Vergleich von zwei Werten eines Items

Beitrag von Grisu27 »

Hallo 'Zusammen,
Ich versuche seit längerem eine Regel zu erstellen, die z.b. bei der Vollständigen ladung eines Akkus, die Stromversorgung der Steckdose abzuschalten.
Details:
Steckdosenschalter: Shelly 2.5 Relais (funktioniert)
Ansteuerung über MQTT Kanal (funktioniert)
Bisher habe ich folgende Regel erstellt, die funktioniert zwar kommt mir jedoch mehr als durch das Knie ins Auge geschossen vor.

Code: Alles auswählen

rule "Steckdose nach Ladevorgang ausschalten"
    when 
    Item L_K_LS changed
//Veränderung des Wertes des Leistungsanteils des Ladestromitems 
then
// um beim Einschalten der Steckdose nicht sofort wieder einen auszuschalt Befehlt zu setzen, soll 2 sec zum Hochfahren der Ladestation gewartet werden
    Thread :: sleep(20000)
// die Regel nach der abgeschaltet werden soll 
    if(L_K_LS.state  < 50) {
        S_K_LS.sendCommand (OFF)
        }
end
Also die Regel funktioniert, jedoch gehe ich davon aus, das ich die Regel auch so schreiben kann, dass wenn der Ladestromwert vom über 200 auf unter 50 fällt, die Steckdose geschaltet werden soll. Damit würde sich der Thread Teil erledigen da erst beim erreichen des Ladestromes mit einem Wert > 200 und nach Vollladung und dem Abfall des Ladestrom von über 200 auf unter 50 die Schaltung erfolgt.
Hat jemand eine Idee?

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

openhab 3 Rule Vergleich von zwei Werten eines Items

Beitrag von udo1toni »

Die einfache (saubere) Variante:

Code: Alles auswählen

var Boolean bLaden = false                                   // Merker für Abschaltung

rule "Steckdose nach Ladevorgang ausschalten"
when 
    Item L_K_LS changed                                      // Ladestrom geändert
then
    if(!(L_K_LS.state instanceof Number))                    // falls kein gültiger Wert
        return;                                              // Abbruch
    val Number nLadung = (L_K_LS.state as Number).floatValue // Wert in lokaler Konstante speichern
    if(nLadung > 200)                                        // falls größer 200
        bLaden = true                                        // globalen Merker setzen
    if(bLaden && nLadung < 50) {                             // Falls Merker gesetzt und Wert unter 50
        S_K_LS.sendCommand(OFF)                              // Abschalten
        bLaden = false                                       // globalen Merker löschen
    }
end
Die Rule triggert bei jeder Wertänderung.
Zunächst wird geprüft, ob der Status eine gültige Zahl enthält.
Ist das nicht der Fall, wird die Rule abgebrochen.
Ansonsten wird der Wert in eine lokale Konstante gespeichert.
Anschließend wird geprüft, ob der Wert über 200 liegt.
Ist das der Fall, wird der globale Merker gesetzt.
Zum Schluss wird geprüft, ob der Wert unter 50 liegt und der Merker gesetzt ist. Da die Rule den Merker nur setzt, wenn der Wert über 200 ist, und der Merker beim Start von openHAB nicht gesetzt wird, ist diese Bedingung nur erfüllt, wenn der Wert zuvor über 200 war.
Ist die Bedingung erfüllt, so wird die Steckdose abgeschaltet und der Merker wieder gelöscht.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Grisu27
Beiträge: 31
Registriert: 30. Jun 2021 14:44

Re: openhab 3 Rule Vergleich von zwei Werten eines Items

Beitrag von Grisu27 »

Mal wieder eine super Hilfe!Top vielen Dank, funzt einwandfrei!

Benutzeravatar
Grisu27
Beiträge: 31
Registriert: 30. Jun 2021 14:44

Re: openhab 3 Rule Vergleich von zwei Werten eines Items

Beitrag von Grisu27 »

Hi, eine kleine Änderung, das letzte Setzen des Merkers darf nicht true sein sondern fals damit der Merker wieder zurück gesetzt wird

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

Re: openhab 3 Rule Vergleich von zwei Werten eines Items

Beitrag von udo1toni »

Ja, Tippfehler meinerseits. Hab’s oben korrigiert…


Gesendet von iPad mit Tapatalk
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten