Ankündigung

Einklappen
Keine Ankündigung bisher.

Sprachausgabe "Ansagen.pl"

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    danke für deine hilfe, du bist echt super!!!!

    auch mit deiner ansagen.pl und config funktioniert es bei mir nicht. jetzt geht gar nix mehr

    in der conf hast du die zeile "$radioga="WebRadio$" auskommentiert. ist die wirklich unnötig?

    hab die pfade auf /var/lib/mpd/music/Ansagen geändert und in der logdatei nun
    2012-11-20 15:38:15.282,Ansagen.pl,WW_WebRadio - no audio output possible (file not found),0s,

    keine ahnung, was das wieder ist ... ich mag nimmer

    grüße andi

    PS nochwas ist mir aufgefallen
    im mpd verzeichnis werden die "state und state1" dateien seit kurzem nicht mehr aktualisiert.
    vielleicht liegt da der hund begraben??

    Kommentar


      #17
      Hi,

      also da bräuchte ich noch ein paar mehr infos.

      Wie sieht deine config aus?

      Wie sieht dein Script aus?

      Hast du die GA´s imm WG Editor angelegt (WW_... WA_... usw)?

      Sind die Ansagen Files wirklich in dem Angegebenen Verzeichniss und hast du zugriff darauf?

      Die Zeile ist bei mir auskommentiert, da ich den Radio nicht nutze, nur die Ansagen. Radio ist bei mir ein anderer mpd.


      Gruß

      Kommentar


        #18
        hi,

        auf's verzeichnis habe ich zugriff, ich kann die enthaltenen dateien über den relaxx player abspielen. wenn ich eine meldung bei laufendem radio auslöse (zB. aussentemperatur) wird diese meldung angesagt, aber nach beendigung das radio nicht mehr weitergeführt.

        im relaxx player sehe ich zuerst den radio stream, dieser wird bei der ansage gelöscht, die ansage steht dann in der aktuellen playlist .. und funkstille.

        hier die ansagen.pl (ich glaub das war die letzte funktionierende version)

        PHP-Code:
        ###########
        # Ansagen #
        ###########
        # Wiregate-Plugin
        # (c) 2012 Fry under the GNU Public License version 2 or later

        # $plugin_info{$plugname.'_cycle'}=0; return 'deaktiviert';

        use POSIX qw(floor);
        use 
        feature "switch"# aktiviert given...when-Struktur von Perl 5.10

        # Defaultkonfiguration
        my $speechdir='/var/lib/mpd/music/Ansagen';
        my $mpddir='/var/lib/mpd/music';
        my %channels=('default'=>'welcome');
        my $beepchannel='paging';
        my $beep "Beep/03d.wav"
        my @additional_subscriptions=();
        my %mpdhost=('default'=>'127.0.0.1/6600');
        my $mode='mpd'
        my $radioga=undef;
        my %stations=(); # Internet-Radiostationen
        my $verstaerker '2/0/4';


        # Konfigurationsfile einlesen
        my $conf=$plugname$conf.='.conf' unless $conf=~s/\.pl$/.conf/;
        open FILE"</etc/wiregate/plugin/generic/conf.d/$conf|| return "no config found";
        my @lines = <FILE>;
        close FILE;
        eval(
        "@lines");

        # speechdir muss im mpddir liegen!
        $speechdir=~s!/$!!;
        $mpddir=~s!/$!!;
        return 
        "config error: $@" if $@ || ($mode eq 'mpd' && $speechdir !~ /^$mpddir/);

        # Aufrufgrund ermitteln
        my $event=undef;
        if (!
        $plugin_initflag
        $event='restart'; } # Restart des daemons / Reboot
        elsif ($plugin_info{$plugname.'_lastsaved'} > $plugin_info{$plugname.'_last'})
        $event='modified'; } # Plugin modifiziert
        elsif (%msg) { $event='bus'; } # Bustraffic
        elsif ($fh) { $event='socket'; } # Netzwerktraffic
        else { $event='cycle'; } # Zyklus

        chdir $speechdir;

        if(
        $event=~/restart|modified/)
        {
            
        my %gas=();

            
        # Erstaufruf - an GAs anmelden, auf die die Muster in %channels zutreffen
            
        for my $k (grep /^$plugname\_/, keys %plugin_info)
            {
            
        delete $plugin_info{$k};
            }

            
        # Rueckwaertskompatible Behandlung von eibgaconf
            
        for my $ga (grep /^[0-9\/]+$/, keys %eibgaconf)
            {
            
        my $name=$eibgaconf{$ga}{name};
            
        next unless defined $name;

            
        my $channel_found=undef;
            for 
        my $pat (keys %channels)
            {
                
        next if $pat eq 'default' || $name!~/$pat/;
                
        $channel_found=$channels{$pat};
                
        last;
            }
            
        next unless $channel_found;

            
        $gas{$channel_found}++;
            
        $plugin_subscribe{$ga}{$plugname}=1;

            if(
        $name=~/$radioga/)
            {
                
        speak($channel_found,$name,'AUS');
                
        $plugin_info{$plugname.'_radio_'.$channel_found}='AUS';
                
        plugin_log($plugname'Internetradio auf Kanal '.$channel_found.', GA='.$ga); 
            }
            }

            
        my $channel_found=$channels{'default'};
            if(
        $channel_found)
            {
            for 
        my $ga (@additional_subscriptions)
            {
                
        my $name=$eibgaconf{$ga}{name};
                
                
        $gas{$channel_found}++;
                
        $plugin_subscribe{$ga}{$plugname}=1;
                
                if(
        $name=~/$radioga/)
                {
                
        speak($channel_found,$name,'AUS');
                
        $plugin_info{$plugname.'_radio_'.$channel_found}='AUS';
                
        plugin_log($plugname'Internetradio auf Kanal '.$channel_found.', GA='.$ga); 
                }
            }
            }

            
        $plugin_info{$plugname.'_cycle'}=0;
            
            return 
        join ' 'map $_.'->'.$gas{$_}, keys %gas
        }
        elsif($event=~/bus/)
        {
            return if 
        $msg{apcieq "A_GroupValue_Response";

            
        my $ga=$msg{dst};
            
        my $val=$msg{value};
            
        my $dpt=$eibgaconf{$ga}{DPTSubId};
            
        $dpt=1.017 unless defined $dpt# = Trigger, bedeutet Textansage ohne Daten
            
            
        my $name=$eibgaconf{$ga}{name};   
            
        my $channel=$channels{default};
            
        my $pattern=$name;

            for 
        my $pat (keys %channels)
            {
            if(
        $pattern=~s/$pat//)
            
        {
                
        $channel=$channels{$pat};
                
        last;
            }
            }
            
            
        # Radiosender bei dpt 16 (Text=Sendername)
            
        if($mode eq 'mpd' && $name=~/$radioga/ && $dpt=~/^16/)
            {
            if(
        $msg{apcieq 'A_GroupValue_Read')
            {
                
        # Host und Port ermitteln
                
        $mpdhost{$channel}=~m!^\s*(.*)\s*/\s*(.*)\s*$!;
                
        my $host=$1my $port=$2;

                
        # aus irgendeinem Grund funktioniert %ENV im wiregate-Plugin nicht
                # also so:
                
        my $mpc=checkexec('mpc');
                
        $mpc="export MPD_HOST=$host; export MPD_PORT=$port$mpc";

                
        # Laeuft gerade das Radio oder eine Ansage?
                
        my $lfd_radio $plugin_info{$plugname.'_radio_'.$channelne 'AUS';
                
        my $lfd_ansage = `$mpc`=~/playing/&& !$lfd_radio;
                
        # knx_write($verstaerker ,1,1);

                
        return unless $lfd_radio && !$lfd_ansage;

                
        my $mpcout=`$mpc`;    
                
        $mpcout=~s/\n.*//s; # erste Zeile rausschneiden
                
        knx_write($ga$mpcoutundef0x40); # response, DPT aus eibga.conf 
                               
            
        }
            else
            {
                
        $val=~s/\000*$//; # streiche Nullen am Ende
                
        return speak($channel$name$val);
            }
            }
            
            return 
        unless $msg{apcieq 'A_GroupValue_Write';

            
        # Hole alle verfuegbaren Durchsagedateien 
            
        my $find=checkexec('find');
            
        my @speech=split /\n/, `$find . -name '*.mp3'`;
            
        map s!^\./!!, @speech# Pfade relativ zum speechdir
            
        return 'no speech files found' unless @speech;
            
            
        my @statement=();
            
            
        # Praefix bei Gefahrenwarnung (dpt 5.005)
            
        push(@statementwords(\@speech'Achtung')) if $dpt eq '5.005'# Gefahrenwarnung
            
            # Textteil (Gruppenadresse ausgesprochen)
            
        push(@statementwords(\@speech$pattern)) if defined $pattern;
            
            
        # Informationsteil (Inhalt des Telegramms)
            
        given($dpt)
            {
            
        when (1.001# An/Aus
            

                
        push(@statement'Zahlen/'.($val?'an':'aus').'.mp3'); 
            } 
            
        when (1.008# Hoch/Runter
            

                
        push(@statement'Zahlen/'.($val?'hoch':'runter').'.mp3'); 
            }
            
        when(1.009# Auf/Zu
            

                
        push(@statement'Zahlen/'.($val?'auf':'zu').'.mp3'); 
            }
            
        when(2.007# Auf/Ab/Stop
            

                
        push(@statement'Zahlen/'.($val==1?'auf':($val==-1?'ab':'stop')).'.mp3'); 
            }
            
        when(5.005# Gefahrenwarnung
            

                
        my %warnstufe=(0=>'keine_Meldung'1=>'Hinweis'2=>'Vorwarnung'3=>'Warnung'4=>'Gefahr'5=>'Gefahr_hoch');
                
        push(@statement'Warnung/'.$warnstufe{$val}.'.mp3'); 
            }
            
        when([5.010,7.001,12.001]) # Ordinalzahl
            

                
        push(@statementnumber(\@speech$val, -1)); 
            }
            
        when([3.007,6.010,8.001,13.001]) # Kardinalzahl
            

                
        push(@statementnumber(\@speech$val)); 
            }
            
        when([5.001,6.001]) # Prozent
            

                
        push(@statementnumber(\@speech$val));
                
        push(@statement'Zahlen/Prozent.mp3'); 
            }
            
        when(9.001# Temperatur
            
        {
                
        push(@statementnumber(\@speech$val1));
                
        push(@statement'Zahlen/Grad.mp3');
            }
            
        when(11.001# Datum
            
        {
                if(
        $val=~/^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])/)
                {
                
        my @monat=qw(Januar Februar Maerz April Mai Juni Juli August September Oktober November Dezember);
                
        push(@statementnumber(\@speech, $3, -1));
                
        push(@statement'Monate/'.$monat[$2-1].'.mp3') if defined $&& $2>&& $2<13;
                }    
                else
                {
                return 
        "Unbekanntes Datumsformat '$val'";
                }
            }
            
        when(7.005# Zeitdauer
            

                
        $val=-$val if $val<0;
                
        my $h=floor($val/3600);
                
        $val-=3600*$h;
                
        my $m=floor($val/60);
                
        $val-=60*$m;
                if(
        $h)
                {
                
        push(@statementnumber(\@speech$h)); 
                
        push(@statement'Zeiten/Stunden.mp3'); 
                }
                if(
        $h || $m)
                {
                
        push(@statementnumber(\@speech$m)); 
                
        push(@statement'Zeiten/Minuten.mp3'); 
                }
                
        push(@statementnumber(\@speech$val)); 
                
        push(@statement'Zeiten/Sekunden.mp3'); 
                }
            
        when(10.001# Uhrzeit
            
        {
                if(
        $val=~/^(Mo|Di|Mi|Do|Fr|Sa|So)\s+([0-9][0-9])\:([0-9][0-9])/)
                {
                
        push(@statement"Wochentage/$1.mp3");
                
        push(@statementnumber(\@speech, $2));
                
        push(@statement"Zeiten/Uhr.mp3");
                
        push(@statementnumber(\@speech, $3)) if int($3)>0;
                }
                
        elsif($val=~/^([0-9][0-9])\:([0-9][0-9])/)
                {
                
        push(@statementnumber(\@speech, $1));
                
        push(@statement"Zeiten/Uhr.mp3");
                
        push(@statementnumber(\@speech, $2)) if int($2)>0;
                }
                else
                {
                return 
        "Unbekanntes Uhrzeitformat '$val'";
                }
            }
            
        when(/^16/) # Freitext
            
        {
                
        $val=~s/\000*$//; # streiche Nullen am Ende
                
        push(@statementwords(\@speech$val));
            }
            
        when(1.017# Trigger, kein Datenzusatz
            
        {}
            default     
        # kein Datenzusatz, aber mit Logeintrag
            

                return 
        "Datentyp $dpt nicht implementiert"
            }  
            }
            
        # Das komplette Statement in die Ausgabe geben
            
        return speak($channel$name, @statement);
        }

        return; 

        sub checkexec
        {
            
        my @path split /:/, $ENV{PATH};
            
        map s|(.)/$|$1|, @path;
            for (@
        path)
            {
                
        my $full="$_/$_[0]";
                if(-
        x $full)
                {
                    return 
        "$_/$_[0]";
                }
            }
            die 
        "$_[0] must be in your PATH and executable.\n";
        }


        sub words
        {
            
        my $speech=shift;
            
        my $pattern=shift;

            
        # Konstruiere die abzuspielenden File(s) aus dem GA-Kuerzel
            # erster Versuch: eine Datei passt komplett auf das Muster im Kuerzel
            
        my $pat1=$pattern;
            
        $pat1=~s/[_\s]+/.*?/g# allgemeine Fassung
        #    $pat1=~s/\s+.*$//; # meine spezielle GA-Struktur
        #    $pat1=~s/_+/.*?/g; # meine spezielle GA-Struktur
            
        $pat1='.*'.$pat1.'.*\.mp3$';
            
            
        my @hits=();
            
        my $hit=bestmatch($speech,$pat1);
            
        push(@hits$hit) if $hit# gefunden

            
        unless(@hits)
            {
            
        $pattern='_'.$pattern;
            
        $pattern=~s/\s+/_/g# allgemeine Fassung
        #    $pattern=~s/\s+.*$//; # meine spezielle GA-Struktur

            # zweiter Versuch: aus Kuerzeln die Bausteine zusammenbauen
            
        while($pattern=~s/^_([^_]+)//)
            
        {
                
        my $pat2=$1.'\.mp3$'
                
        $hit=bestmatch($speech,$pat2);
                
        push(@hits$hit) if $hit# gefunden
            
        }    

            if(
        $pattern)
            {
                
        $pattern=~s/_/.*/g# Restnachricht
                
        $pattern.='.*\.mp3$';
                
        $pattern='.*'.$pattern;
            
                
        $hit=bestmatch($speech,$pattern);
                
        push(@hits$hit) if $hit# gefunden
            
        }
            }

            return @
        hits;
        }


        sub number
        {
            
        my $speech=shift;
            
        my $x=shift$x=~s/,/./; 
            
        my $digits=0;  
            
        $digits=shift if @_# max. Anzahl Nachkommastellen, -1 fuer Ordinalzahlen

            
        my @hits=();

            if(
        $x<0
            {
            
        push(@hits'Zahlen/minus.mp3');
            
        $x=-$x;
            
        $digits=if $digits<0# keine negativen Ordinalzahlen
            
        }

            
        my $t=$digits<0?'o':'c';
            
        my $n=floor($x);
            
        my $m=$x-$n;

            
        # Manche Zahlen existieren direkt als WAV
            # von 0-12, sowie die runden 10er und 100 sowie 1000 
            # MUESSEN existieren, und zwar als Kardinalzahlen (c4.mp3),
            # Ordinalzahlen (o6.mp3), die Zehner ausserdem mit vorangestelltem 'und'
            # (u30.mp3, uo30.mp3)

            
        if(-'Zahlen/'.$t.$n.'.mp3'
            {
            
        push(@hits'Zahlen/'.$t.$n.'.mp3');
            }
            else
            {
            return if(
        $n>=1000000); # Zahlen ueber eine Million nicht implementiert

            
        if($n>=1000)
            {
                
        $digits=if $digits>0# waere Pseudo-genauigkeit und zu langer Text
                
                
        if($n==1000)
                {
                
        push(@hits'Zahlen/'.$t.'1000.mp3');
                
        $n 0;
                }
                else
                {
                
        my $m=floor($n/1000);
                @
        hits=number($speech,$m,0) if $m>1;
                
        $n %= 1000;
                if(
        $n)
                {
                    
        push(@hits'Zahlen/c1000.mp3');
                }
                else
                {
                    
        push(@hits'Zahlen/'.$t.'1000.mp3');
                }    
                }
                
                if(
        $n>=100 && $n<200)
                {
                
        push(@hits'Zahlen/u1.mp3');
                }
            }

            if(-
        'Zahlen/'.$t.$n.'.mp3'
            {
                
        push(@hits'Zahlen/'.$t.$n.'.mp3');
            }
            
        elsif($n>100)
            {
                
        $digits=if $digits>0# waere Pseudo-genauigkeit und zu langer Text
                
        my $h int($n/100);
                
        $n %= 100;
                
        push(@hits'Zahlen/u'.$h.'.mp3') if $h>1;
                if(
        $n)
                {
                
        push(@hits'Zahlen/c100.mp3');
                }
                else
                {
                
        push(@hits'Zahlen/'.$t.'100.mp3');
                }    
            }
            
            
        my $d $n 10;
            
            if(-
        'Zahlen/'.$t.$n.'.mp3'
            {
                
        push(@hits'Zahlen/'.$t.$n.'.mp3');
            }
            else
            {
                
        my $z $n-$d;
                
                
        push(@hits'Zahlen/u'.$d.'.mp3');
                
        push(@hits'Zahlen/u'.$t.$z.'.mp3');
            }
            }
            
            if(
        $digits>0
            {
            
        $m sprintf "%.$digits"."f"$m;
            
            if(
        $m>0
            {
                
        push(@hits'Zahlen/Komma.mp3');
                for (
        1..$digits)
                {
                
        $m*=10.my $d=floor($m); $m-=$d;
                
        push(@hits"Zahlen/c$d.mp3");
                }
            }
            }

            return @
        hits;
        }

        sub bestmatch
        {
            
        my $speech=shift;
            
        my $pattern=shift;

            
        my @hits=sort length($a) <=> length($b) } grep /$pattern/i, @{$speech};
            
            return @
        hits ? (shift @hits) : undef;
        }


        sub speak
        {
            
        my $channel=shift# ALSA-Channel
            
        my $name=shift# Name der Ansage (aus eibga.conf) - fuers Log

            
        my $retval='';
            
        my $date=checkexec('date');
            
        my $datetime=`$date +"%F %X"`;
            
        $datetime=~s/\s*$//s; 
            
            # Fuer Russound-Ausgabe: Star Trek 'Beep' vorweg weckt Russound (und User) fuer Ansage auf
            
        if($channel=~/$beepchannel/ && $name!~/$radioga/)
            {
            
        my $lastbeep=$plugin_info{$plugname.'_lastbeep_'.$channel};
            
            
        # max ein Beep pro Minute
            
        if(!defined $lastbeep || time()>$lastbeep+60)
            {
                
        unshift(@_$beep);
                
        $plugin_info{$plugname.'_lastbeep_'.$channel}=time();
            }
            }

            if(@
        _)
            {
            if(
        $mode eq 'aplay')
            {
                
        my $aplay=checkexec('aplay');
                
        system $aplay'-c2'"-D$channel", @_;

                
        map s!^.*/(.*?)\.mp3!$1!, @_;
                
        $retval.=$channel.':'.(join ' ', @_);
            }
            
        elsif($mode eq 'mpd')
            {
                
        # Host und Port ermitteln
                
        $mpdhost{$channel}=~m!^\s*(.*)\s*/\s*(.*)\s*$!;
                
        my $host=$1my $port=$2;

                
        # aus irgendeinem Grund funktioniert %ENV im wiregate-Plugin nicht
                # also so:
                
        my $mpc=checkexec('mpc');
                
        $mpc="export MPD_HOST=$host; export MPD_PORT=$port$mpc";

                
        # Laeuft gerade das Radio oder eine Ansage?
                
        my $lfd_radio $plugin_info{$plugname.'_radio_'.$channelne 'AUS';
                
        my $lfd_ansage = `$mpc`=~/playing/&& !$lfd_radio;

                
        # Sonderfall Internetradio statt Sprachausgabe
                
        if($name=~/$radioga/)
                {
                
        my $val=$_[0];

                if(
        $val=~s/V([+-]?[0-9X])$//)
                
        {
                    
        my $vol=$1;
                    
        $vol = ($vol eq 'X' 10010*$vol);
                    
        system "$mpc volume $vol"# ermoeglicht gleichzeitig Sender u Lautstaerke festzulegen
                
        }

                if(
        $val eq 'AUS')
                {
                    
        system "$mpc clear";
                    
        $plugin_info{$plugname.'_radio_'.$channel}='AUS';
                    
        knx_write($verstaerker ,0,1);
                }
                
        elsif($val =~ /^VOLUME\s*([+-]?[0-9]+)/)
                {
                    
        system "$mpc volume $1";            
                }
                
        elsif(grep /$val/ikeys %stations)
                {
                    
        my $station=undef;
                    
                    
        unless(defined $stations{$val})
                    {
                    
        my @hits=grep /$val/isort length($a) <=> length($b) } keys %stations;
                    
        $val=shift @hits;
                    }
                    
        $station=$stations{$val};

                    
        my $wget=checkexec('wget');
                    
                    
        # MusicPal-Links "uebersetzen"
                    
        if($station=~/freecom\.vtuner\.com/)
                    {
                    
        $station=~s!freecom\.vtuner\.com!vtuner.com!;
                    
        $station=~s!setupapp/fc/asp!setupapp/guide/asp!;
                    
        $station=~s!dynam.*?\.asp!dynampls.asp!;
                    
        $station=~s!\?ex45v=.*\&id=!\?id=!;
                    }
                    
                    
        # vtuner-Links "uebersetzen"
                    
        $station = `$wget 2>/dev/null -O - $station` if $station=~/vtuner/;
                    
                    
        system "$mpc clear" unless $lfd_ansage# nur leeren falls abgespielt
                    
        system "$mpc add \"$station\"";
                    
        plugin_log($plugname"$mpc add \"$station\"");
                    
        system "$mpc play" unless `$mpc`=~/playing/s# starten falls noch nicht aktiv
                    
        $plugin_info{$plugname.'_radio_'.$channel}=$station;
                    
        knx_write($verstaerker ,1,1);
                    
        $retval.="$channel:Radiosender '$val'='$station'";
                }
                else
                {
                    
        $retval.="Unbekannter Radiosender '$val'";
                }
                }
                else 
        # Regelfall: Sprachausgabe
                
        {
                
        system "$mpc update"# Aktualisierung verfuegbarer Soundclips

                
        push @_"silence.mp3"# kurze Pause zwischen Ansagen

                
        map s!^/*!$speechdir/!, @_; # alle Eintraege relativ zum speechdir
                map s!^$mpddir/!!, @_; # mpd braucht einen Pfadnamen relativ zum music-Dir
                map s!/+!/!, @_; # zur Sicherheit

                push @_, $plugin_info{$plugname.'_radio_'.$channel} if $lfd_radio; # nach der Ansage wieder zurueck aufs Radio

                # wird momentan noch was gespielt?
                        # dann Playlist leeren, ggf Radio stoppen falls abgespielt
                system "$mpc crossfade 0"; # nur leeren falls abgespielt
                system "$mpc clear" unless $lfd_ansage;
                
                # ein Fall noch zu klaeren: wenn Radio laeuft und zwei Ansagen kurz hintereinander kommen,
                # wird die zweite die erste unterbrechen, weil $lfd_ansage hier (inkorrekt) 0 sein wird.

                system "$mpc add \"".(join "\" \"", @_)."\"";
        #        plugin_log($plugname, "$mpc add \"".(join "\" \"", @_)."\"");
                system "$mpc play" unless `$mpc`=~/playing/s; # starten falls noch nicht aktiv
                knx_write($verstaerker ,1,1);
                
                map s!^.*/
        (.*?)\.mp3!$1!, @_;

                
        $retval.=$channel.':'.(join ' ', @_);
                }
            }
            else
            {
                
        $retval.="$name - no output (mpd or aplay) defined";
            }
            }
            else
            {
            
        $retval.="$name - no audio output possible (file not found)";
            }
            
            return 
        $retval;


        und die conf datei:

        PHP-Code:
        #!/usr/bin/perl

        $speechdir='/var/lib/mpd/music/Ansagen/';
        %
        channels=(
            
        '^WW_'=>'pakueche',
          
        # zB "WW_Die Aussentemperatur betraegt" 
            
        '^WP_'=>'pawohn',
          
        # zB "WP_Folgende Fenster sind geoeffnet"
            
        '^WM_'=>'music',
          
        # zB "WM_Folgende Fenster sind geoeffnet"
            
        'default'=>'pakueche' # die GAs in additional_subscriptions
        );
        $beepchannel='pakueche|pawohn'
        $beep sprintf "Beep/%02d.wav"3# int(rand(32))+1 fuer Zufallsbeep
        #@additional_subscriptions=qw(0/7/245 0/7/246 6/2/186);
        @additional_subscriptions=();


        # Ausgabeoptionen
        $mode='mpd'# mpd or aplay

        # die folgenden Eintraege werden nur fuer mpd benoetigt
        $mpddir='/var/lib/mpd/music';
        %
        mpdhost=(
            
        'pakueche'=>'127.0.0.1/6600',
            
        'pawohn'=>'127.0.0.1/6601',
            
        'music'=>'127.0.0.1/6602',
        );

        # Integriertes Internetradio, funktioniert NUR mit $mode='mpd',
        # GA-Kuerzel nach diesem Muster rufen das Radio auf
        #$radioga='^...MusicPlayer'; 
        $radioga='WebRadio$';
        # solche GAs muessen Datentyp DPT 16 haben und uebertragen im Datenteil den Sendernamen
        # sowie Kommandos wie 'AUS' oder 'VOLUME 30' oder 'VOLUME +10',
        # es ist auch moeglich, in einem einzigen Aufruf Sender und Lautstaerke festzulegen:
        # zB knx_write($ga, 'Bayern1 V3', 16); setzt Lautstaerke auf 30%, 'bayern1 VX' auf 100%

        # Tabelle von Sendernamen, nicht alle sind <=14 Zeichen und damit aufrufbar...
        # die meisten Links sind UNGETESTET!
        %stations = (
            
        'Antenne' => 'http://livestream.antenne.at',
            
        'Arabella' => 'http://stream01.arabella.vss.kapper.net:8000/',
            
        'Eins' => 'http://stream01.energy.at:8000/enn',
            
        'Bayern1' => 'http://gffstream.ic.llnwd.net/stream/gffstream_w10a',
            
        'Bayern2' => 'http://gffstream.ic.llnwd.net/stream/gffstream_w11a',
            
        'Bayern3' => 'http://gffstream.ic.llnwd.net/stream/gffstream_w12a',
            
        'BRKlassik' => 'http://gffstream.ic.llnwd.net/stream/gffstream_w13a',
            
        'B5aktuell' => 'http://gffstream.ic.llnwd.net/stream/gffstream_w14a',
            
        'B5plus' => 'http://gffstream.ic.llnwd.net/stream/gffstream_w15a',
            
        'FFH' => 'http://streams.ffh.de/radioffh/mp3/hqlivestream.mp3',
            
        'FFHTop40' => 'http://streams.ffh.de/ffhchannels/mp3/hqtop40.mp3',
            
        'FFH80er' => 'http://streams.ffh.de/ffhchannels/mp3/hq80er.mp3',
            
        'FFHRock' => 'http://streams.ffh.de/ffhchannels/mp3/hqrock.mp3',
            
        'FFHElektro' => 'http://streams.ffh.de/ffhchannels/mp3/hqelectrobeatz.mp3',
            
        'FFHEurodance' => 'http://streams.ffh.de/ffhchannels/mp3/hqeurodance.mp3',
            
        'FFHDeutsch' => 'http://streams.ffh.de/ffhchannels/mp3/hqdeutsch.mp3',
            
        'FFHSoundtrck' => 'http://streams.ffh.de/ffhchannels/mp3/hqsoundtrack.mp3',
            
        'FFHHits4Kids' => 'http://streams.ffh.de/ffhchannels/mp3/hqhits4kids.mp3',
            
        'FFHJazz' => 'http://streams.ffh.de/ffhchannels/mp3/hqjazz.mp3',
            
        'FFH90er' => 'http://streams.ffh.de/ffhchannels/mp3/hqspezial.mp3',
            
        'FFHLounge' => 'http://streams.ffh.de/ffhchannels/mp3/hqlounge.mp3',
            
        'FFHLovesongs' => 'http://streams.ffh.de/ffhchannels/mp3/hqspezial1.mp3',
            
        'FFHAlternatv' => 'http://streams.ffh.de/ffhchannels/mp3/hqalternative.mp3',

            
        '1Live Diggi' => 'http://gffstream.ic.llnwd.net/stream/gffstream_einslive_b',
            
        '1Live Kunst' => 'http://gffstream.ic.llnwd.net/stream/gffstream_einslive_a',
            
        '1Live' => 'http://gffstream.ic.llnwd.net/stream/gffstream_stream_wdr_einslive_a',
            
        '2Radio' => 'http://88.198.50.10:8020',
            
        '80s' => 'http://64.236.34.67:80/stream/1040',
            
        '89.0 RTL' => 'http://62.75.176.45/rtl-high',
            
        'Alpen-Radio' => 'http://cdn1.ice.muc.streamin.de/alpenradio',
            
        'BHJMS-Radio1' => 'http://bhjms-streamserver.mscs.net:8000/',
            
        'BIG FM' => 'http://www.bigfm.de/webradio/bigfm-high.m3u',
            
        'BS Allgenres' => 'http://www.besonic.fm/allgenres',
            
        'BS HipHop' => 'http://besonic.fm:8000/hiphopsoulurban',
            
        'BS JazzBlues' => 'http://besonic.fm:8000/jazzblues',
            
        'BS MixedUP' => 'http://besonic.fm:8000/mixedup',
            
        'BS Pop' => 'http://besonic.fm:8000/Pop',
            
        'BSAlternativ' => 'http://besonic.fm:8000/rockalternative',
            
        'BavOpenRadio' => 'http://gffstream.ic.llnwd.net/stream/gffstream_w9b',
            
        'BlackBeats' => 'http://blackbeats.fm:13000/',
            
        'Blackmusic' => 'http://listen.bmradio.de',
            
        'Blitz-Radio' => 'http://blitz-stream.de:8000/',
            
        'Blu.FM' => 'http://sc1.netstreamer.net:9800/',
            
        'Br4 Zeiglers' => 'http://80.252.104.101:8000/zeiglerswwdp',
            
        'CFNYFM' => 'http://208.80.52.106/CFNYFM',
            
        'CHROMANOV' => 'http://212.112.241.88:8000/',
            
        'Chat-Radio' => 'http://chatradio.myftp.org:8202',
            
        'Citybull' => 'http://citybull.net:11000/',
            
        'ClubNatur.FM' => 'http://server2.digital-webstream.de:7800',
            
        'CrossChannel' => 'http://62.146.11.24/3095crosschannel_dsl.mp3',
            
        'DEFJAY.DE' => 'http://sc1.netstreamer.net:8040/',
            
        'DLF' => 'http://www.dradio.de/streaming/dlf_hq_ogg.m3u',
            
        'DLR Kultur' => 'http://www.dradio.de/streaming/dkultur_hq_ogg.m3u',
            
        'Dancefox' => 'http://s5.pop-stream.de:9000/',
            
        'DeluxeJazz' => 'http://d85195728.i.tis.core005.cdn.streamfarm.net:80/13000deluxe/live/3258radiodeluxe/de_96.mp3',
            
        'DeluxeLounge' => 'http://d852143781.i.sto.core008.cdn.streamfarm.net/13000deluxe/live/3304lounge/de_128.mp3',
            
        'DieNeue107.7' => 'http://cdn1.ice.muc.streamin.de:80/dieneue1077',
            
        'Disco-Beatz' => 'http://85.214.43.232:1598/',
            
        'Discodance' => 'http://discodancefoxradio.eu:25819',
            
        'Discoradio' => 'http://discoradio.fabbricadigitale.it/asx/discoradio.asx',
            
        'Dt Welle' => 'http://metafiles.gl-systemhaus.de/dw/radio_de_64.m3u',
            
        'ELDORADIO' => 'http://sender.eldoradio.de:8000/128',
            
        'ERF Radio' => 'http://d85195728.i.tis.core005.cdn.streamfarm.net:80/3212erf_96_live.mp3',
            
        'Enc Ismaning' => 'http://mp3.webradio.antenne.de:80',
            
        'Enjoy' => 'http://91.121.29.176:9000/',
            
        'EnrgieBerlin' => 'mms://213.200.97.107/energyberlin$livestream.wma',
            
        'EnrgieBremen' => 'mms://213.200.97.107/energybremen$livestream.wma',
            
        'EnrgieHH' => 'mms://213.200.97.107/energyhamburg$livestream.wma',
            
        'EnrgieM' => 'mms://213.200.97.107/energymuenchen$livestream.wma',
            
        'EnrgieN' => 'mms://213.200.97.107/energynuernberg$livestream.wma',
            
        'EnrgieS' => 'mms://213.200.97.107/energystuttgart$livestream.wma',
            
        'EnrgieSachsn' => 'mms://62.26.161.89/energysachsen$livestream.wma',
            
        'FFN' => 'http://rs20.stream24.org:8000/stream',
            
        'Fernsehen' => 'mms://80.190.139.69/11008bmt/live/3338s10rfo/300.wmv?cid=60921&dummy=.wmv',
            
        'Filmradio' => 'http://212.123.103.171:8000/',
            
        'GameSports' => 'http://195.13.63.169:8200/',
            
        'Gamer-FM' => 'http://82.149.224.55:8500/',
            
        'Gong FM' => 'http://213.186.33.86:8321/gongfm.mp3',
            
        'Gong Live' => 'http://radiator.nci.de:8000/live',
            
        'GothicFan' => 'http://85.214.43.100:8000',
            
        'HR Info' => 'http://d851957213.i.tis.core005.cdn.streamfarm.net:80/17000hr/live/3435hrinfo/de_96.mp3',
            
        'HR1' => 'http://d85195728.i.tis.core005.cdn.streamfarm.net:80/17000hr/live/3435hr1/de_96.mp3',
            
        'HR2' => 'http://hr.streamfarm.net/cms/_vm100/radio/live/hr2_cms.asx',
            
        'HR3' => 'http://d85195728.i.tis.core005.cdn.streamfarm.net:80/17000hr/live/3435hr3/de_96.mp3',
            
        'HR4' => 'http://hr.streamfarm.net/cms/_vm100/radio/live/hr4_cms.asx',
            
        'Hit-R.Ant' => 'MMS://213.200.64.231/ANTENNE1$LIVESTREAM2.WMA',
            
        'Hitradio 77' => 'http://80.154.38.77:8000/',
            
        'HotBeats FM' => 'http://break.hotbeats.fm:9999/',
            
        'House-Musik' => 'http://85.214.92.77:8000',
            
        'Impact Punk' => 'http://85.214.37.96:8000/',
            
        'JUMP' => 'mms://wm-ipx-11.stream.tv1.de/22004mdrjump/live/3087mdr_jump_live/de_44.wma',
            
        'Jack FM' => 'http://sc1.streamfox.com:8050',
            
        'KlassikRadio' => 'http://str0.creacast.com:80/klassik1',
            
        'Krautrock' => 'http://krautrock.pop-stream.de:7592/',
            
        'Kronehit' => 'http://kronehit.sil.at:8016',
            
        'LeFunkBoat' => 'http://lefunkboat.com:8000/',
            
        'M94.5' => 'http://stream.lrz-muenchen.de:31337/m945-hq.mp3',
            
        'MAIN.FM' => 'http://87.106.14.18:8000/',
            
        'MDR Figaro' => 'MMS://D621466636.W.IPX.CORE001.CDN.STREAMFARM.NET/22007MDRFIGARO/LIVE/3087MDR_FIGARO_LIVE/DE_44.WMA',
            
        'MDR Info' => 'MMS://D621466636.W.IPX.CORE001.CDN.STREAMFARM.NET/22006MDRINFO/LIVE/3087MDR_INFO_LIVE/DE_44.WMA',
            
        'MDR Klassik' => 'http://62.146.11.19:80/22008mdrklassik/live/3087mdrklassik/klassik_128.mp3',
            
        'MDR1 Thuerin' => 'mms://wm-ipx-11.stream.tv1.de/22003mdr1thueringen/live/3087mdr_thue/de_44.wma',
            
        'METAL-ONLY ' => 'http://80.190.246.22:6666',
            
        'Memoryradio' => 'http://www.memoryradio.de:4000/',
            
        'Metal Refine' => 'http://www.metal-refinement.de:8088',
            
        'MotorFM' => 'http://85.25.145.179:80/motorfm.mp3',
            
        'Muni.Hardest' => 'http://84.19.188.7:8010',
            
        'N-JOY' => 'mms://213.254.239.66/ndr$live$n-joy.wma',
            
        'NDR Info' => 'http://213.200.97.110:8000/ndr/ndrinfo_spezial.mp3',
            
        'NDR Kultur' => 'mms://213.254.239.60/ndr$live$ndrkultur.wma',
            
        'NDR1 90.3' => 'mms://213.254.239.66/ndr$live$ndr903.wma',
            
        'NDR1 NiederS' => 'mms://213.254.239.60/ndr$live$ndr1niedersachsen.wma',
            
        'NDR1 Welle' => 'mms://213.254.239.66/ndr$live$ndr1wellenord.wma',
            
        'NDR2' => 'mms://213.254.239.60/ndr$live$ndr2.wma',
            
        'NE-WS 89.4' => 'mms://213.200.75.248/news894$livestream.wma',
            
        'Neue Welle' => 'http://www.meine-neue-welle.de/dieneuewelle.m3u',
            
        'NightFly' => 'http://pia-server.com:8080/',
            
        'Nightline' => 'http://radio1.nightline-radio.de:8000',
            
        'Nordwest' => 'mms://a346.l2377539860.c23775.g.lm.akamaistream.net/D/346/23775/v0001/reflector:39860',
            
        'OldieStar' => 'http://www.digitalradiostream.de:8000',
            
        'OnkelzRadio' => 'http://80.67.26.220:8000/',
            
        'PELLENZRADIO' => 'http://pellenzradio.info:8020/',
            
        'POP-Radio 1' => 'http://tobit.pop-radio.de:8000',
            
        'POP-Radio 2' => 'http://tobit.pop-radio.de:8030',
            
        'POP-Radio 3' => 'http://tobit.pop-radio.de:8060',
            
        'PRIDE1' => 'http://p1standby.serveftp.org:8100',
            
        'Powerhitz' => 'http://scfire-chi0l-2.stream.aol.com:80/stream/1044',
            
        'Punkrockers' => 'http://punkrockers.kicks-ass.net:8003/',
            
        'R.AktivFM' => 'http://stream.radioaktiv.fm:8000',
            
        'R.Arabella ' => 'http://83.246.121.39:8010/arabella.mp3',
            
        'R.Bielefeld ' => 'http://stream.radiobielefeld.de:8000/live',
            
        'R.Bonn' => 'http://ga-stream01.ga-bonn.de:80/live128',
            
        'R.Brocken' => 'http://62.75.176.44/brocken-high',
            
        'R.Chemnitz' => 'mms://stream.green.ch/RadioChemnitz',
            
        'R.Chiemgau' => 'http://chiemgau.blm.netlantic.net:80/live.mp3',
            
        'R.Cottbus' => 'mms://d85195723.w.tis.core005.cdn.streamfarm.net/21001radio_cottbus/live/3142radio_cottbus/de_48.wma',
            
        'R.Crazy Oper' => 'http://stream2139.init7.net:80',
            
        'R.Dresden' => 'mms://stream.green.ch/RadioDresden',
            
        'R.Electracks' => 'http://peace.str3am.com:6390/',
            
        'R.Erding' => 'mms://stream.hitwelle.de/hitwelle',
            
        'R.Fantasy' => 'http://stream.fantasy.de:8000/radiofantasy.mp3',
            
        'R.Harmony' => 'mms://213.200.64.231/harmony$livestream.wma',
            
        'R.Hellwig' => 'http://s2.global-streaming.net:8100/',
            
        'R.Jumpstyle' => 'http://88.198.13.153:16055',
            
        'R.Kiepenkerl' => 'http://rs1.radiostreamer.com:8810',
            
        'R.Lausitz' => 'mms://stream.green.ch/RadioLausitz',
            
        'R.Leipzig' => 'mms://stream.green.ch/RadioLeipzig',
            
        'R.Melodie' => 'http://62.146.11.24/3107melodie_live.mp3',
            
        'R.Multikulti' => 'mms://stream2.rbb-online.de/wmtencoder/multikulti-live.wma',
            
        'R.Nachteule' => 'ttp://radio-nachteule.de:8010/',
            
        'R.Norderney' => 'http://radiosws.s2.onlinestream.de/listen1.m3u',
            
        'R.Primavera' => 'http://hellfireserver.de:8000/primavera.mp3',
            
        'R.Regenbogen' => 'mms://195.52.221.166/regenbogenweb$livestream.wma',
            
        'R1Live' => 'http://www.r1live.de:8000',
            
        'R2 Offbeat' => 'http://webchannels.sr-online.de:8000/sr2offbeat',
            
        'RBB 1' => 'mms://stream2.rbb-online.de/wmtencoder/radioeins-live.wma',
            
        'RBB Info' => 'mms://webstream1.rbb-online.de/wmtencoder/inforadio-live.wma',
            
        'RMN Power' => 'http://server.powerstream.de:30846',
            
        'RMN Relaxed' => 'http://server.rmnrelax.de:80/',
            
        'RMN Schlager' => 'http://server1.schlagerhoelle.de:30842/',
            
        'RMNradio' => 'http://streamserver1.radiomelodienet.de:8022/',
            
        'RPR1 Groove' => 'mms://217.151.151.46/RPR1-GROOVE-LOUNGE',
            
        'RPR1 Live' => 'mms://217.151.151.46/RPR1',
            
        'RPR1 Rock' => 'mms://217.151.151.46/RPR1-ROCK',
            
        'RPR1NewSongs' => 'mms://217.151.151.46/RPR1-NEW-SONGS',
            
        'RPR1RnB,Soul' => 'mms://217.151.151.46/RPR1-RnB',
            
        'RPR2' => 'mms://217.151.151.46/RPR2',
            
        'RSA Radio' => 'http://212.227.99.26:7000/rsa',
            
        'R.7' => 'http://213.251.129.69:8010/',
            
        'R.700' => 'http://s1.global-streaming.net:11600/',
            
        'R.AENA' => 'http://85.214.85.83:8055/dslTest',
            
        'R.FreeFM' => 'http://freefm.lauschangriff.org:8100',
            
        'R.Fritz' => 'mms://stream2.rbb-online.de/wmtencoder/fritz-live.wma',
            
        'R.Lippe' => 'http://stream.radiolippe.de:8000/live',
            
        'R.Mundus' => 'http://www.radiomundus.de:7000/',
            
        'R.SAW' => 'mms://195.52.221.166/radiosaw$livestream.wma',
            
        'R.TEDDY' => 'http://sc1.streamfox.com:9000',
            
        'R.21' => 'http://cdn1.ice.muc.streamin.de:80/radio21',
            
        'R.Sinnlos' => 'http://85.25.150.183:8300',
            
        'RockAnt' => 'http://mp3.webradio.rockantenne.de:80',
            
        'RockUnity' => 'http://relay.rockunity.com',
            
        'Rockland' => 'http://cdn1.ice.muc.streamin.de:80/rockland',
            
        'Rockradio' => 'http://rockradio.de:8090',
            
        'SPUTNIK Club' => 'http://62.146.66.19:80/22005mdr/live/3087mdr_sputnik_ch_club.mp3',
            
        'SPUTNIK Live' => 'http://d85195727.i.tis.core005.cdn.streamfarm.net:80/22005mdrsputnik/live/3087mdr_sputnik_live/de_96.mp3',
            
        'SPUTNIK Rock' => 'http://62.146.11.19:80/22005mdr/live/3087mdr_sputnik_ch_rock.mp3',
            
        'SPUTNIKBlack' => 'http://62.146.66.19:80/22005mdr/live/3087mdr_sputnik_ch_black.mp3',
            
        'SPUTNIKIntro' => 'http://62.146.11.19:80/22005mdr/live/3087mdr_sputnik_ch_cd1.mp3',
            
        'SR2 Offbeat ' => 'http://webchannels.sr-online.de:8000/sr2offbeat',
            
        'SR3-Schlager' => 'http://webchannels.sr-online.de:8000/sr3schlagerwelt',
            
        'SR3Oldiewelt' => 'http://webchannels.sr-online.de:8000/sr3oldiewelt',
            
        'SWR Contra' => 'mms://195.52.221.166/swrcontra$live.wma',
            
        'SWR1' => 'mms://213.200.75.252/swr$swr1$live_bw_44.wma',
            
        'SWR2' => 'mms://213.254.239.66/swr$swr2$live.wma',
            
        'SWR3' => 'mms://213.200.75.248/swr3$livestream.wma',
            
        'SWR3' => 'mms://213.254.239.66/swr3$livestream.wma',
            
        'SWR4' => 'mms://213.254.239.66/swr$swr4$live_rp.wma',
            
        'SachsAnhalt' => 'mms://wm-ipx-10.stream.tv1.de/22002mdr1sachsenanhalt/live/3087mdr_mdr1sa_live/de_44.wma',
            
        'Sachsen' => 'mms://wm-ipx-11.stream.tv1.de/22001mdr1sachsen/live/3087mdr_sachsen/de_44.wma',
            
        'ShFM Altern' => 'http://alternative.mthn.net:8700',
            
        'ShFM Black' => 'http://black.mthn.net:8300',
            
        'ShFM Break' => 'http://break.mthn.net:8800',
            
        'ShFM Club' => 'http://club.mthn.net:8200',
            
        'ShFM Elektro' => 'http://electro.mthn.net:8400',
            
        'ShFM House' => 'http://house.mthn.net:8500',
            
        'ShFM Main' => 'http://main.mthn.net:8000',
            
        'Solo Piano' => 'http://208.122.59.30:7794',
            
        'Sonnensender' => 'http://mystreamradio.com:3150/',
            
        'SoundBlack' => 'http://89.149.245.215:80/',
            
        'SoundExtrem' => 'http://89.149.245.201:80',
            
        'SoundHouse' => 'http://housestream.sound-generation.fm:80',
            
        'SoundPop' => 'http://88.198.125.141:80',
            
        'SoundTechno' => 'http://Clubstream.Sound-Generation.FM:11111',
            
        'Spreeradio' => 'MMS://D852143742.W.STO.CORE008.CDN.STREAMFARM.NET/23002SPREERADIO/LIVE/2925SPREERADIO_LIVE/DE_40.WMV',
            
        'Starlight' => 'http://87.118.64.200:8100/',
            
        'Suedstars' => 'http://stream1.suedstars-radio.de:8000/',
            
        'Sun.fm' => 'http://85.214.45.122:10224/',
            
        'Sunshine' => 'http://s2.global-streaming.net:9500',
            
        'TechnoBaseFM' => 'http://dsl.tb-stream.net:80',
            
        'Tiger-Radio' => 'http://85.25.150.17:8000',
            
        'Tillate.com' => 'http://s1.radio.tilllate.com:8080/tilllate_channel1',
            
        'Tillate.com' => 'http://s1.radio.tilllate.com:8080/tilllate_channel21',
            
        'Tillate11' => 'http://s1.radio.tilllate.com:8080/tilllate_channel11',
            
        'Top FM' => 'mms://www.top-fm-webstream.de/top_fm',
            
        'Troisdorf' => 'http://80.237.152.110:9000',
            
        'TruckRadio' => 'http://stream.truckradio.de:8000/',
            
        'TuneBase.FM' => 'http://listen.dsl.tunebase.fm',
            
        'UDing Black' => 'http://webchannels.sr-online.de:8000/unserding-schwarz',
            
        'UDingZukunft' => 'http://webchannels.sr-online.de:8000/unserding-zukunft',
            
        'VirgClassic' => 'http://ogg.smgradio.com/vc160.ogg',
            
        'VirgExtrem' => 'http://ogg.smgradio.com/vx160.ogg',
            
        'VirgGroove' => 'http://ogg.smgradio.com/gr160.ogg',
            
        'VirgRadio' => 'http://ogg.smgradio.com/vr160.ogg',
            
        'WDR Kiraka' => 'http://mp3.stream-a-lot.com/kiraka',
            
        'WDR2' => 'mms://a1367.l672223084.c6722.g.lm.akamaistream.net/D/1367/6722/v0001/reflector:23084',
            
        'WDR3' => 'mms://a1918.l1383638601.c13836.e.lm.akamaistream.net/D/1918/13836/v0001/reflector:38601',
            
        'WDR4' => 'mms://a473.l1383738602.c13837.e.lm.akamaistream.net/D/473/13837/v0001/reflector:38602',
            
        'WDR5' => 'mms://a28.l751837440.c7518.g.lm.akamaistream.net/D/28/7518/v0001/reflector:37440',
            
        'WGUC 90.9' => 'MMS://198.234.121.100/WGUCLIVE',
            
        'Webblaster' => 'http://streaming.wbr1.de:8000',
            
        'Webblaster2' => 'http://87.118.98.89:8010',
            
        'Wilantis' => 'http://217.18.179.34:8000/stream.ogg',
            
        'WoED.fm' => 'http://stream1-1.woed.de:80',
            
        'Wunschradio' => 'http://cdn1.ice.muc.streamin.de:80/wunschradio',
            
        'YOUFM' => 'mms://d85195725.w.tis.core005.cdn.streamfarm.net/17000hr/live/3219youfm/de_48.wma',
            
        'eaR1' => 'http://85.214.25.102:8010',
            
        'eaR2' => 'http://www.earadio.de:8010',
            
        'eaR3' => 'http://www.earadio.de:8020',
            
        'eaR4' => 'http://www.earadio.de:8040',
            
        'enSonic.FM' => 'http://stream.ensonic.fm:8500/',
            
        'jenny.fm' => 'http://stream2.jenny.fm:9000/',
            
        'GrooveSalad' => 'http://scfire-ntc-aa07.stream.aol.com:80/stream/1018',
            
        'SKYDream' => 'http://u12.sky.fm:80/sky_dreamscapes',
            
        'SKYCountry' => 'http://scfire-dtc-aa01.stream.aol.com:80/stream/1019',
            
        '181.FM Hits' => 'http://sc-rly.181.fm:80/stream/1094',
            
        'KDFC' => 'http://6073.live.streamtheworld.com:80/KDFCFM_SC',
            
        'Classic FM' => 'http://media-ice.musicradio.com:80/ClassicFMMP3',
            
        'WCPE' => 'http://audio-mp3.ibiblio.org:8000/wcpe.mp3',
            
        'SKYPianoTrio' => 'http://72.26.204.28:6874/',
            
        'SKYDanceHits' => 'http://72.26.204.18:6844/',
            
        'Smooth Jazz' => 'http://scfire-mtc-aa04.stream.aol.com:80/stream/1005',
            
        'SKYSmoothJzz' => 'http://91.121.3.80:8000/',
            
        'SKYVocal' => 'http://u12.sky.fm:80/sky_vocalsmoothjazz',
            
        'SKYJazz' => 'http://205.188.215.227:8008/',
            
        'OndaTropical' => 'http://174.133.147.90:8000',
            
        'Latino Radio' => 'http://online.radiodifusion.net:8020/',
            
        'SalsaStream' => 'http://205.188.215.231:8010/',
            
        'SKYNew Age' => 'http://scfire-ntc-aa02.stream.aol.com:80/stream/1002',
            
        'AM 1710' => 'http://lin2.ash.fast-serv.com:9022/',
            
        'WNAR' => 'http://live.wnar-am.com:8500/',
            
        'SKY70s' => 'http://scfire-dtc-aa06.stream.aol.com:80/stream/1076',
            
        'SKY80s' => 'http://scfire-ntc-aa04.stream.aol.com:80/stream/1013',
            
        'SKYOldies' => 'http://91.121.3.80:8010/',
            
        'R.Paradise' => 'http://scfire-ntc-aa02.stream.aol.com:80/stream/1049',
            
        '.977 Hitz' => 'http://scfire-mtc-aa04.stream.aol.com:80/stream/1074',
            
        '80s SKY' => 'http://scfire-ntc-aa04.stream.aol.com:80/stream/1013',
            
        'SKYLoveMusic' => 'http://91.185.206.240:8000/',
            
        'SKYAlterRock' => 'http://80.94.69.106:6754/',
            
        'SKYClassRock' => 'http://80.94.69.106:6734/',
            
        'SKYSoloPiano' => 'http://scfire-ntc-aa04.stream.aol.com:80/stream/1004',
            
        'SKYChristian' => 'http://80.94.69.106:6784/',
            
        'SKYSoundtrks' => 'http://80.94.69.106:6774/',
            );
        ############### Ende der Konfiguration ######################### 

        und noch ein auszug der logdatei:

        PHP-Code:
        2012-11-22 09:36:42.580,Ansagen.pl,pawohn->9,0.9s,
        2012-11-22 09:39:11.008,Ansagen.pl,pawohn:Ansagen/Beep/03.wav Die aktuelle Aussentemperatur betraegt c2 Komma c1 Grad silence,0.9s,
        2012-11-22 09:39:12.049,Ansagen.pl,pawohn:Die aktuelle Aussentemperatur betraegt c2 Komma c1 Grad silence,0.9s,
        2012-11-22 09:41:03.430,Ansagen.pl,export MPD_HOST=127.0.0.1export MPD_PORT=6601; /usr/bin/mpc add "http://livestream.antenne.at"
        2012-11-22 09:41:03.656,Ansagen.pl,pawohn:Radiosender 'Antenne'='http://livestream.antenne.at',1.2s,
        2012-11-22 09:41:05.256,Ansagen.pl,Unbekannter Radiosender '',1.2s

        vielleicht findest du was, aber bitte mache dir keinen stress!!!

        danke und liebe grüße
        andi

        Kommentar


          #19
          Hi,

          Ich sehe es mir mal an. Aber wie gesagt bei mir macht das ein separater mpd nicht der selbe,
          Bin mir jetzt nicht ganz sicher ob das von tru so gedacht war das das ein mpd macht?

          Gesendet von meinem LG-P880 mit Tapatalk 2

          Kommentar


            #20
            Fry nicht Tru, das ist ein anderer :-)

            Bei mir macht das ein mpd. Grund: es laufen noch zwei weitere mpds für andere Zwecke, und drei sind eher schon zuviel für das arme Wiregate.

            Fry

            PS. Also wenn es einmal ein Wiregate mit mehr "Wumms" gäbe, idealerweise immer noch lüfterlos und im gleichen Formfaktor, dann würde ich das bestimmt kaufen... falls nicht, muss ich mittelfristig überlegen, ob ich das Thema "mpd" nicht auf einen anderen Rechner übertrage, beispielsweise ein Raspberry Pi. Wäre allerdings der 6. (7.?) Linuxrechner, den ich dann administrieren muss. Wehe dem, der mal mein Haus kauft oder erbt...

            Kommentar


              #21
              Oh sorry tut mir leid! Hab ich verwürfelt!!! Sry!

              Gruß

              PS: Bei mir sind es 4 da kommt es doch schon ins schleudern. Aber es geht noch. Wenn ich dann noch per Konsole drauf bin und alle laufen zuckelt es aber, klar.
              Gibts nicht bald den gooseberry? Sollte genug Power haben.

              Kommentar

              Lädt...
              X