Regel Openhab

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Regel Openhab

Beitrag von Markus_JE »

Hallo zusammen,

ich würde gerne ab einer bestimmten INnentemperatur die Jalousien auf 50% fahren.
Meine Regle dafür wäre:


rule "Sonnenschutz"
when
Item Indoor_Temp changed //FUNKTIONIERT

then
if
(Indoor_Temp >= 22.5)
{
EGSchiebetuere.sendCommand(10)
EGBlumenfenster.sendCommand(10)
EGWohnzimmer.sendCommand(10)
EGBalkontuere.sendCommand(10)
}
end

Leider stimmt etws in der Zeile " (Indoor_Temp >= 22.5) " nicht.
Ich bekomme immer die Fehlermeldung Unknown variable or command '>='; line 68, column 7, length 19

Kann mir jemand weiterhelfen?

Besten Dank

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Regel Openhab

Beitrag von peter-pan »

Markus_JE hat geschrieben: 11. Mai 2020 10:57 Kann mir jemand weiterhelfen?
...bestimmt ;) .

Poste mal dein Item. Das ist bestimmt ein Quantity-Typ.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Re: Regel Openhab

Beitrag von Markus_JE »

Hi,

anbei das item:
Number:Temperature Indoor_Temp "Temperature [%.1f %unit%]" <temperature> { channel = "netatmo:NAMain:home:Wohnzimmer:Temperature" }

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

Re: Regel Openhab

Beitrag von udo1toni »

Indoor_Temp ist ein Item. Im Vergleich möchtest Du den Status des Items verwenden. Entsprechend musst Du ein .state anhängen. Damit das Ganze komplett sicher ist, sollte die Rule eher so aussehen:

Code: Alles auswählen

rule "Sonnenschutz"
when
    Item Indoor_Temp changed 
then
    if(!(Indoor_Temp.state instanceof Number)) {
        logWarn("sunprotect","Indoor_Temp liefert keine Zahl! ({})",Indoor_Temp.state)
        return;
    }

    if((Indoor_Temp.state as Number).floatValue >= 22.5) {
        EGSchiebetuere.sendCommand(10)
        EGBlumenfenster.sendCommand(10)
        EGWohnzimmer.sendCommand(10)
        EGBalkontuere.sendCommand(10)
    }
end
Der erste Vergleich fängt die Situation ab, dass der Status des Items keine gültige Temperatur enthält, sondern z.B. NULL oder UNDEF.
Das Konstrukt (Indoor_Temp.state as Number).floatValue schneidet die Einheit °C von der Temperatur ab.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Regel Openhab

Beitrag von peter-pan »

Udo hat's schon gelöst. Wollte dir den gleichen Tipp geben.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Re: Regel Openhab

Beitrag von Markus_JE »

Hammer,
vielen Dank an euch! Funktioniert.

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Re: Regel Openhab

Beitrag von Markus_JE »

Hallo zusammen,

ich habe das Problem das eine Regel nicht ausgeführt wird. Wenn ich allerdings die Uhrzeit abändee zum testen funktioniert sie.
Eigentlich ein echt banales Ding. Fehlermeldungen im Logging bekomme ich auch nicht.
Hat da jemand eine Idee was das Problem sein kann?
Der Code der rules datei anbei.

//rule "Beschattung Eltern um 1:00 Uhr schliessen"
rule "beschattungschliessen"
when
Time cron " 0 0 1 ? * * "
then {
DGEltern.sendCommand(DOWN)
}
end

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

Re: Regel Openhab

Beitrag von udo1toni »

Code bitte immer als Code markieren :)

Die Leerzeichen um den cron Ausdruck sind eher unüblich. Die geschweiften Klammern sind falsch. Die Rule sollte eigentlich eher so aussehen:

Code: Alles auswählen

rule "Beschattung schließen"
when
    Time cron "0 0 1 ? * *" // üblicher: "0 0 1 * * ?"
then
    DGEltern.sendCommand(DOWN)
end
Um zu sehen, ob die Rule getriggert wird, kannst Du eine Logmeldung einbauen:

Code: Alles auswählen

logInfo("schatten","DGEltern wird geschlossen.")
(entweder nach oder vor dem .sendCommand)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Re: Regel Openhab

Beitrag von Markus_JE »

Hi Udo,

danke dir jetzt funkitoniert est super.
Sag mal wie kann ich denn den Code so einfügen wie du das wünscht?

Pepe1907
Beiträge: 167
Registriert: 1. Jun 2020 17:29
Answers: 2

Re: Regel Openhab

Beitrag von Pepe1907 »

Vollständigen Editor Öffnen und dann hast du oben mehrere Balken da gibt es den Balken </>
Da fügst du deinen Code zwischen den beiden code in den eckigen klammern ein

Antworten