Hallo,
hat jemand eine Idee wie ich per userreadings dea aktive Programm so kürzen kann, das nur der letzte Teil, also das eigentliche Programm in einem reading steht?
BSH.Common.Root.ActiveProgram Dishcare.Dishwasher.Program.MachineCare
Also so, dass nur noch MachineCare da steht?
Es ist nur die Anschauung der Richtung. Keine vollständige Lösung für Deine Anfrage.
Dafür hast Du zu wenig Infos gegeben.
(split('.','BSH.Common.Root.ActiveProgram Dishcare.Dishwasher.Program.MachineCare))[6]
Bedeutet also, dass er immer bei einem Punkt trennt und dann Wert 6 genommen wird?
Bis ActiveProgram ist es allerdings der Name des Readings...der Teil ab Dishcare dann das Reading an sich...
Das Reading an sich? Oder eher der Wert des Readings. Aber Du hast es ja verstanden und kannst es entsprechend an passen.
Der Wert natürlich..war falsch ausgedrückt von mir.
Ich glaub ich bin echt zu schwer von Begriff für soetwas. Ich bekomme das nicht hin.
Ich versuch jetzt nochmal alle Informationen zu geben, vielleicht kann mir jemand mit der Lösung auf die Sprünge helfen.
Es gibt ein Reading mit folgendem Namen:
BSH.Common.Root.ActiveProgram
dazu z.B. folgender Inhalt:
LaundryCare.Washer.Program.Cotton
Nun soll ein userreading mit dem Namen Program erzeugt werden, was nur den letzten Teil des Strings abbildet - hier also z.B. Cotton.
Funktioniert also mit split '.' ...aber wie muss denn der genau Terminus sein?
Program:BSH.Common.Root.ActiveProgram:.* { (split('.', ReadingsVal($name,'BSH.Common.Root.ActiveProgram','none')))[3] }
Voraussetzung ist aber das der Inhalt des Readings tatsächlich immer so ausschaut value1.value2.value3.value4 und Du somit immer value4 haben willst
Vielen Dank für denen Support!
Noch mal eine Frage...
Ist bei dir oben eine : zu viel drinnen? Vor .*{ split ?
Nein. Das ist die Regex für das Event
Das Event sollte genau so ausschauen
BSH.Common.Root.ActiveProgram: LaundryCare.Washer.Program.Cotton