FHEM Forum

FHEM => Frontends => FHEMapp => Thema gestartet von: roman1528 am 22 August 2022, 10:17:32

Titel: Nutzung von Variablen (%s,%d...) an jeder Stelle?
Beitrag von: roman1528 am 22 August 2022, 10:17:32
Moin.
Ich probiere mich gerade etwas in FHEMApp aus und bin dabei mir ein eigenes SONOS_Template zu schreiben.

Bezüglich dem hinzufügen/entfernen  zu/aus Gruppen ist mir aufgefallen, dass man die Variablen (Ersetzungen) nicht überall nutzen kann. Oder ich mache noch Fehler?

z.B. Entfernen aus einer Gruppe:

"leftBtn": [
"MasterPlayer:%d:mdi-home-group-remove:disabled",
"IsBonded:1:mdi-home-group-remove"
],
"leftClick": [
"MasterPlayer::set %s RemoveMember %d"
],


Im Button prüfe ich als erstes ob das Reading "MasterPlayer" das eigene Device enthält, wenn ja -> disabled. Trifft das nicht zu und der Player ist in einer Gruppe (1) dann nicht disabled.
Funktioniert so leider nicht, weil scheinbar die Variable nicht berücksichtigt/ersetzt wird.
Das entfernen per Click selbst ist noch nicht getestet... bitte ignorieren.

Gleiches für "zu einer Gruppe hinzufügen":

"rightBtn": [
"IsBonded:1:mdi-home-group-plus:disbaled",
"MasterPlayer:%d:mdi-home-group-plus"
],
"rightMenu": [
"Bad:set SONOS_Bad AddMember %d",
"Küche:set SONOS_Kueche_L AddMember %d",
"Schlafzimmer:set SONOS_Schlafzimmer AddMember %d",
"Wohnzimmer:set SONOS_Wohnzimmer AddMember %d"
]


Der Button wird nicht dargestellt.
Zum Menü: Ist auch nicht getestet... Hier könnte ich mir natürlich eine automatische Füllung aus dem Reading "AvailablePlayerList" sehr gut vorstellen ;)

Kannst ja bei Gelegenheit mal drüber schauen. Danke schon mal.

Grüße^^
Titel: Antw:Nutzung von Variablen (%s,%d...) an jeder Stelle?
Beitrag von: jemu75 am 22 August 2022, 19:11:11
Hallo,

die Definitionen beginnen ja zumeist mit den beiden Parametern "reading:wert:...".
Diese beiden Teile der Definition werden bisher nicht von den Ersetzungen berücksichtigt.

In deinem konkreten Beispiel möchtest du prüfen, ob das Reading "MasterPlayer" dem aktuellen Device (%d) entspricht, wenn ich das richtig verstehe.
Ich würde mir mal ansehen, ob sich die Ersetzung auch in den Parameter "wert" implementieren lassen.

Beste Grüße
Jens  :)
Titel: Antw:Nutzung von Variablen (%s,%d...) an jeder Stelle?
Beitrag von: roman1528 am 23 August 2022, 11:37:31
Zitat von: jemu75 am 22 August 2022, 19:11:11
In deinem konkreten Beispiel möchtest du prüfen, ob das Reading "MasterPlayer" dem aktuellen Device (%d) entspricht, wenn ich das richtig verstehe.
Ich würde mir mal ansehen, ob sich die Ersetzung auch in den Parameter "wert" implementieren lassen.

Total geil  ;D

Denke, dass das schon sinnvoll wäre, denn die Templates sind oder sollen ja "Multi-Device-fähig" sein. Dann auf z.B. "MasterPlayer:SONOS_Buero" (fest eingetragener Devicename) zu prüfen wäre ja blödsinn.

Grüße^^
Titel: Antw:Nutzung von Variablen (%s,%d...) an jeder Stelle?
Beitrag von: jemu75 am 26 August 2022, 19:49:48
Hallo Roman,

ich habe mir das Ganze nochmal angesehen. Du kannst das viel einfacher lösen, ohne dass dafür was programmiert werden muss. In dem SONOS Device gibt es bereit ein Reading "IsMaster". Dieses Reading liefert genau die gewünschte Prüfung (1 = wenn der Player der Master ist und 0 = wenn der Player Teil einer Gruppe ist). Du müsstest deine Definition damit wie folgt schreiben:

"IsMaster:1:mdi-home-group-remove:disabled"


Für den Fall, dass dieses Reading nicht existieren sollte kannst du ein Userreading erstellen:

isMaster { if (ReadingsVal($name, "MasterPlayer", "") eq $name) { return 1; } else { return 0; } }


Gib gern mal eine Rückmeldung, ob das so geklappt hat.

Beste Grüße
Jens.  :)