Heizungsrule und Verbesserungsmöglichkeiten

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

Moderatoren: Cyrelian, seppy

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

Re: Heizungsrule und Verbesserungsmöglichkeiten

Beitrag von udo1toni »

Wenn Du die Rule so weit unverändert übernommen hast, nein. Die Rule trigegrt über Member of ... changed, womit die implizite Variabel triggeringItem zur Verfügung steht. Oder löst Du die Rule über den Play-Knopf aus? das würde den Fehler erklären.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

MrCrashy
Beiträge: 113
Registriert: 2. Jan 2021 09:53

Re: Heizungsrule und Verbesserungsmöglichkeiten

Beitrag von MrCrashy »

Nein, die rule löse ich aus, indem ich über sie Sitemap bzw das UI die Raumtemperatur verändere

MrCrashy
Beiträge: 113
Registriert: 2. Jan 2021 09:53

Re: Heizungsrule und Verbesserungsmöglichkeiten

Beitrag von MrCrashy »

Ok, es war wie so oft, ein klarer Lesefehler meinerseits :D

Du hast in deinem Beispiel mit zwei Gruppen gearbeitet:
Einmal gHVAC_Mode
Einmal gHVAC_Modes

Und ich habe nur mit gHVAC_Modes gearbeitet. D.H ich habe auch bei dieser Abfrage:

Code: Alles auswählen

gHVAC_Mode.members.filter[h|
Mit gHVAC_Modes gearbeitet.

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

Re: Heizungsrule und Verbesserungsmöglichkeiten

Beitrag von udo1toni »

Ja, war spät, als ich den Post geschrieben habe, sonst wäre mir ein besseres Wording eingefallen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

MrCrashy
Beiträge: 113
Registriert: 2. Jan 2021 09:53

Re: Heizungsrule und Verbesserungsmöglichkeiten

Beitrag von MrCrashy »

Habe die Rule jetzt auch am laufen.
Falls jemand mal einen Fehler haben sollte, der beim triggern auftaucht. Der Fehler lautet:

Code: Alles auswählen

internal.handler.ScriptActionHandler] - Script execution of rule with UID 'lighting-1' failed: cannot invoke method public abstract java.lang.String org.openhab.core.items.Item.getName() on null in heating
Es hat was mit dem "Member of" zu tun. In OH3 gab es eine Änderung. Aus

Code: Alles auswählen

if(trigeringItem.name.cointains("Current")) 
Wird nun

Code: Alles auswählen

if(triggeringItemName.contains("Current"))

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

Re: Heizungsrule und Verbesserungsmöglichkeiten

Beitrag von udo1toni »

Nein, das stimmt so nicht.

triggeringItemName -> Der Name (als String) des Items, welches den Trigger Item ausgelöst hat.
: Item MeinItem changed -> triggeringItemName = "MeinItem"

triggeringItem -> Das Item (als Objekt), welches den Trigger Member of ausgelöst hat.
: Member of GroupItem changed (wobei MeinItem Teil der Gruppe ist und seinen Status geändert hat -> triggeringItem repräsentiert
MeinItem -> triggeringItem.name entspricht MeinItem.name) -> triggeringItem.name = "MeinItem"

Früher (in openHAB ab 1.x bis 2.5.12) gab es nur triggeringItem, welches auch beim Item-Trigger gefüllt wurde.
Dies ist in OH3.x nicht mehr der Fall, stattdessen gibt es nun zusätzlich die implizite Variable triggeringItemName, die aber anders funktioniert.

Allerdings ist da auch ein Tippfehler :) Es muss .contains() heißen, nicht .cointains() .contains -> engl. für "enthält".

Die gesamte DSL arbeitet mit Klartext Schlüsselworten, when, then, end, name, if, timer... Es ist also immer eine gute Idee, nicht nur stur Code abzutippen, sondern auch die Worte sinnhaft zu erfassen.

PS: Ich habe den Fehler oben korrigiert...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten