Hauptmenü

fhem <-> soundbridge

Begonnen von Guest, 09 März 2011, 11:18:13

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hallo,

ich benutze FHEM auf einer FritzBox (7170), auf welcher u.a. auch ein
Callmonitor läuft. Um eingehende Anrufe auch dann mitzubekommen, wenn
ich Musik höre, habe ich mir ein Perl-Skript für meine Soundbridge
gebastelt, welches die Lautstärke bei eingehenden Anrufen langsam auf
50% reduziert, dann auf Pause geht und auf dem Display der SB Rufnummer
und Namen des Anrufers anzeigt.
Gerne möchte ich dieses auch ablaufen lassen, wenn jemand an der Haustür
klingelt, was mir ein FS-20-Sender übermittelt (Vorstellung ist hier,
die Musik leiser zu machen, "DingDong" auf dem Display anzuzeigen und
die Musik wieder hochzufahren).

Ich könnte dieses jetzt einfach über die Shell starten - aber da die
7170 sowieso eher schwachbrüstig ist, frage ich mich, ob es nicht u.U.
schneller geht, dies direkt aus fhem laufen zu lassen - schließlich
müsste dann kein zweiter Perl-Interpreter gestartet werden.
Stimmt diese Vermutung grundsätzlich?
Wie ist dies sinnvoll möglich?

Das Skript selber so aus (vielleicht findets ja noch jemand nützlich):

=====================================================

#!/var/media/ftp/uStor01/fhem/perl/bin/perl
use Net::Telnet;
use Time::HiRes qw(usleep);

&open_rcpshell;
if ( get_rcp_cmd_val('GetTransportState') ne 'Pause' ) { $telnet->close;
die('not playing'); };
if ( get_rcp_cmd_val('GetVolume') != 49 ) { $telnet->close; die('Volume
not 49%'); };
put_rcp_cmd('Play');
rcp_volumeramp(49,100);
$telnet->close;

sub open_rcpshell {
  $telnet = new Net::Telnet ( Timeout=>1, Errmode=>'die');
  $telnet->open( Host=>'192.168.178.43', Port=>4444);
  $telnet->waitfor('/soundbridge>/i');
  $telnet->print('rcp');
  $telnet->waitfor('/roku: ready/');
}

sub put_rcp_cmd {
  $telnet->print("$_[0]\n");
  split(/\W/,$_[0]); # strip parameters
  $telnet->waitfor('/'.$_[0].': OK$/i');
};

sub get_rcp_cmd_val {
  $telnet->print("$_[0]\n");
  ($prematch, $match) = $telnet->waitfor('/'.$_[0].'.*$/i');
  ($cmd, $val) = split(':',$match);
  return substr($val,1);
};

sub rcp_volumeramp {
  my $i=$_[0];
  if ( $i < $_[1] ) { $count_to = $_[1]+1; }
  if ( $i > $_[1] ) { $count_to = $_[1]-1; }
  while ($i != $count_to) {
    put_rcp_cmd("SetVolume $i");
    if ( $i < $count_to ) { $i++; }
    if ( $i > $count_to ) { $i--; }
    usleep(10000);
  };
};

=====================================================

Danke für jeden Kommentar!

Martin

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

rudolfkoenig

                                                   

> Ich könnte dieses jetzt einfach über die Shell starten - aber da die
> 7170 sowieso eher schwachbrüstig ist, frage ich mich, ob es nicht u.U.
> schneller geht, dies direkt aus fhem laufen zu lassen - schließlich
> müsste dann kein zweiter Perl-Interpreter gestartet werden.

Da perl schon im Hauptspeicher ist, sollte es nicht viel ausmachen.

Aber man kann das Ganze auch (wie Du es vorschlaegst) in 99_Utils.pm einbauen,
und die Funktion(en) direkt aus einem notify aufrufen.

Eleganter ist es die Funktionen in einem 99_MySoundVolume.pm einzubauen
(99_XXX.pm Dateien werden baim start geladen, andere Module erst bei Bedarf),
dieser muesste zusaetzlich ein MySoundVolume_Initialize() anbieten, genau wie
99_Utils.pm

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.