Meldung Waschmaschine wenn fertig
- peter-pan
- Beiträge: 2758
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Meldung Waschmaschine wenn fertig
Läuft dein VSC auf einer Windows-Maschine ?
Hier ein Link auf einen Thread im internationalen Forum ? Evtl. könnte es daran liegen, dass du deinen OH-conf-Ordner nicht mit einem Netzwerklaufwerk verbunden hast.
Hier ein Link auf einen Thread im internationalen Forum ? Evtl. könnte es daran liegen, dass du deinen OH-conf-Ordner nicht mit einem Netzwerklaufwerk verbunden hast.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian
- Snatsch
- Beiträge: 455
- Registriert: 9. Jan 2021 22:55
Re: Meldung Waschmaschine wenn fertig
Ja VSC läuft auf meinen Windows Rechner. Ich habe ja alle meine Rules über VSC eingerichtet und das ist die einzige wo der Fehler kommt.
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz
- Snatsch
- Beiträge: 455
- Registriert: 9. Jan 2021 22:55
Re: Meldung Waschmaschine wenn fertig
jetzt geht es, in meinem OH-conf-Ordner unter Settings war irgendwie der openhab.connection.authToken nicht gespeichert. Keine Ahnung warum er da nur bei der einen Rule rumgemeckert hat. Vor allen habe ich die gleiche Rule auch für meinen Trockner und da kam die Fehlermeldung nicht.
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz
-
- Beiträge: 238
- Registriert: 29. Jul 2020 12:40
Re: Meldung Waschmaschine wenn fertig
udo1toni hat geschrieben: ↑17. Mai 2021 15:05 Ich gehe mal davon aus, dass Du mit der Boolean Variable verhindern willst, dass Du ständig eine Meldung erhältst?
Ist das Item BatteryLevelKZ vom Typ Number? Oder ist es doch eher vom Typ Number:Dimensonless? Dann sollte die Rule eher so aussehen;Durch die Verwendung der lokalen Konstanten wird der Code kompakter. Der Vergleich sollte den vollständigen Wertebereich umfassen, also auch die 30 selbst beinhalten (deshalb >=)Code: Alles auswählen
var Boolean bBatterieKZ = false rule "Batterie Thermoastat GWC" when Item BatteryLevelKZ changed then val nLevel = (BatteryLevelKZ.state as Number).intValue if(!bBatterieKZ && nLevel >= 30) bBatterieKZ = true if(bBatterieKZ && nLevel < 30) { sendTelegram("Sascha","Thermostat Gäste WC Batterie 30%") bBatterieKZ = false } end
Da diese Rule nun funktioniert wie ich es wollte, würde ich das gleiche für zwei weitere Thermostate einrichten wollen.
Einfach kopieren und Items anders benennen?
Openhab 2 auf RaspberryPi 4
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Meldung Waschmaschine wenn fertig
Kannste so machen, ist dann halt kacke. 
Richtig erledigt man das, indem man die NAmen der Items günstig wählt, die Items in Gruppen zusammenfasst und dann eine Rule erstellt, die sich um alle gleichartigen Items kümmert.
Im vorliegenden Fall muss bBatterieKZ zusätzlich als Array definiert werden, für jeden Thermostaten eine Boolean Variable.
Alternativ legst Du stattdessen Switch Items an, in denen Du speicherst, ob eine Warnmeldung ausgegeben wurde. Da Du diese Items persistieren kannst, hat das auch den Vorteil, dass Du auch nach einem Neustart von openHAB nicht alle Meldungen erneut bekommst.

Richtig erledigt man das, indem man die NAmen der Items günstig wählt, die Items in Gruppen zusammenfasst und dann eine Rule erstellt, die sich um alle gleichartigen Items kümmert.
Im vorliegenden Fall muss bBatterieKZ zusätzlich als Array definiert werden, für jeden Thermostaten eine Boolean Variable.
Alternativ legst Du stattdessen Switch Items an, in denen Du speicherst, ob eine Warnmeldung ausgegeben wurde. Da Du diese Items persistieren kannst, hat das auch den Vorteil, dass Du auch nach einem Neustart von openHAB nicht alle Meldungen erneut bekommst.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 238
- Registriert: 29. Jul 2020 12:40
Re: Meldung Waschmaschine wenn fertig
Items könnte ich umbenennen. Sind bloß drei.
Wie müsste ich die Gruppen machen? Und wie müsste die Rule aussehen?
Danke schonmal
Wie müsste ich die Gruppen machen? Und wie müsste die Rule aussehen?
Danke schonmal
Openhab 2 auf RaspberryPi 4
-
- Beiträge: 238
- Registriert: 29. Jul 2020 12:40
Re: Meldung Waschmaschine wenn fertig
Wie müsste das denn aussehen?udo1toni hat geschrieben: ↑27. Jun 2021 16:10 Kannste so machen, ist dann halt kacke.
Richtig erledigt man das, indem man die NAmen der Items günstig wählt, die Items in Gruppen zusammenfasst und dann eine Rule erstellt, die sich um alle gleichartigen Items kümmert.
Im vorliegenden Fall muss bBatterieKZ zusätzlich als Array definiert werden, für jeden Thermostaten eine Boolean Variable.
udo1toni hat geschrieben: ↑27. Jun 2021 16:10Alternativ legst Du stattdessen Switch Items an, in denen Du speicherst, ob eine Warnmeldung ausgegeben wurde. Da Du diese Items persistieren kannst, hat das auch den Vorteil, dass Du auch nach einem Neustart von openHAB nicht alle Meldungen erneut bekommst.
Openhab 2 auf RaspberryPi 4
-
- Beiträge: 238
- Registriert: 29. Jul 2020 12:40
Re: Meldung Waschmaschine wenn fertig
Wie kann ich denn jedem Thermostaten eine Variable geben?
Wie definiere bBatterieKZ als array?
Wie definiere bBatterieKZ als array?
Openhab 2 auf RaspberryPi 4
-
- Beiträge: 238
- Registriert: 29. Jul 2020 12:40
Re: Meldung Waschmaschine wenn fertig
udo1toni hat geschrieben: ↑27. Jun 2021 16:10 Kannste so machen, ist dann halt kacke.
Richtig erledigt man das, indem man die NAmen der Items günstig wählt, die Items in Gruppen zusammenfasst und dann eine Rule erstellt, die sich um alle gleichartigen Items kümmert.
Im vorliegenden Fall muss bBatterieKZ zusätzlich als Array definiert werden, für jeden Thermostaten eine Boolean Variable.
Alternativ legst Du stattdessen Switch Items an, in denen Du speicherst, ob eine Warnmeldung ausgegeben wurde. Da Du diese Items persistieren kannst, hat das auch den Vorteil, dass Du auch nach einem Neustart von openHAB nicht alle Meldungen erneut bekommst.
Kannst du mir hier eventuell noch weiterhelfen?
Openhab 2 auf RaspberryPi 4
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Meldung Waschmaschine wenn fertig
Ja, sicher. Leider habe ich das Thema nicht angezeigt bekommen...
also, ausgehend von Deiner Rule oben:
Nehme ich mal an, dass die anderen Items, um die es geht, dann ebenfalls mit BatteryLevel beginnen. Wie erwähnt wäre es vermutlich das einfachste, die Boolean Variable durch einen Switch zu ersetzen. Ich nenne das Item dann der Einfachheit halber AlarmBatteryLevelKZ, die Status sind ON und OFF.
Der Trick ist nun, alle gleichartigen Items in zwei Gruppen zusammenzufassen, ich nenne diese Gruppen mal gBatteryLevel und gAlarmBatteryLevel. Letztlich sind aber die Group Namen egal, genauso wie der Typ. Nun muss die Rule noch etwas geändert werden:
Der eigentliche Trick besteht darin, die Namen der Items so zu wählen, dass man aus dem einen Namen den anderen Namen direkt ableiten kann.
Damit in der Message ein Klartextname genannt werden kann, muss dieser aus dem Label abgeleitet werden können. Es bietet sich an, hierfür das Label der Alarm Switches oder evtl. sogar des Original Items zu verwenden.
Sollte es noch andere Geräte als nur Thermostate geben, man die Label nur entsprechend anpassen und das Telegramm einkürzen, so dass das Wort "Thermostat " auch im Label vorkommt.
Wenn es komplexer wird, bietet es sich an, die Namensteile durch _ voneinander zu trennen, z.B. Battery_Level_KZ. Dann kann man mittels .name.split("_").get(2) z.B. auf den letzten Namensteil zugreifen (get() arbeitet 0-indiziert).
Für den Fall, dass ein Item keinen gültigen Wert liefert, wird ein Eintrag ins Log geschrieben und die Rule bricht ab.
also, ausgehend von Deiner Rule oben:
Code: Alles auswählen
var Boolean bBatterieKZ = false
rule "Batterie Thermoastat GWC"
when
Item BatteryLevelKZ changed
then
val nLevel = (BatteryLevelKZ.state as Number).intValue
if(!bBatterieKZ && nLevel >= 30)
bBatterieKZ = true
if(bBatterieKZ && nLevel < 30) {
sendTelegram("Sascha","Thermostat Gäste WC Batterie 30%")
bBatterieKZ = false
}
end
Der Trick ist nun, alle gleichartigen Items in zwei Gruppen zusammenzufassen, ich nenne diese Gruppen mal gBatteryLevel und gAlarmBatteryLevel. Letztlich sind aber die Group Namen egal, genauso wie der Typ. Nun muss die Rule noch etwas geändert werden:
Code: Alles auswählen
rule "Batterie Level"
when
Member of gBatteryLevel changed // Trigger auf Group-Member change
then
val nLevel = if(newState instanceof Number) (newState as Number).intValue else -1 // Lese den Level
val String strItem = triggeringItem.name // Der Name des Items, welches die Rule ausgelöst hat
val mySwitch = gAlarmBatteryLevel.members.filter[i|i.name endsWith(strItem)].head // Suche das passende Alarm Item heraus
val strLabel = mySwitch.label // oder triggeringItem.label, wenn das Label passt
if(nLevel < 0) {
logWarn("batlevel","Achtung! Sensor {} lieferte keine Zahl: {}",strItem,newState)
return;
}
if(mySwitch.state != ON && nLevel >= 30) // Rest wie gehabt, nur mit Item statt Variable...
mySwitch.postUpdate(ON)
if(mySwitch.state == ON && nLevel < 30) {
sendTelegram("Sascha","Thermostat " + strLabel + " Batterie 30%")
mySwitch.postUpdate(OFF)
}
end
Damit in der Message ein Klartextname genannt werden kann, muss dieser aus dem Label abgeleitet werden können. Es bietet sich an, hierfür das Label der Alarm Switches oder evtl. sogar des Original Items zu verwenden.
Sollte es noch andere Geräte als nur Thermostate geben, man die Label nur entsprechend anpassen und das Telegramm einkürzen, so dass das Wort "Thermostat " auch im Label vorkommt.
Wenn es komplexer wird, bietet es sich an, die Namensteile durch _ voneinander zu trennen, z.B. Battery_Level_KZ. Dann kann man mittels .name.split("_").get(2) z.B. auf den letzten Namensteil zugreifen (get() arbeitet 0-indiziert).
Für den Fall, dass ein Item keinen gültigen Wert liefert, wird ein Eintrag ins Log geschrieben und die Rule bricht ab.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet