Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Wiregate-Plugin für Sprachausgabe

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

    #61
    Ah super. Das ist dass einzigste, was richtig störend wirkt. Wenn sich di gute des öfteren selbst unterbricht....

    Gruß

    Kommentar


      #62
      Ist jetzt im SVN.
      VG, Fry

      Kommentar


        #63
        Hmm,

        bei mir wird im MPD nix geadded (auch dein Plugin_log = playing wird nicht geschrieben)
        ich hab kein Plan wo er sih aufhängt. Ich such morgen mal weiter.

        Weißt du zufällig woher die 0 bei der ausgabe kommt?
        Code:
        2012-04-25 22:37:29.971,Ansagen.pl,0 2012-04-25 22:37:29.988,Ansagen.pl,pakueche:03 u1 uc10 Komma c5 Grad silence.wav,0.6s, 2012-04-25 22:37:30.487,Ansagen.pl,0 2012-04-25 22:37:30.490,Ansagen.pl,pakueche:u8 uc10 Grad silence.wav,0.3s, 2012-04-25 22:37:30.875,Ansagen.pl,0 2012-04-25 22:37:30.879,Ansagen.pl,pakueche:u0 uc20 Komma c5 Grad silence.wav,0.3s, 2012-04-25 22:37:31.495,Ansagen.pl,0 2012-04-25 22:37:31.501,Ansagen.pl,pakueche:an silence.wav,0.6s, 2012-04-25 22:37:32.187,Ansagen.pl,0 2012-04-25 22:37:32.190,Ansagen.pl,pakueche:aus silence.wav,0.6s
        sollten dass die werte sein?
        Dann stimmt irgendwas bei mir nicht...

        Gruß

        Kommentar


          #64
          Ich hatte solche Probleme auch, lag an einer abgestürzten MPD-Instanz.
          Prüf das doch mal und melde dich nochmal.
          VG, Fry

          Kommentar


            #65
            Das separate Ansagen-Log hab ich aufgegeben, und die Sounddateien sind jetzt konsequent unter /var/lib/mpd/music/Ansagen.
            Beachte auch die Veränderungen in der Konfiguration betr. MPD
            Gute Nacht
            Fry

            Kommentar


              #66
              Den mpd hab ich konfiguriert..

              Hier mal ein Auszug aus dem Plugin_log:

              Code:
              2012-04-26 17:25:14.854,Ansagen.pl,7,0s, 2012-04-26 17:25:15.196,Ansagen.pl,4,0.3s, 2012-04-26 17:25:15.542,Ansagen.pl,6,0.3s, 2012-04-26 17:25:15.793,Ansagen.pl,2,0s, 2012-04-26 17:25:16.146,Ansagen.pl,2,0s,
              Das schreibt er.

              Wenn ich gleich am Anfang, nachdem die Werte übergeben werden ein:
              return $val;
              einbaue. Sagt er aber eigentlich folgendes:
              Code:
              2012-04-26 17:17:27.932,Ansagen.pl,28,0s, 2012-04-26 17:17:28.092,Ansagen.pl,25,0s, 2012-04-26 17:17:28.223,Ansagen.pl,22.1,0s, 2012-04-26 17:17:28.435,Ansagen.pl,16,0.3s, 2012-04-26 17:17:28.715,Ansagen.pl,16,0s,
              Zeitlich passen sie nicht ganz, aber so krass haben sich die Werte nicht geändert. Ich vermute ein return zuviel Irgendwo. Ich fang nochmal von vorne an... evtl hilfts.

              Gruß

              Edit:
              Ah OK muss zum Teil ein copy&paste Fehler sein. Jetzt gibt er folgendes aus:
              Code:
              2012-04-26 17:34:12.160,Ansagen.pl,pakueche:03 u7 uc20 Grad silence.wav,0.6s, 2012-04-26 17:34:12.872,Ansagen.pl,pakueche:u7 uc20 Grad silence.wav,0.6s, 2012-04-26 17:34:13.270,Ansagen.pl,pakueche:u2 uc20 Komma c1 Grad silence.wav,0.3s, 2012-04-26 17:34:13.887,Ansagen.pl,pakueche:an silence.wav,0.6s, 2012-04-26 17:34:14.719,Ansagen.pl,pakueche:an silence.wav,0.6s,
              aber geadded wird noch nix.

              Kommentar


                #67
                Hast du das komplette Plugin in Betrieb oder hast du Code-Teile rauskopiert und verwendest sie als Subroutine?

                So Debugging "um die Ecke" ist dann doch etwas knifflig...

                VG,
                Fry

                Kommentar


                  #68
                  Ok,

                  ich bin a depp

                  folgende Ausgabe hatmich auf den richtigen weg gebracht:
                  Code:
                  2012-04-26 17:43:48.231,Ansagen.pl,export MPD_HOST=192.168.178.33; export MPD_PORT=6602; /usr/bin/mpc add "Beep/03.wav" "Zahlen/u7.wav" "Zahlen/uc20.wav" "Zahlen/Grad.wav" "silence.wav" 2012-04-26 17:43:48.291,Ansagen.pl,pakueche:03 u7 uc20 Grad silence.wav,0.3s, 2012-04-26 17:43:48.659,Ansagen.pl,export MPD_HOST=192.168.178.33; export MPD_PORT=6602; /usr/bin/mpc add "Zahlen/u7.wav" "Zahlen/uc20.wav" "Zahlen/Grad.wav" "silence.wav" 2012-04-26 17:43:48.747,Ansagen.pl,pakueche:u7 uc20 Grad silence.wav,0.3s, 2012-04-26 17:43:49.143,Ansagen.pl,export MPD_HOST=192.168.178.33; export MPD_PORT=6602; /usr/bin/mpc add "Zahlen/u2.wav" "Zahlen/uc20.wav" "Zahlen/Komma.wav" "Zahlen/c1.wav" "Zahlen/Grad.wav" "silence.wav" 2012-04-26 17:43:49.255,Ansagen.pl,pakueche:u2 uc20 Komma c1 Grad silence.wav,0.6s, 2012-04-26 17:43:49.699,Ansagen.pl,export MPD_HOST=192.168.178.33; export MPD_PORT=6602; /usr/bin/mpc add "Zahlen/an.wav" "silence.wav" 2012-04-26 17:43:49.820,Ansagen.pl,pakueche:an silence.wav,0.6s, 2012-04-26 17:43:50.295,Ansagen.pl,export MPD_HOST=192.168.178.33; export MPD_PORT=6602; /usr/bin/mpc add "Zahlen/an.wav" "silence.wav" 2012-04-26 17:43:50.406,Ansagen.pl,pakueche:an silence.wav,0.3s,
                  ich hab alles als mp3 da liegen
                  Wie hast du dir die silence.wav gemacht? einfach nur eine leere Sounddatei?

                  Gruß

                  Kommentar


                    #69
                    So:

                    Code:
                    #!/usr/bin/perl
                    
                    for my $d (1..5)
                    {
                        my $l=sprintf("%0.1f",0.2*$d);
                        my $f=sprintf("sil%dms.wav", 1000*$l);
                        next if -f $f; 
                        system "sox", "-n", "-r", "44100", "-c", "2", $f, "trim", "0.0", $l;
                    }
                    
                    system "ln -sf sil200ms.wav silence.wav";

                    Kommentar


                      #70
                      Top. Dankeschön!

                      Finde dein Plugin echt genial!!
                      Vielen Dank dafür.

                      VG

                      Kommentar


                        #71
                        Neue Version im SVN, jetzt mit integriertem Internetradio.

                        Das Radio kann spielen, durch eine Ansage unterbrochen werden, spielt danach weiter. Die Senderauswahl sowie An- und Ausschalten geschieht durch KNX-Telegramme mit DPT16, zB so:

                        Code:
                        knx_write('1/2/3', 'Bayern3', 16);  # Sender waehlen
                        knx_write('1/2/3', 'Bayern3V8', 16);  # Sender waehlen, Lautstaerke 80%
                        knx_write('1/2/3', 'Bayern3VX', 16);  # Sender waehlen, Lautstaerke 100%
                         knx_write('1/2/3', 'VOLUME 80', 16);  # Lautstaerke 80%
                        knx_write('1/2/3', 'AUS', 16);  # ausschalten
                        Details siehe conf-Datei.

                        Eine Senderliste hab ich dort auch reingeschrieben, die meisten Sender sind allerdings UNGETESTET - hier wäre ich dankbar, wenn jemand die Liste ggf. verbessert.

                        Aber Achtung: die Senderbezeichnungen sollten 12 Zeichen nicht überschreiten, denn in DPT16 gehen nur 14 Zeichen rein, und zwei Zeichen sollten noch bleiben für Lautstaerkeregelung, siehe Beispiel oben.

                        Gemeinsam mit dem Logikprozessor-Plugin kann man so leicht einen hübschen Radiowecker mit Zeitansage bauen, der sogar automatisch an Arbeitstagen und freien Tagen zu unterschiedlichen Zeiten weckt.

                        Have fun!

                        Fry

                        Kommentar


                          #72
                          Hallo Fry,

                          vorab ganz herzlichen Dank für Deine Riesenarbeit.
                          Leider reichen mein Hirnschmalz und meine LINUX-Erfahrungen nicht aus, um bei mir etwas zum Laufen zu bringen. Vielleicht habe ich etwas Fundamentales nicht verstanden.

                          Ausgangslage:
                          Ich habe ein Original-Wiregate; mit dem SVN-Plugin mpg123_start ( SourceForge.net Repository - [openautomation] Log of /wiregate/plugin/generic/mpg123_start ) kann ich Sound auf meine Lautsprecher bringen, ALSA (aplay) habe ich nicht installiert; die entsprechenden Anleitungen haben mich als Laien eher abgeschreckt.
                          Bezüglich Deines Plugins bin ich wie hier beschrieben https://knx-user-forum.de/code-schni...ausgabe-2.html vorgegangen. Ich höre nichts und im Plugin-Logfile finde ich auch keine Einträge.

                          Meine Fragen:
                          1.) Ich bin davon ausgegangen, dass ich mit dem Eintrag "$mode='mpd';" im conf-File keine weitere Software auf dem Wiregate installieren muss. Gehe ich da fehl?
                          2.) Ist der Eintrag "@additional_subscriptions=qw(14/7/21 13/3/0 13/3/10);" korrekt, wenn ich die GA 14/7/21 als "Radio hören"-GA verwenden will, wie von Dir im letzten Post ( https://knx-user-forum.de/232016-post71.html ) beschrieben?

                          Ich entschuldige mich, dass ich Dich mit derart banalen Fragen belästige. Herzlichen Dank im Voraus für Deine Unterstützung.
                          Beste Grüsse
                          Diego

                          Kommentar


                            #73
                            Hi Diego -
                            danke für dein Interesse. Hier ein paar Hinweise:

                            (i) ich schiebe mal vorweg, dass ich KEIN Linux-Sound-Experte bin. vlamers ist hier der Pulseaudio-Guru, und mir hat er mit seinen Hinweisen extrem geholfen. Die Art und Weise, wie ALSA (/etc/asound.conf), pulseaudio (etc/pulse/default.pa) und mpd (/etc/mpd.conf) dabei zusammenspielen, ist mir bis heute nicht ganz klar, aber hier läuft es :-)
                            Ich bin aber natürlich bereit, ein paar Hinweise zu geben, bspw. meine Configfiles hier zu posten.

                            (ii) der einfachste Weg hardwareseitig ist es, die hier im Forum sehr beliebte Kombination des Wiregate mit der Logilink-USB-Soundkarte zu nehmen. Die Logilink kostet nur um die 20 EUR und ist es definitiv wert. Obendrein könntest du in diesem Fall einfach meine Configfiles kopieren.

                            (iii) Die Ansagen funktionieren entweder mit aplay (ALSA) oder mit mpd (typischerweise dann pulseaudio). Allerdings macht aplay zwischen einzelne Ansageteile immer eine klitzekleine Pause, was den Sprachfluss von Miss Google ziemlich stört. Ich empfehle daher mittlerweile klar mpd/pulseaudio.

                            (iv) Für die Radio-Funktionalität ist mpd zwingend. Wenn du vor allem Radio hören willst und an den Audio-Ansagen nicht so sehr interessiert bist, dürfte mein Ansagen.pl-Plugin so ziemlich der umständlichste Weg sein, dein Ziel zu erreichen - das geht dann anders sehr viel leichter.

                            (v) Vergiss für den Moment mal @additional_subscriptions. Gib deinen Gruppenadressen vernünftige Namen und pflege das in der /etc/wiregate/eibga.conf ein. Eine Methode für ein Namensschema habe ich hier beschrieben, und eine Methode fürs Importieren hier. Es gibt aber auch 10^10 andere Methoden, die gut funktionieren; jeder so, wie er glücklich wird. Am Ende sollten deine Ansagen- und Radio-GAs sinnvolle NAMEN haben, zum Beispiel (Ausschnitt aus /etc/wiregate/eibga.conf):

                            Code:
                            [1/2/3]
                            name = Durchsage_Uhrzeit
                            DPTSubId = 10.001
                            DPTId = 10
                            
                            Name = Durchsage_WebRadio
                            GA = 1/2/4
                            DPTSubId = 16.000
                            DPTId = 16
                            Dann teilst du dem Ansagen-Plugin in /etc/wiregate/plugin/generic/conf/Ansagen.conf mit, dass alle GAs, deren Namen mit 'Durchsage_' beginnen, abonniert werden sollen und sich auf deinen ALSA/pulseaudio-Kanal 'default' bezieht:

                            Code:
                            %channels=('^Durchsage_'=>'default');
                            Das sagt dem Ansagen-Plugin: abonniere alle GAs, deren Namen mit 'Durchsage_' beginnen, und die Ausgabe erfolgt für alle diese GAs auf den ALSA-Kanal 'default'. (Am Rande: ich habe drei Kanäle, nämlich 'welcome' für die Eingangshalle, 'music' für den Russound-Input-Kanal #7, und 'paging' für den Russound-Input-Kanal #8, der dann automatisch alle Lautsprecher im ganzen Haus anspricht).

                            Außerdem teilst du dem Ansagen-Plugin in /etc/wiregate/plugin/generic/conf/Ansagen.conf mit, dass alle GAs, deren Namen mit 'WebRadio' enden, abonniert werden sollen und sich auf das Internetradio beziehen:

                            Code:
                            $radioga='WebRadio$';
                            Damit ist eigentlich fast alles getan, was das Ansagen-Plugin betrifft.

                            Nun kommt der schwere Teil: Kriege mpd zum Laufen! - und trage die korrekten Daten in %mpdhost ein.

                            Dann sollte alles funktionieren.

                            VG, Fry

                            Kommentar


                              #74
                              Hallo Fry

                              Ganz, ganz herzlichen Dank für Dein ausführliches Posting. Mich interessieren primär die Ansagen und nicht der Radio. Dementsprechend werde ich mich bemühen, Deine Vorschläge umzusetzen. Nochmals besten Dank, ich wünsche Dir ein schönes und erholsames Pfingswochende.
                              Beste Grüsse
                              Diego

                              Kommentar


                                #75
                                Guten Abend Fry,

                                Es ist mir peinlich, Dich nach Deinem äusserst ausführlichen Posting noch einmal zu belästigen.

                                Zitat von Fry Beitrag anzeigen
                                Nun kommt der schwere Teil: Kriege mpd zum Laufen! - und trage die korrekten Daten in %mpdhost ein.
                                Den schweren Teil habe ich geschafft.
                                Für andere Anfänger: Dies ist keine Hexerei, wenn man im Webmin unter Updates bei Paket installieren zunächst "MPD" und anschliessend "MPC" eingibt
                                und sodann die Konfigurationsdatei /etc/mpd.conf bearbeitet; Hinweise zur Anpassung der Konfigurationsdatei finden sich hier https://knx-user-forum.de/148540-post8.html und hier https://knx-user-forum.de/code-schni...-sammlung.html . Ich musste bloss zwei Einträge umstellen:

                                Code:
                                bind_to_address      auf "0.0.0.0" ändern
                                User                      auf "root" ändern
                                Ab diesem Moment konnte ich in der Konsole (über putty) mit den Befehlen
                                Code:
                                mpc add /var/lib/mpd/music/Ansagen/Ciao.wav  und 
                                mpc play
                                eine Deiner Ansagen abspielen.


                                Beim Konfigurieren Deines Plugins scheitere ich jedoch kläglich.
                                Ich muss vorausschicken, dass ich mehrere tausend GA habe, was einerseits dazu führt, dass ich Dein GA-System nicht (resp. nur partiell bezüglich der Durchsagen) übernehmen kann (was aber sicher keine Rolle spielen kann) und dass die EIBGA.CONF-Datei sehr gross ist. Anderseits verfüge ich nur über das interne "Soundsystem" des Wiregates, d.h. ich habe keine externe Soundkarte. Die Ausgabe kriege ich technisch hin (siehe oben).

                                Ich habe folgende Einstellungen vorgenommen:
                                *** Im eigentlichen Plugin (sollte eigentlich unerheblich sein, ich weiss):
                                Code:
                                # Defaultkonfiguration
                                my $speechdir='/var/lib/mpd/music/Ansagen';
                                my $mpddir='/var/lib/mpd/music';
                                my %channels=('default'=>'welcome');
                                my $beepchannel='welcome';
                                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
                                *** In Ansagen.conf (Ausschnitt):
                                Code:
                                $speechdir='/var/lib/mpd/music/Ansagen/';
                                %channels=('^Durchsage_'=>'default');
                                $beepchannel='welcome'; 
                                $beep = sprintf "Beep/%02d.wav", 3; 
                                @additional_subscriptions=qw(13/3/0 13/3/2 13/3/4 13/3/10);
                                $mode='mpd'; # mpd or aplay
                                $mpddir='/var/lib/mpd/music';
                                %mpdhost=('default'=>'127.0.0.1/6600');
                                $radioga='WebRadio$';
                                Im EIBGA.CONF habe ich folgende Einträge:
                                Code:
                                [13/3/0]
                                DPTId=16
                                DPTSubId=16.000
                                DPT_SubTypeName=DPT_Switch
                                name=Durchsage_WebRadio
                                
                                
                                [13/3/10]
                                DPTId=9
                                DPTSubId=9.001
                                name=Durchsage_Aussentemperatur
                                
                                [13/3/2]
                                DPTId=1
                                DPTSubId=1.001
                                DPT_SubTypeName=DPT_Switch
                                name=Durchsage_Rauchalarm
                                
                                [13/3/4]
                                DPTId=10
                                DPTSubId=10.001
                                name=Durchsage_Uhrzeit
                                Um Dein Plugin zu testen, sende ich einerseits aus dem ETS-Gruppenmonitor auf die GA 13/3/10 und 13/3/0 anderseits aus einem anderen Plugin
                                Code:
                                knx_write('13/3/10',24.5, 9.001); 
                                knx_write('13/3/0', 'Bayern3', 16);
                                Das Resultat dieser Tests ist Folgendes:
                                KNX sendet den Write Befehl; der Lautsprecher bleibt stumm und im wiregate_plugin.log findet sich auch kein Eintrag.

                                Herzlichen Dank wenn Du mir auf die Sprünge helfen könntest.

                                Kommentar

                                Lädt...
                                X