Transform String

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Transform String

Beitrag von Cyrelian »

Hallo zusammen,

ich habe mal meine Urlaubs-Rules erweitert und hab nun einen kleinen Schönheitsfehler.

Rule:

Code: Alles auswählen

var String conOpened = ""

rule "Urlaubsmodus / Tür-Fensterkontakte"
when
	Item gAllContacts received update or
   	System started

then
	if ((AutoHoliday.state == ON) && (gAllContacts.state == OPEN)) {
	gAllContacts?.allMembers.filter(s | s.state == OPEN).forEach(contact | conOpened = conOpened + contact.name)
	var String sensorState = transform("MAP","Sensoren.map",conOpened)
	logInfo("UrlaubRules:Kontakte Erdgeschoss",""  + sensorState + " wurde geöffnet")
	pushover("Tür-Fensterkontakt " + sensorState + " wurde geöffnet")
	conOpened = ""
	}
end
Die Rule läuft einwandfrei.Wenn ALLE Kontakte "CLOSED" sind und man dann einen öffnet, steht in der Message auch die richtige "Übersetzung" aus der Transform Datei.
Ist aber beim öffnen bereits an anderer Kontakt offen, passiert das, was Ihr nun unten seht. Er packt alles zusammen in den String :?

Fehler:

Code: Alles auswählen

[t.i.s.MapTransformationService] - Could not find a mapping for 'GarageTorsensorEGSchlafzimmerTuersensorEGBadezimmerFenstersensor' in the file 'Sensoren.map'.
[INFO ] [laubRules:Kontakte Erdgeschoss] -  wurde geöffnet
Wie kann ich das ändern?
CYA
Cyrelian

Benutzeravatar
seppy
Beiträge: 738
Registriert: 24. Sep 2015 20:25
Answers: 4
Wohnort: Bonn

Re: Transform String

Beitrag von seppy »

Mache doch erst ein transform und dann erweiterst Du den String?!


openhabforum.de
Homematic und HomematicIP über Raspberrymatic (RaspPi 4 4GB) mit 2x HMLAN. Steuerung und Visualisierung durch OpenHAB2 auf RaspPi in Hutschienengehäuse im Sicherungskasten. Rund 100 Aktoren/Sensoren

- Abgesichert durch APC USV
- Bewässerungssteuerung mit Hunter Magnetventilen (HM-LC-Sw4-DR)
- Beleuchtungssteuerung Innen und Aussen (HM-LC-Sw4-DR + HM-LC-SW1-FM + HMW-IO-12-SW7-DR)
- Rolladensteuerung mit Beschattungsautomatik über Temperaturdifferenzsensor (HM-LC-Bl1PBU-FM)
- Wetter und Unwetterinformationen von wunderground
- Benachrichtigung der Bewohner via Pushover
- Multimediawand und Dreambox Steuerung (HM-LC-SW1-FM)
- Heizungssteuerung mit Komfort und Energiesparfunktionen (HM-CC-RT-DN + HM-Sec-SC-2 + HMIP-eTRV-2)
- Werkstatt Kompressorsteuerung (HMW-IO-12-SW7-DR)
- Weihnachtsbeleuchtung außen
- Präsenzerkennung über Geolocation (iCloud Binding), iBeacon und WLAN (Unifi Binding)
- Philips HUE & Tasmota Devices (Tuya) Einbindung

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Transform String

Beitrag von Cyrelian »

Hi seppy,

ok, das klappt schon mal :D

Code: Alles auswählen

gAllContacts?.allMembers.filter(s | s.state == OPEN).forEach(contact | conOpened = conOpened + transform("MAP","Sensoren.map",contact.name))
	logInfo("TestRules:", "States:" + conOpened)
Allerdings sieht es nun so aus:

Code: Alles auswählen

States:OGSchlafzimmer TerrassentuerHaustuerSchlafzimmer Terrassentuer KuechenfensterBadezimmerfensterWohnzimmer Terrassentuer
Kann man das noch irgendwie "schön" machen. ;) ?

Antworten