Mapping von mehreren Items aus Gruppen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Baumtasche
Beiträge: 82
Registriert: 14. Sep 2020 21:52
Answers: 0

Mapping von mehreren Items aus Gruppen

Beitrag von Baumtasche »

Hallo zusammen,

ich habe folgendes Problem. Ich will bei einer bestimmten Aktion feststellen, welche Fenster im Haus geöffnet sind. Meine Fenster sind in der Gruppe gKontakteAll zusammengefasst. In der map "Fensterkontakte" habe ich die Items bestimmten Namen zugeordnet. Wenn nur ein Fenster offen ist, dann klappt das wunderbar, aber bei mehreren funktioniert das mapping nicht.
Der tmpMsg - String sieht folgendermaßen aus: "fkKueche_state, fkWohnz_State"
Mein Ziel ist es den String so umzuwandeln : "Fenster in der Küche, Fenster im Wohnzimmer"

Hat jemand eine Idee wie das funktionieren könnte?

MAP:

Code: Alles auswählen

fkKueche_state = Fenster in der Küche
fkWohnz_State= Fenster im Wochnimmer
....
Rule: < Auszug davon >

Code: Alles auswählen

....
tmpMsg = gKontakteAll.members.filter[ i | i.state == OPEN ].map[ name ].reduce[ s, name | s + ", " + name ]  
            val msg = transform("MAP", "fensterkontakte.map", tmpMsg)
            send(msg) // steht stellvertretend für die Pushovermeldung

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

Re: Mapping von mehreren Items aus Gruppen

Beitrag von udo1toni »

Das ist kein Wunder :) Du musst das Mapping schon in das Lambda einbauen:

Code: Alles auswählen

msg = gKontakteAll.members.filter[ i | i.state == OPEN ].map[ name ].reduce[ s, name | s + ", " + transform("MAP", "fensterkontakte.map",name) ]
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

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

Re: Mapping von mehreren Items aus Gruppen

Beitrag von peter-pan »

Wenn du nun mehrere Fenster hast musst du jedes mal die "fensterkontakte.map2 mit pflegen. Es geht aber auch einfacher. Ich hatte dir ja schon hier einen Tipp gegeben.

Anstatt den Item-Namen (name) kannst du auch die Item-Bezeichnung (label) übergeben, dann sparst du dir die redundante Pflege:

Code: Alles auswählen

val msg = gKontakteAll.members.filter[ i | i.state == OPEN ].map[ label ].reduce[ s, label | s + ", " + label ]
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Baumtasche
Beiträge: 82
Registriert: 14. Sep 2020 21:52
Answers: 0

Re: Mapping von mehreren Items aus Gruppen

Beitrag von Baumtasche »

Vielen Dank, das hilft mir weiter

Antworten