rule "Heizung aus bei offenem Fenster"
when
Item Kinderzimmerfenster changed
then
if(Kinderzimmerfenster.state == OPEN) {
HvacModeKinderzimmer.sendCommand("OFF")
OperationModeKinderzimmer.sendCommand("MANUAL")
} else {
HvacModeKinderzimmer.sendCommand("HEAT")
OperationModeKinderzimmer.sendCommand("SCHEDULE")
}
end
Bin etwas ratlos...
Hier noch das vom Schlafzimmer kurz vorher, das lief ohne Probleme
2019-10-21 19:24:46.800 [vent.ItemStateChangedEvent] - Schlafzimmerfenster changed from CLOSED to OPEN
2019-10-21 19:24:47.050 [ome.event.ItemCommandEvent] - Item 'HvacModeSchlafzimmer' received command OFF
2019-10-21 19:24:47.054 [ome.event.ItemCommandEvent] - Item 'OperationModeSchlafzimmer' received command MANUAL
2019-10-21 19:24:47.056 [nt.ItemStatePredictedEvent] - HvacModeSchlafzimmer predicted to become OFF
2019-10-21 19:24:47.060 [nt.ItemStatePredictedEvent] - OperationModeSchlafzimmer predicted to become MANUAL
2019-10-21 19:24:47.066 [vent.ItemStateChangedEvent] - HvacModeSchlafzimmer changed from HEAT to OFF
2019-10-21 19:24:47.068 [vent.ItemStateChangedEvent] - OperationModeSchlafzimmer changed from SCHEDULE to MANUAL
rule "Heizung aus bei offenem Fenster"
when
Item Schlafzimmerfenster changed
then
if(Schlafzimmerfenster.state == OPEN) {
HvacModeSchlafzimmer.sendCommand("OFF")
OperationModeSchlafzimmer.sendCommand("MANUAL")
} else {
HvacModeSchlafzimmer.sendCommand("HEAT")
OperationModeSchlafzimmer.sendCommand("SCHEDULE")
}
end
Damit kannst Du sehen, ob die Rule tatsächlich nicht getriggert wird.
Die Meldung wird in openhab.log ausgegeben, das changed event wird in events.log ausgegeben, aber beides mit einem Zeitstempel, kann man also gut prüfen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
Hab ich gemacht. Die Rules laufen jetzt sauber ab. Kann es sein das der Fehler darin lag, das ich die ganzen Rules immer gleich benannt hatte, also nicht die Datei, sondern in der Rule selber? Hab jetzt alles abgeändert das sie nur einmal vorkommen.
Ja, Namen dürfen niemals identisch sein. Man darf natürlich ein Item exakt so benennen, wie einen Channel (auch wenn ich persönlich nichts davon halte) und auch eine Rule identisch zu einem Item benennen, aber eben keine zwei Items identisch und genauso keine zwei Rules identisch.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
Könnte man denn in eine Rule Datei mehrere Regeln reinnehmen? Also z.b. eine Datei namens Lüften.rules und dann die ganzen separaten Zimmer untereinander in dieser Datei? Habe momentan nämlich für jede Rule eine eigene Datei erstellt.
Du kannst beliebig viele Rules in eine Datei packen. Eine Aufteilung in mehrere Dateien hat Vor- und Nachteile.
Vorteile:
Die Dateien sind kleiner. die Prüfung des Codes dauert so nur kurze Zeit, speziell beim Entwickeln von Rules ist das angenehm.
Wenn man einen kolossalen Fehler in eine Rule einbaut, ist nur diese Rule davon betroffen, auch wenn das File als Ganzes nicht mehr geladen wird.
Eine Systen started Rule wird nur dann (zusätzlich zum Systemstart) gestartet, wenn die betreffende Datei neu gespeichert wurde, also, wenn die Rule selbst verändert wurde - es gibt ja nur die eine Rule...
Nachteile:
Man kann nicht von globalen Variablen profitieren (als Ausweg muss man zwingend Items verwenden, um Zustände ruleübergreifend zu speichern.
Man muss eventuell mehrere Fenster offen halten, um Code zu vergleichen, speziell wenn man ineinandergreifende Rules hat, kann das irritieren.
openHAB muss mehr Dateien einlesen, was die Startzeit eventuell verschlechtert (ich hab dazu aber keine belastbaren Zahlen, vielleicht wird das durch die geringere Größe der Dateien aufgewogen)
Das gleiche gilt übrigens für *.items und *.things Dateien - letztlich ist es Geschmacksache, wie man die Dateien organisiert.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet