FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: aski71 am 26 September 2020, 16:56:34

Titel: gelöst: ReadingGroup valueFormat Problem
Beitrag von: aski71 am 26 September 2020, 16:56:34
Hi,

ich versuche in einer ReadingGroup mittels valueFormat über eine Funktion für jeden meiner Sonos Lautsprecher anzeigen zu lassen, welcher andere Lautsprecher zugeschaltet ist.
Dazu will ich nur die Namen anzeigen lassen und verwende regex.

Meine Funktion sieht so aus:

sub
groupPlayersValueFormat($$$)
{
  my ($DEVICE,$READING,$VALUE) = @_;
  my $newValue='none';

  if("$READING" eq "SlavePlayer") {
     $newValue=$VALUE=~ s/(Sonos_)/\0/rg;
     $newValue=$newValue=~ s/[\[\]\x27]/\0/rg;
     $newValue=$newValue=~ s/,/, /rg;
     return $newValue;
  } elsif ("$READING" eq "infoSummarize1") {
     $newValue=$VALUE=~ s/(br)/\0/rg;
     $newValue=$newValue=~ s/[\[\]\x3c\x3e\x27]/\0/rg;
     $newValue=$newValue=~ s/(SPDIF)/TV/rg;
     return $newValue;
  }

}


Was sie tun soll ist:

Im Reading SlavePlayer alle eckigen Klammern, Hochkommas und den String "Sonos_" entfernen, als auch ein Komma gegen Komma mit Blank austauschen.
Im Reading infoSummarize1 soll "SPDIF" ersetzt werden und ebenfalls Hochkommas, <, >, "br" und eckige Klammern rausgenommen werden.

Nun zum Problem:

Rufe ich die ReadingGroup auf, bleiben Hochkommas, <, > stehen und werden nicht entfernt. -> Die Darstellung ist nicht wie gewünscht.
Lasse ich die Seite geöffnet und das Sonosmodul aktualisiert die Werte (z.B. infoSummarize1, weil etwas neues abgespielt wird, oder SlavePlayer, weil ein Lautsprecher zugeschaltet oder weg geschaltet wird), greifen meine regexes und die Darstellung ist richtig!

Mache ich was falsch? Oder fhem?

Danke und Gruß
Alex
Titel: Antw:ReadingGroup valueFormat Problem
Beitrag von: aski71 am 27 September 2020, 19:00:15
Ich habe nun herausgefunden, dass beim Erstaufruf der Oberfläche offensichtlich eine Konvertierung stattfindet, so dass statt mit dem tatsächlichen Hochkomma mit &apos; gearbeitet wird.
Ebenso verhält es sich mit Klammern &lt; &gt;.

Wenn die Web-Oberfläche dann aktualisiert wird, werden aber die tatsächlichen Charakters verwendet.
Sieht erstmal gleich aus, regex fällt dann aber auf die Nase.

Ergo: regex anpassen, dass es auch die HTML Schreibweisen rausschneidet. Dann geht's.