FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Traxx am 16 November 2016, 21:34:44

Titel: Set Device Status und auf Änderung warten
Beitrag von: Traxx am 16 November 2016, 21:34:44
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
Titel: Antw:Set Device Status und auf Änderung warten
Beitrag von: dev0 am 17 November 2016, 05:12:08
Wenn Du in der Sub "wartest" blockierst Du nur FHEM. Einfach mit einem (weiteren) notify auf das entsprechende Event reagieren.