Seite 1 von 1

Transform String

Verfasst: 6. Jul 2016 13:55
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

Re: Transform String

Verfasst: 8. Jul 2016 08:33
von seppy
Mache doch erst ein transform und dann erweiterst Du den String?!


openhabforum.de

Re: Transform String

Verfasst: 8. Jul 2016 19:26
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. ;) ?