Set Device Status und auf Änderung warten

Begonnen von Traxx, 16 November 2016, 21:34:44

Vorheriges Thema - Nächstes Thema

Traxx

Hallo Fhem-Forum,

ich versuche schon seit mehreren Tagen, auf Events zu warten.

Eine funktion in myUtils, welche einen Text auf der Squeezbox ausgeben soll.


sub Radio_text($){
  my ($text) = @_;
  my $Radio_state = Value('SB_PLAYER_01');
  my $Radio_volume = ReadingsVal('SB_PLAYER_01','Volume','20');
  if ($Radio_state eq "off"){
    fhem ("set SB_PLAYER_01 on");
    #### HIER Warten auf Radio auch wirklich an
  }

  if ($Radio_volume lt 30){
    fhem ("set SB_PLAYER_01.Volume 30");
  }

  fhem("set SB_PLAYER_01 talk $text");
  #### Hier warten auf talkStatus eq = "idle"

  fhem ("set SB_PLAYER_01.Volume $Radio_volume");
  if ($Radio_state eq "off"){
    fhem ("set SB_PLAYER_01 off");
  }
}


Ich habe das ganze schon mit do/while Schleifen und ähnliches probiert, aber FHEM scheint unabhängig ob Perl Sleep oder FHEM sleep die Status nicht zu aktuallisieren. Auch nach durchlesen der Syntax von Notify und DOIF habe ich keine Idee bekommen. Ausser vielleicht ein Notify zu erstellen und dann eine Variable global zu setzten.

Ich bin mir aber sicher, dass FHEM einfachere Methoden dafür anbietet.

Hat mir jemand einen Denkansatz? Stehe irgendwie auf dem Schlauch.

Danke

dev0

Wenn Du in der Sub "wartest" blockierst Du nur FHEM. Einfach mit einem (weiteren) notify auf das entsprechende Event reagieren.