Number:speed in rule einbinden

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
udi
Beiträge: 26
Registriert: 31. Okt 2020 10:45
Answers: 0

Number:speed in rule einbinden

Beitrag von udi »

Hallo liebe Leute,

ich möchte mein Tor in der Einfahrt bei starkem Wind gerne automatisch schließen lassen. Die rule lege ich textbasiert an über VSC. Die Regel wird jede Minute durch einen Timer ausgelöst. Wenn die Windgeschwindkeit (wird über Openwaethermap geliefert) 19kmh/ überschreitet, wird der Toranstrieb ausgelöst. Leider funktioniert die Regel so nicht. Ich konnte das Problem auf die Geschwindigkeitseinheit eingrenzen (denke ich). OWM liefert die km/h als Number:Speed mit entsprechender Einheit. Dazu hatte ich recheriert und versucht das mit "|km/h" einzufangen. Aber ohne Erfolg.


rule "Sturmschutz"
when
Time cron "0 0/1 * * * ? *"
then
if(OneCallAPIweatherandforecast_Current_Windspeed.state >= 20|km/h)
Torantrieb.sendCommand(ON)
end
Hat hier jemand Erfahrungen oder einen Tipp?

Vielen Dank!!!

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

Re: Number:speed in rule einbinden

Beitrag von udo1toni »

Hatten wir das nicht schon?

Starte die Rule nicht mit Time cron, sondern mit Item OneCallAPIweatherandforecast_Current_Windspeed changed, alles andere ist sinnlos.
Versuche die Einheit in Anführungszeichen zu setzen oder alternativ entferne die Einheit:

Code: Alles auswählen

rule "Sturmschutz"
when
    Item OneCallAPIweatherandforecast_Current_Windspeed changed
then
    if(OneCallAPIweatherandforecast_Current_Windspeed.state >= 20|"km/h")
        Torantrieb.sendCommand(ON)
end
Alternativ:

Code: Alles auswählen

rule "Sturmschutz"
when
    Item OneCallAPIweatherandforecast_Current_Windspeed changed
then
    var wind = 0
    if(newState instanceof Number)
        wind = (newState as Number).floatValue
    if(wind >= 20)
        Torantrieb.sendCommand(ON)
end
Grundsätzlich kann die direkte Verwendung eines Status als Zahl gut gehen, sie kann aber auch fehlschlagen. Leider muss man vor dem Casting nach Number immer prüfen, ob es sich tatsächlich um eine Zahl handelt.
mit newState wird der Status des triggernden Items übergeben. Das funktioniert natürlich nicht, wenn die Rule händisch gestartet wird, wohl aber, wenn sich der Status ändert.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

udi
Beiträge: 26
Registriert: 31. Okt 2020 10:45
Answers: 0

Re: Number:speed in rule einbinden

Beitrag von udi »

Hi Udo,

nein und ja :P Wir hatten schon mal das Thema Tor. Aber nur in der Grundfunktionalität. Die "Sicherheitsmechanismen" und Komfortfunktionen, die ich jetzt anlege, sind neu.

Also lag es in meiner rule tatsächlich nur an den fehlenden Anführungsstrichen bei km/h? Ob ich einen cron oder die Änderung des windspeed items als Trigger nehme, sollte ja keinen Unterschied machen.

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

Re: Number:speed in rule einbinden

Beitrag von udo1toni »

Für die Rule als solche spielt der Trigger eine untergeordnete Rolle, aber es ist sinnlos, minütlich einen Wert zu vergleichen, der alle zwei Stunden aktualisiert wird. Genauso ist es nicht sinnvoll, alle 30 Minuten einen Wert zu prüfen, der sich vielleicht eine halbe Minute nach dem Test entscheidend ändert.
Du willst keine zyklische Prüfung, Du willst bei Aktualisierung des Werts eine Aktualisierung der Steuerung.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

udi
Beiträge: 26
Registriert: 31. Okt 2020 10:45
Answers: 0

Re: Number:speed in rule einbinden

Beitrag von udi »

Ja, das stimmt. Du hast natürlich recht. Danke dir Udo!!!

Antworten