[GELÖST] Perl Modus - Sonos gruppieren bzw. eckige Klammer maskieren

Begonnen von chrisse111179, 12 September 2024, 09:12:18

Vorheriges Thema - Nächstes Thema

chrisse111179

Hallo,

für meine Morgenroutine konnte ich im Ausführungsteil eines DOIFs meine Sonos_Lautsprecher wie folgt gruppieren:
((set Sonos Groups ({(chr(91))}Sonos_Bad_oben,Sonos_Esszimmer{(chr(93))})))
Weil es jetzt etwas komplexer werden soll habe ich mich entschieden ein DOIF im Perl-Modus zu verwenden. Da klappt aber das gruppieren der Lautsprecher nicht mit
fhem_set(("Sonos Groups ({(chr(91))}[$SELF:sonos_bad],[$SELF:sonos_bad_oben],[$SELF:sonos_esszimmer],[$SELF:sonos_wohnzimmer]{(chr(93))})"));;
In den Readings $SELF:Sonos.* stehen die Namen der Lautsprecher weil man die über FTUI3 an- bzw. abwählen können soll.
Die Syntax um Sonos Lautsprecher zu gruppieren lautet
set Sonos Groups ([Player1,Player2,Player3])
Beste Grüße,
Christian

Damian

#1
Im Perlmodus befindet man sich in Perl, daher

{fhem_set("Sonos Groups (".chr(91).[?$SELF:sonos_bad].",".[?$SELF:sonos_bad_oben].",".[?$SELF:sonos_esszimmer].",".[?$SELF:sonos_wohnzimmer].chr(93).")")}
besser ist es aber mit der Perlfunktion get_Reading zu arbeiten, da die Readings ohnehin keine Trigger darstellen sollen:

{fhem_set("Sonos Groups (".chr(91).get_Reading("sonos_bad").",".get_Reading("sonos_bad_oben").",".get_Reading("sonos_esszimmer").",".get_Reading("sonos_wohnzimmer").chr(93).")")}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

chrisse111179

Ok, das funktioniert prima. Danke für die Hilfestellung!
Um ehrlich zu sein verstehe ich es aber nicht so recht. Was passiert da zwischen den zwei Punkten?

Beste Grüße,
Christian

Damian

Zitat von: chrisse111179 am 12 September 2024, 15:03:07Ok, das funktioniert prima. Danke für die Hilfestellung!
Um ehrlich zu sein verstehe ich es aber nicht so recht. Was passiert da zwischen den zwei Punkten?

Beste Grüße,
Christian

Die Punkte verbinden Zeichenketten.


"bla"."bla"="blabla"

"1".zwei()."3"="123", wenn die Funktion zwei "2" liefert
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF