Seite 1 von 1

Number:speed in rule einbinden

Verfasst: 4. Mär 2023 15:54
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!!!

Re: Number:speed in rule einbinden

Verfasst: 4. Mär 2023 17:25
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.

Re: Number:speed in rule einbinden

Verfasst: 4. Mär 2023 22:59
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.

Re: Number:speed in rule einbinden

Verfasst: 5. Mär 2023 02:22
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.

Re: Number:speed in rule einbinden

Verfasst: 5. Mär 2023 10:20
von udi
Ja, das stimmt. Du hast natürlich recht. Danke dir Udo!!!