Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [unGelöst] Sonos Mp3 Sound abspielen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [unGelöst] Sonos Mp3 Sound abspielen

    This topic has been deleted. Only users with topic management privileges can see it.
    • flugwelle
      flugwelle last edited by

      1. ja, nur diesen Befehl

      2. hab nur einen …

      1 Reply Last reply Reply Quote 0
      • M
        Marty56 last edited by

        Danke und Ok.

        Der Workarround wäre für jeden Songs Lautsprecher einen eigenen Adapter zu installieren.

        Ziemlicher Krampf, das wäre dann wohl ein Change Request.

        Ich habe das Cache Problem noch mit einem zusätzliche Befehl gelöst.

        setState("sayit.0.tts.mp3",'');          // Sound Cache löschen
        sendTo('sonos.0', 'send', '70;http://192.168.1.124:8082/sayit.0/tts.userfiles/doorbell.mp3');
        
        
        1 Reply Last reply Reply Quote 0
        • M
          Marty56 last edited by

          Leider funktioniert die Installation eines zweiten Sonos Adapters nicht.

          Damit gibt es keine direkte Lösung für Anwender, die mehr als einen Sonos Lautsprecher haben.

          Außerdem scheint meine Kommandosequenz oben irgendetwas in dem Sonos Adapter durcheinander zu bringen.

          Ich sehe den Effekt, dass die Lautstärke der Sonos Box unerklärlicherweise auf Null gesetzt wird.

          Meine Lautsprecher sind die Sonos Playbar und Play1.

          Der einzige Workaround, der geht, ist einen Favoriten in der Sonos App einzurichten, diesem Favoriten einen Soundfile zu zuordnen und dann das Soundfile über die Favoriten Abspielfunktion des Sonos Adapters abzuspielen.

          Ziemlich umständlich und hinten durch die Brust ins Auge.

          1 Reply Last reply Reply Quote 0
          • N
            Nabla last edited by

            @Marty56:

            Leider funktioniert die Installation eines zweiten Sonos Adapters nicht.

            Damit gibt es keine direkte Lösung für Anwender, die mehr als einen Sonos Lautsprecher haben.

            Meine Lautsprecher sind die Sonos Playbar und Play1. `
            Der zweite Adapter funktioniert, aber die Playbar funktioniert nicht. Hatte zuerst das gleiche Problem.

            Zwei unterschiedliche Play1 kann man mit 2 Instanzen ansprechen.

            EDIT: Die tts-Datei wird sogar in der Sonos-App angezeigt jedoch nicht abgespielt.

            1 Reply Last reply Reply Quote 0
            • Jey Cee
              Jey Cee Developer last edited by

              Die Korrekte Lösung sieht so aus:

              setState(sonos.0.root.192_168_0_241.tts, http://192.168.0.3:8082/web/klingel1.mp3)
              

              Damit lässt sich jede Sonos Box einzeln ansprechen.

              1 Reply Last reply Reply Quote 0
              • N
                Nabla last edited by

                Ich muss hier auch noch mal forschen. (Befinde mich bei Sonos aber auch gerade in der geschlossenen Beta, vielleicht ist die Software hier auch noch nicht rund).

                Wenn TTS auf die Playbar in einer Gruppe (3.1/5.1) gesendet wird, wird Group-Volume auf 0 gesetzt, weshalb man die TTS-Ansage dann wohl nicht hört.

                Eine manuelle Änderung von level.volume wird wiederum auch in group.volume nachgezogen.

                1 Reply Last reply Reply Quote 0
                • Z
                  Zycho last edited by

                  Moin Jungs und Mädels,

                  ich habe es nun über das Script versucht, habe aber wohl noch irgendwo einen Denkfehler drinne.

                  ~~![](</s><URL url=)https://abload.de/img/unbenannt14sp5h.jpg" />

                  Habe meine Klingel über Blockly als Auslöser gesetzt.

                  Um dann folgendes Script auszulösen:

                  setState("sayit.0.tts.mp3",'');          // Sound Cache löschen
                  sendTo('sonos.0', 'send', '70;http://192.168.1.2:8082/sayit.0/tts.userfiles/caracal2.mp3');
                  

                  Die "192.168.1.2" ist die IP meines Raspberry und unter "/opt/iobroker/iobroker-data/files/sayit.0/tts.userfiles" liegt die caracal2.mp3

                  Was mache ich falsch, jemand einen Tip für mich?~~

                  1 Reply Last reply Reply Quote 0
                  • M
                    Marty56 last edited by

                    Ich habe schon Stunden (Tage) investiert, um eine Lösung zu bekommen, die Sound und Text bei Sonos mischt (natürlich nicht gleichzeitig, sondern hintereinander).

                    Leider bekomme ich das nicht stabil hin und die Randbedingungen dafür sind mir nicht klar.

                    Bei Sound gibt es ja noch nicht einmal eine verbindliche Dokumentation. Vielleicht ist dem Entwickler bewusst, dass es nicht funktioniert.

                    Es gibt immer Mal wieder Situationen, in denen mein Testsetup funktioniert.

                    Aber wenn ich die Einstellung dann "produktiv" schaltet, dann kommt es zu Ausfällen.

                    Die Symptome sind dann immer.

                    1. die Lautstärke ist auf 0 gesetzt.

                    2. die Playlist wird immer länger und alle "Befehle" werden angehängt und nicht mehr gespielt.

                    Nur mit der manuellen Löschung der Playlist mit Hilfe der Sonos App kann dann dieser Zustand verlassen werden.

                    Was funktioniert, ist die Aussage auf einen direkt angeschlossenen Lautsprecher.

                    Das hatte ich auch mal im Einsatz. Hat sich aber bei mir nicht richtig bewährt, weil mein Raspberry an einer Stelle installiert ist, an der der Sound nur bedingt wahrnehmbar ist.

                    Ich habe mittlerweile aufgegeben.

                    Jetzt benutze Telegram als verlässliches Benachrichtigungsmedium (natürlich ohne Sound).

                    Es könnte auch damit zusammenhängt, dass ich drei Sonos Lautsprecher habe und dazu noch unterschiedliche Typen (Playbar und zwei Play1). Man hört im Forum immer wieder, dass Leute, die keine Probleme habe, nur einen Sonos Lautsprecher haben.

                    PS: Ich verwende nur Javascript.

                    1 Reply Last reply Reply Quote 0
                    • T
                      tempestas last edited by

                      dublette

                      1 Reply Last reply Reply Quote 0
                      • T
                        tempestas last edited by

                        @Zycho:

                        Moin Jungs und Mädels,

                        ich habe es nun über das Script versucht, habe aber wohl noch irgendwo einen Denkfehler drinne.

                        ~~![](</s><URL url=)https://abload.de/img/unbenannt14sp5h.jpg" />

                        Habe meine Klingel über Blockly als Auslöser gesetzt.

                        Um dann folgendes Script auszulösen:

                        setState("sayit.0.tts.mp3",'');          // Sound Cache löschen
                        sendTo('sonos.0', 'send', '70;http://192.168.1.2:8082/sayit.0/tts.userfiles/caracal2.mp3');
                        

                        Die "192.168.1.2" ist die IP meines Raspberry und unter "/opt/iobroker/iobroker-data/files/sayit.0/tts.userfiles" liegt die caracal2.mp3

                        Was mache ich falsch, jemand einen Tip für mich?~~ ` ~~hast du denn schon CeeJeys Variante probiert?

                        setState(sonos.0.root.192_168_0_241.tts, http://192.168.0.3:8082/web/klingel1.mp3)
                        ````~~
                        1 Reply Last reply Reply Quote 0
                        • Z
                          Zycho last edited by

                          Kann mir jemand erklären, welche zwei IP-Adressen ich dort einsetzen muss? Die vom Raspberry leuchtet mir ein, aber warum eine zweite IP-Adresse?

                          1 Reply Last reply Reply Quote 0
                          • T
                            tempestas last edited by

                            @Jey Cee:

                            Die Korrekte Lösung sieht so aus:

                            setState(sonos.0.root.192_168_0_241.tts, http://192.168.0.3:8082/web/klingel1.mp3)
                            

                            Damit lässt sich jede Sonos Box einzeln ansprechen. `

                            Ich habe jetzt genau das mal gemacht. Ändert leider nichts daran, dass die jeweils angesprochene Box gemuted wird. Lautstärkebefehle werden ignoriert. Zudem wird die Lautstärke quasi dauerhaft auf 0 gesetzt. Ich kann weder per Sonos App noch per Objekte die Lautstärke anheben. Wird immer sofort wieder auf 0 gesetzt. Erst das ausschalten des Sonos Adapters korrigiert das

                            1 Reply Last reply Reply Quote 0
                            • H
                              HoffmannOs last edited by

                              Ich habe fast das gleiche Problem, wer kann mir Helfen?

                              //var vol ="sayit.0.tts.volume"; 
                              
                              function esklingelt() {
                                  var idSonosfav = getState("sonos.0.root.192_168_181_41.favorites_set").val;                  //speichern des aktuellen Senders
                                  var idSonosplay = getState ("sonos.0.root.192_168_181_41.state_simple").val;                 //Status des Speakers
                                  if (idSonosplay) {                                                                           //Wenn Radio läuft
                                      sendTo('sonos', 'send', '15;http://192.168.181.35:8082/state/sayit.0.tts.mp3');  //Mp3 Ausgabe mit Lautstärke 60
                                      setState ("sonos.0.root.192_168_181_41.favorites_set", idSonosfav);                      //nach 10 Sekunden gespeicherten Favoriten Sender wieder stellen
                                      setStateDelayed ("sonos.0.root.192_168_181_41.state_simple", idSonosplay, 7000);        //nach 10 Sekunden wieder starten
                                  } else {                                                                                     //Wenn Radio nicht läuft
                                      sendTo('sonos', 'send', '15;http://192.168.181.35:8082/state/sayit.0.tts.mp3');  //Mp3 Ausgabe mit Lautstärke 60
                                  }
                              } 
                              
                              setState("sayit.0.tts.mp3",'es klingelt');          // Sound Cache löschen
                              
                              on({id: "hm-rpc.1.NEQ0955114.1.PRESS_SHORT"/*HM-Sen-DB-PCB NEQ0955114:1.PRESS_SHORT*/, change:  "any"}, esklingelt); //bei kurzem Tastendruck "esklingelt" aufrufen
                              
                              

                              bei mir werden die Boxen gemutet, es kommt die mp3 file auf allen Boxen.

                              1 Reply Last reply Reply Quote 0
                              • S
                                speedy last edited by

                                Ich habe das gleiche Problem, und wenn nicht gemutet, dann wird das file in der Playlist hinten angereist, was ja keinen Sinn ergibt….

                                Gesendet von meinem WAS-TL10 mit Tapatalk

                                1 Reply Last reply Reply Quote 0
                                • M
                                  Marty56 last edited by

                                  Ich habe mich fast ein Jahr versucht Workarounds für den fehlerhaften Sonos Adapter zu finden.

                                  Außerdem habe ich Fehler im Issuetracker gemeldet, auf die nicht reagiert wurde.

                                  Ich habe den Eindruck, dass der Sonos Adapter nicht mehr gepflegt wird.

                                  Leider erlauben meine Kenntnisse es nicht, hier etwas zu ändern.

                                  Ich benutze deshalb seit einem Monat das node-Sonos-http-api.

                                  https://github.com/jishi/node-sonos-http-api

                                  Von ioBroker spreche ich das API über http get Aufrufe an. Bisher habe ich keine Probleme damit.

                                  1 Reply Last reply Reply Quote 0
                                  • G
                                    gemuesepudding Developer last edited by

                                    Ich habe etwas gefunden. Der Adapter scheint die einzelnen TTS in einer Queue zu speichern, wenn diese zu oft kommen. < 30 sek.

                                    sonos.0 2018-12-16 17:50:18.670 debug redis pmessage io.sonos.0.* io.sonos.0.root.192_168_6_83.queue {"val":"undefined - sayit.0.tts.mp3, undefined - sayit.0.tts.mp3, undefined - sayit.0.tts.mp3, undefined - sayit.0.tts.mp3, undefined -….

                                    sonos.0 2018-12-16 17:50:18.664 debug queue for http://192.168.6.83:1400: undefined - sayit.0.tts.mp3, undefined - sayit.0.tts.mp3, undefined - sayit.0.tts.mp3, undefined - sayit.0.tts.mp3, undefined - sayit.0.tts.mp3, undefined - sayit.0

                                    sonos.0 2018-12-16 17:50:18.429 debug player.tts= volume=39 currentTrack.uri=http://192.168.120.248:8082/state/sayit.0.tts.mp3 tts.playbackState=STOPPED

                                    und dann in Redis abgelegt zu werden. Aber offensichtlich nicht mehr weiter abgearbeitet.

                                    1 Reply Last reply Reply Quote 0
                                    • G
                                      gemuesepudding Developer last edited by

                                      Ach ja, dabei scheint auch die Lautstärke auf "0" zu gehen.

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        speedy last edited by

                                        @Marty56:

                                        Ich habe mich fast ein Jahr versucht Workarounds für den fehlerhaften Sonos Adapter zu finden.

                                        Außerdem habe ich Fehler im Issuetracker gemeldet, auf die nicht reagiert wurde.

                                        Ich habe den Eindruck, dass der Sonos Adapter nicht mehr gepflegt wird.

                                        Leider erlauben meine Kenntnisse es nicht, hier etwas zu ändern.

                                        Ich benutze deshalb seit einem Monat das node-Sonos-http-api.

                                        https://github.com/jishi/node-sonos-http-api

                                        Von ioBroker spreche ich das API über http get Aufrufe an. Bisher habe ich keine Probleme damit. `

                                        Ich verwende den den Sonos Adapter auch nur, damit die Sonos über VIS gesteuert werden können.

                                        SayIt würde ich gerne benutzen, habe dies aber nie wirklich brauchbar ansteuern können. D.h. es wurde immer irgendetwas gemacht,

                                        aber nicht das abgespielt, was es sollte…

                                        Die node-Sonos-http-api ist aber kein Adapter für ioBroker, oder?

                                        Wie kann ich dies dann im ioBroker verwenden?

                                        Über eine Minianleitung wäre ich schon dankbar, ich denke, dass ich auch nicht alleine bin.

                                        LG speedy

                                        1 Reply Last reply Reply Quote 0
                                        • M
                                          Marty56 last edited by

                                          Installieren, wie im GItHub beschrieben und dann den Server starten.

                                          Ich habe mir noch ein Unterprogramm gemacht, um die Befehle etwas komfortabler absetzen zu können.

                                          Muss aber zugeben, dass auch dieser Ansatz nach einer Weile Schwächen gezeigt hat, so dass ich ihn nicht mehr benutze.

                                          Was die Probleme genau waren. weiß ich jetzt gar nicht mehr.

                                          Mittlerweile benutze ich Sonos überhaupt nicht mehr für ioBroker, sondern mache alles über die Alexa Lautsprecher.

                                          /* ------------------------ node-sonos-http-api --------------------------------
                                            Der Server muss laufen
                                            im Terminal  starten mit
                                          
                                            cd /opt/iobroker/node_sonos_http_api-master
                                            nohup npm start &
                                            exit
                                          
                                            Queue löschen
                                            node_sonos_http_api("Wohnzimmer","clearqueue");
                                          
                                            Lautstärker einstellen
                                            node_sonos_http_api("Wohnzimmer","volume/"+ "30");
                                          
                                            Play/Stop
                                            node_sonos_http_api("Wohnzimmer","pause");
                                          
                                            Mp3-file abspielen
                                            das mp3-file muss unter static/clip abgelegt sein
                                            node_sonos_http_api("Wohnzimmer","clip/"+ "gong.mp3");
                                          
                                            Sayit abspielen
                                            node_sonos_http_api("Wohnzimmer","clip/"+ "sayit.mp3"); oder
                                            node_sonos_http_api("Wohnzimmer","sayit");
                                          
                                            Voraussetzung, das ein sayit File vorher erzeugt wurde
                                          
                                          */
                                          // node_sonos_http_api("Wohnzimmer","volume/"+ "90"); 
                                          //----------------- file copy function -----------------------------------------
                                          function copyFile(source,destination) {
                                              exec("cp " + source + " " + destination, function (error, stdout, stderr) {
                                                  if (!error) {
                                                      log("File kopiert");
                                                  } else {log(stdout);log("Fehler beim Kopieren");}
                                              });
                                          }
                                          
                                          var http = require('http');
                                          function node_sonos_http_api(speaker,command) {
                                              log('node_sonos_http_api: ' + command + ' auf ' + speaker);
                                              var delay = 0;
                                              if (command.includes('sayit')) {
                                                  //copyFile('/opt/iobroker/node_modules/iobroker.sayit/sayit.1.say.mp3', '/opt/iobroker/node-sonos-http-api-master/static/clips/sayit.mp3');
                                                  // habe habe in dem Verzeichnig clip/static ein hardlink auf sayit.1.say.mp3
                                                  // angelegt. Das geht mit dem Befehl
                                                  // ln  /opt/iobroker/node_modules/iobroker.sayit/sayit.1.say.mp3
                                                  // kopieren ist damit nicht mehr notwendig 
                                          
                                                  delay = 1000;
                                                  command = 'clip/sayit.1.say.mp3';
                                              }
                                              setTimeout( function() {
                                                  var reqOptions = {
                                                      hostname: '192.168.10.78',
                                                      port:     5005,
                                                      path:     '/' + speaker + '/' + command,
                                                      method:   'GET'
                                                  };
                                          
                                                  var req = http.request(reqOptions, function (res) {
                                                      var data = '';
                                                      res.on('data',function (chunk) {data += chunk;});
                                                      res.on('end', function () {
                                                          log('Sonos ' + command + ' ok');
                                                      });
                                                  });
                                                  req.on('error', function (e) {
                                                      log("Fehler:" + e.message);
                                                  });
                                                  req.end();
                                              }, delay);
                                          }
                                          
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • S
                                            speedy last edited by

                                            Danke, werde ich mal testen.

                                            Alexa habe und will ich nicht haben, da bin ich etwas eigen…

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            693
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            14
                                            48
                                            11419
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo