Heizungsrule und Verbesserungsmöglichkeiten
- udo1toni
- Beiträge: 13948
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Heizungsrule und Verbesserungsmöglichkeiten
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
-
- Beiträge: 113
- Registriert: 2. Jan 2021 09:53
Re: Heizungsrule und Verbesserungsmöglichkeiten
Nein, die rule löse ich aus, indem ich über sie Sitemap bzw das UI die Raumtemperatur verändere
-
- Beiträge: 113
- Registriert: 2. Jan 2021 09:53
Re: Heizungsrule und Verbesserungsmöglichkeiten
Ok, es war wie so oft, ein klarer Lesefehler meinerseits
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:
Mit gHVAC_Modes gearbeitet.
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|
- udo1toni
- Beiträge: 13948
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Heizungsrule und Verbesserungsmöglichkeiten
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
-
- Beiträge: 113
- Registriert: 2. Jan 2021 09:53
Re: Heizungsrule und Verbesserungsmöglichkeiten
Habe die Rule jetzt auch am laufen.
Falls jemand mal einen Fehler haben sollte, der beim triggern auftaucht. Der Fehler lautet:
Es hat was mit dem "Member of" zu tun. In OH3 gab es eine Änderung. Aus
Wird nun
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
Code: Alles auswählen
if(trigeringItem.name.cointains("Current"))
Code: Alles auswählen
if(triggeringItemName.contains("Current"))
- udo1toni
- Beiträge: 13948
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Heizungsrule und Verbesserungsmöglichkeiten
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...
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