FHEM Forum

FHEM => Frontends => readingsGroup / readingsHistory => Thema gestartet von: Spartacus am 06 April 2015, 13:57:43

Titel: readingsGroup mit mehreren Commands
Beitrag von: Spartacus am 06 April 2015, 13:57:43
Hallo,
versuche gerade mit dem Click auf "Ein" bzw. "Aus" mehrere commands auszuführen, scheitere aber an der Syntax.

{'Ein' => 'set $DEVICE createStereoPair OG.br.SON.ZP_S3', 'Aus' => 'set $DEVICE SeparateStereoPair'}
Das funktioniert soweit!
Allerdings möchte ich die Routine Init ($DEVICE,'S3') beim Klick auf "Ein" ausführen.
sub Init($$)
{
my ($player, $typ) = @_;
if ($typ eq "S1")
{
  {fhem "set $player LoadRadio WDR2%20Ruhrgebiet"}
  {fhem "set $player Volume 5"}
  {fhem "set $player Treble 10"}
  {fhem "set $player Bass 3"}
  {fhem "set $player Balance 0"}
  {fhem "set $player Loudness 1"}
  {fhem "set $player LEDState 0"}
}
...
}

Aber das funktioniert nicht, wenn ich das so mache...
{'Ein' => '(set $DEVICE createStereoPair OG.br.SON.ZP_S3;{Init ($DEVICE, 'S3')})', 'Aus' => 'set $DEVICE SeparateStereoPair'}

Die Knöpfe "Ein" und "Aus" sind irgendwie nicht mehr zu bedienen...
Das Init müsste wahrscheinlich noch durch ein sleep verzögert werden, da ja erst das Stereopaar gebildet sein muss, bevor ich die Einstellungen an dem Device vornehme.

Wie muss ich das hier korrekt angeben, damit das funzt?
Spartacus
Titel: Antw:readingsGroup mit mehreren Commands
Beitrag von: justme1968 am 06 April 2015, 18:19:05
die kurze antwort:
- die syntax stimmt nicht weil du versuchst gleiche ' ineinander zu schachteln ohne sie zu maskieren
- die runden klammern an dieser stelle sind weder perl noch fhem syntax
hinweise auf diese fehler solltest du auch im log sehen.

- steck den code in ein notify und aktiviere das notify in dem du in commands ein passendes trigger kommando verwendest:
define myNotify myNotify {Init($EVENT,'S3')}
und
..., 'ein' => 'set $DEVICE createStereoPair OG.br.SON.ZP_S3 ; trigger myNotify $DEVICE',...

ich würde aber nur das trigger ins command stecken und das createStereoPair auch mit im notify erledigen.

vergiss nicht das du fhem sleep und nicht perl sleep verwendest sonst blockierst du fhem so lange.


aber noch mal ein ganz anderer ansatz: erzeugt das sonos device nicht ein passendes event wenn das createStereoPair beendet ist? ich denke es ist viel besser wenn du ein notify darauf ansetzt. dann bist du zum einen alle timing probleme los und zum anderen wird sogar dann alles passend initialisiert wenn du das stereo paar über die sonos app erzeugst.


zur langen antwort findest du z.b. hier: http://forum.fhem.de/index.php/topic,14425.msg262811.html#msg262811 (http://forum.fhem.de/index.php/topic,14425.msg262811.html#msg262811) etwas.
Titel: Antw:readingsGroup mit mehreren Commands
Beitrag von: Spartacus am 06 April 2015, 18:26:56
Hallo Andre,
vielen Dank für Deine ausführliche Antwort. Das mit dem Sonos Event ist eine gute Idee. Ich werde das mal einbauen und Feedback geben.

Gruß,
Christian