Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. [unGelöst] Sonos Mp3 Sound abspielen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    14
    1
    432

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    613

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.8k

[unGelöst] Sonos Mp3 Sound abspielen

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
48 Beiträge 14 Kommentatoren 14.1k Aufrufe 9 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    speedy
    schrieb am zuletzt editiert von
    #23

    Danke, werde ich mal testen.

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


    ioBroker - Neuling ;)

    1 Antwort Letzte Antwort
    0
    • M Offline
      M Offline
      Marty56
      schrieb am zuletzt editiert von
      #24

      Ich habe nochmal herumexperimentiert und glaube einen Ansatz gefunden zu haben.

      Ich benutze von dem Sonos Adapter ausschließlich den "tts" State.

      Die Kombination mit anderen Funktionen führt bei mir immer wieder zu unerklärlichen Fehlfunktion.

      MIt dem State kann man von einem http Server Sound wiedergeben. Hat man einen sayit adapter Installiert, kann man iobroker selber dafür verwenden. Alle Mp3 Files liegen bei mir unter

      /opt/iobroker/iobroker-data/files/sayit.1/tts.userfiles/

      Diesen Ansatz benutze ich auch für text2speech.

      Dazu habe ich eine Text2speech Instanz (sayit.1) angelegt, die auf "Browser" ausgibt. (Nicht auf SONOS! wichtig!!).

      Diese Instanz erzeugt ein File unter dem Verzeichnis

      /opt/iobroker/node_modules/iobroker.sayit/sayit.1.say.mp3

      Um dieses File mit dem tts state auszugeben, habe ich einen symbolischen Link in mein Mp3 Verzeichnis gelegt mit

      cd /opt/iobroker/iobroker-data/files/sayit.1/tts.userfiles/
      ln  /opt/iobroker/node_modules/iobroker.sayit/sayit.1.say.mp3
      
      

      Damit kann dieses File (nachdem es erzeugt wurde) durch Setzen des tts States abgespielt werden.

      Außerdem sorge ich noch dafür, dass keine Sonos Commands von iobroker abgesetzt werden, wenn meine Harmony gleichzeitig versucht, den Sonos Lautsprecher zu bedienen.

      var soundserverurl      = 'http://192.168.108.78:8082/';
      var path_of_soundfiles  = 'sayit.1/tts.userfiles/';
      var sonosWZtts          = "sonos.0.root.192_168_108_32.tts";
      var sonosWZdefaultvol   = 40;
      var Harmony_currentStatus   = "harmony.0.Wohnzimmer.activities.currentStatus";
      
      function sonosmp3play(sound,vol) {
          var harmony = getState(Harmony_currentStatus).val;
          if ( ((harmony === 2) || (harmony === 0))) {
              if (vol === undefined) vol = sonosWZdefaultvol;
              setState(sonosWZtts,vol+";"+soundserverurl + sound);
          } else {
             log("Sonos speaker busy.");
          }
      }
      // Beispiel: Abspielen eines Text2Speech Files.
      // Diser benötigt ca. 2 Sekunden Verzögerung nach dem Text2Speech Command auf Browser
      
      sonosmp3play(path_of_soundfiles + 'sayit.1.say.mp3',vol);
      
      //Beispiel: Abspielen eines Sound Files
      
      sonosmp3play(path_of_soundfiles + 'doorbell.mp3',vol);
      
      

      HW:NUC (16 GB Ram)
      OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        speedy
        schrieb am zuletzt editiert von
        #25

        Hallo Marty56,

        das werde ich bei Gelegenheit mal so testen.

        Ich könnte ja die meisten "Ansagen" auch als mp3 hinterlegen, damit würde ich vieles einfach abdecken.

        Werde es auf jedenfalls mal so testen und wenn's klappt umsetzen.

        Besten Dank für deine Hilfe.


        ioBroker - Neuling ;)

        1 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          speedy
          schrieb am zuletzt editiert von
          #26

          So, konnte nun doch gleich mal testen.

          Habe es nun genauso versucht, aber das Problem ist, dass in der Wiedergabeliste (lt. Sonos App am Rechner) einige Lieder hinterlegt sind.

          Diese werden nun erstmals abgespielt und somit hat mein Eintrag unter tts keinen Sinn (wird nicht abgespielt).

          Wenn die Liste leer ist, funktioniert es. Aber ich konnte keine Möglichkeit finden, wie ich die Liste aus ioBroker leeren könnte.

          Die Liste wird aber bei Verwendung der Sonos mal mehr mal weniger Einträge aufweisen…

          Dann kommt noch dazu, dass die Lautstärke sich von alleine erhöht. Ich habe im ioBroker eine MaxLautstärke eingestellt :D .

          Diese hält mir die Lautstärke dann auf 20%.

          Meiner Meinung macht dieser Adapter nur wenig Sinn... er ist einfach unausgereift...

          Schade


          ioBroker - Neuling ;)

          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            Marty56
            schrieb am zuletzt editiert von
            #27

            Ja der Adapter ist ziemlicher Schrott!

            Ich hatte mit meiner Lösung nach ca. 2 Wochen auch wieder so einen "PSI- Effekt", dass ich plötzlich kein Mp3 File mehr abspielen konnte.

            Statt dessen hat er das Mp3 File der letzten Ansage immer wieder abgespielt.

            Ich habe jetzt in meiner Sound Routine noch ein Dummy Abspielen eines Favoriten eingefügt.

            Damit ist zunächst mal das Symtom weg. Aber ob das eine langfristig, stabile Lösung ist, weiß ich auch nicht.

            function sonosmp3play(sound,vol) {
                var harmony = getState(Harmony_currentStatus).val;
                if ( ((harmony === 2) || (harmony === 0))) {
                    setState("sonos.0.root.192_168_10_32.favorites_set","");
                    if (vol === undefined) vol = sonosWZdefaultvol;
                    setStateDelayed(sonosWZtts,vol+";"+soundserverurl + sound,1000);
                } else {
                   log("Sonos speaker busy.");
                }
            }
            

            Update: Funktioniert auch nicht.

            I give up. Schrott bleibt Schrott, da hilft auch kein Lippenstift.

            HW:NUC (16 GB Ram)
            OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

            1 Antwort Letzte Antwort
            0
            • M Offline
              M Offline
              Marty56
              schrieb am zuletzt editiert von Marty56
              #28

              Ich habe jetzt die gesamte Soundausgabe auf Sonos auf den "node-sonos-http-api" Server umgestellt und den Sonos Adapter gelöscht.
              Außerdem habe ich mein "Sound API" vereinheitlich, so dass ich es auch für die 5 Alexa Lautsprecher verwenden kann. Dieses Script habe ich seit 14 Tage ohne Problem im Einsatz.

              
              /* ------------------------ node-sonos-http-api --------------------------------
                1. Master von https://github.com/jishi/node-sonos-http-api herunterladen
                
                2. Das Repro unter /opt/iobroker/node_sonos_http_api-master entpacken
                
                3. und dort mit npm install --production installieren.
                
                4. Der 'node-sonos-http' Server starten mit 
              
                cd /opt/iobroker/node_sonos_http_api-master
                nohup npm start &
              
                
                Kommandos:
                
                Queue löschen
                node_sonos_http_api("Wohnzimmer","clearqueue");
                
                Play/Stop
                node_sonos_http_api("Wohnzimmer","pause");
                
                Mp3-file abspielen
                Das mp3-file muss unter static/clip abgelegt sein.
                Nach Beendigung wird die vorige Lautstärke wiederhergestellt
                Beispiel mit Lautstärke 40%
                node_sonos_http_api("Wohnzimmer","clip/"+ "gong.mp3/40");
              
                
                Text to speech
                Es ist eine sayit instanz instanziert, die ein Mp3- file erzeugt und als 
                Ausgabe Browser verwendet. 
                Dazu wird das vom Adapter sayit erzeugte Mp3- file nach static/clip
                kopiert. Achtung: Das Cachen des sayit Adapters muss dafür ausgeschaltet sein.
                
                Beispiel: Sayit abspielen mit Lautstärke 50
                node_sonos_http_api("Wohnzimmer","clip/"+ "sayit.mp3/50");
                
                
              */
              
              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');
                      // Ausgabe 1 Sekunde verzögern, 
                      // damit das Kopieren von sayit.1.say.mp3 abgeschlossen werden kann.
                      delay = 1000;
                  }
                  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);
              }
              /*
              ----- 5 Alexa Lautsprecher und 1 Sonos Playbar -------------------------------
              Die Funktion text_to_wlan speaker funktioniert sowohl für Alexa Lautsprecher
              als auch für eine Playbar (WZ).
              
              */
              var alexa = {
                  "Bad":          'alexa2.0.Echo-Devices.G090LV037324007K',
                  "Kinderzimmer": 'alexa2.0.Echo-Devices.90F00818720400KN',
                  "Küche":        'alexa2.0.Echo-Devices.G090LV03717501KP',
                  "Diele" :       'alexa2.0.Echo-Devices.G090LF09650418PG',
                  "Obergeschoss": 'alexa2.0.Echo-Devices.G2A0P308844308UB',
                  "WZ":           ''
              };
              var alarmvol = 100;
              var klingelvol = 80;
              
              function text_to_wlan_speacher(txt,vol,night,device) {
                  var delay = 0;
                  if ((new Date() >= getDateObject("6:59"))  && 
                      (new Date() <= getDateObject("22:30")) ||
                      (night === true)) {
                      if(alexa[device] !== undefined)
                          if(alexa[device].substr(0,5) == "alexa") {
                              if (vol !== undefined) {
                                  delay = 500;
                                  setState(alexa[device] + ".Commands.speak-volume",parseInt(vol));
                              }
                              setTimeout(function(){setState(alexa[device] + ".Commands.speak",txt);},delay);
                          } else {
                               
                          // Aufruf der Routine 3 Sek verzögert, damit sayit Adapter Zeit hat
                          // das mp3 file zu erzeugen.
                              setTimeout(function () {
                                  if (vol === undefined) vol = ''; else vol = "/" + vol;
                                  node_sonos_http_api("Wohnzimmer","clip/sayit.mp3"+vol);
                              },3000);
                              //delay  = (txt.length/3)*1000 + 3000;
                              //setTimeout(function () { node_sonos_http_api("Wohnzimmer","clearqueue");},delay);
                          } 
                      else log("unbekannter Lautsprecher");    
                  } else {
                      log("Die unterdrückte Sprachausgabe um " + formatDate(new Date(),'h') + 
                          " Uhr " + formatDate(new Date(),'m') + ' lautete ' + txt + '!');
                  }
              }
              /*
              Aufruf von Text to Speech durch Schreiben auf Datenpunkt "speechout2". Z.B. 
              
              setState("speechout2",JSON.stringify(
                  {   text:   "Hallo Martin",
                      vol:21,
                      device: "WZ",
                      night:  false
                  }));
                  
              text: Der Ausgabetext
              vol:  Die Ausgabelautstärke (optional)
              device: Die Lautsprecherbezeichnung (optional), falls nicht angegeben dann nur
                      Ausgabe auf Browser
                      Bad: Ausgabe im Bad
                      Obergeschoss: Ausgabe im Obergeschoss,
                      Küche: Ausgabe in der Küche
                      Kinderzimmer: Augabe im Kinderzimmer
                      WZ: Ausgabe im Wohnzimmer
                      ALL oder Haus: Ausgabe auf allen Lautsprecher
                      HausohneKZ: Ausgabe auf allen Lautsprecher bis auf Kinderzimmer
                      HausohneWZ: Ausgabe auf allen Lautsprechern bis auf Wohnzimmer
                      
              night: optional. bei false(default) wird Sprachausgabe in der Nacht unterdrückt
              
              */
              
              on({id: "speechout2", change: "any"}, function (obj) {
                  var parameter = JSON.parse(obj.state.val);
                  console.log("speechout2: " + parameter.text + " auf " + ((parameter.device === undefined) ? "Tablet":parameter.device));
                  setState('sayit.1.tts.text','<speak><break time="2s"/>' + parameter.text + '</speak>');
                  if (parameter.night  === undefined) parameter.night = false;
                  if (parameter.device !== undefined) {
                      if ((parameter.device === "ALL") || (parameter.device === "Haus")){
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'WZ');
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Bad');
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Obergeschoss');
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Küche');
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Kinderzimmer');
                      } else
                      if (parameter.device === "HausohneKZ") {
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'WZ');
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Bad');
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Obergeschoss');
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Küche');
                      } 
                      else
                      if (parameter.device === "HausohneWZ") {
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Bad');
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Obergeschoss');
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Küche');
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Kinderzimmer');
                      } else
                          text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,parameter.device);
                  }
              });
              /* Soundausgabe
              Es gibt zwei Soundausgaben
              1. Alarmierung mit Hundegebell über die Playbar im Wohnzimmer
              2. Türklingel mit Sound "doorbell.mp3" im Wohnzimmer und einem freien Sound von
                 der Amazon Musiklibrary namens: "spiele Turmuhr schlägt 12 - Geisterstunde".
              */
              
              //----------------- Hundebellen als zusätzliches Alarmsignal  ------------------
              createState("Hunde",false);
              on({id: "Hunde", change: "gt"}, function(obj) {
                  node_sonos_http_api("Wohnzimmer","clip/"+ "hunde.mp3/" + alarmvol);
                  });
              on({id: "Hunde", change: "lt"},function(obj) {
                  node_sonos_http_api("Wohnzimmer","pause");
                  setTimeout(function () {node_sonos_http_api("Wohnzimmer","clearqueue");},3000);
              });
              
              //-- Türklingeln über Lautsprecher "verstärken" -------------------------------
              var lock = false;
              on({id: getIdByName('Doorbell.PRESS_SHORT'), val: true}, function (obj) {
                 if (lock === false) {
                      lock = true;
                      if(getState("Presence").val === true)
                          setStateDelayed(alexa.Obergeschoss + ".Music-Provider.Amazon-Music","spiele Turmuhr schlägt 12 - Geisterstunde",0);
                          setStateDelayed(alexa.Obergeschoss + ".Player.controlPause",true,10000);
                          node_sonos_http_api("Wohnzimmer","clip/"+ "doorbell.mp3/"+klingelvol);
                          setTimeout(function () {node_sonos_http_api("Wohnzimmer","clearqueue");},10000);
                      //setState('Botschaft', "Am " + formatDate(new Date(), "W") + ' um ' + formatDate(new Date(), "hh:mm") + " hat es geklingelt");
                      setTimeout(function () { lock = false},30000);
                 } 
              });
              
              

              HW:NUC (16 GB Ram)
              OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

              K 1 Antwort Letzte Antwort
              0
              • M Marty56

                Ich habe jetzt die gesamte Soundausgabe auf Sonos auf den "node-sonos-http-api" Server umgestellt und den Sonos Adapter gelöscht.
                Außerdem habe ich mein "Sound API" vereinheitlich, so dass ich es auch für die 5 Alexa Lautsprecher verwenden kann. Dieses Script habe ich seit 14 Tage ohne Problem im Einsatz.

                
                /* ------------------------ node-sonos-http-api --------------------------------
                  1. Master von https://github.com/jishi/node-sonos-http-api herunterladen
                  
                  2. Das Repro unter /opt/iobroker/node_sonos_http_api-master entpacken
                  
                  3. und dort mit npm install --production installieren.
                  
                  4. Der 'node-sonos-http' Server starten mit 
                
                  cd /opt/iobroker/node_sonos_http_api-master
                  nohup npm start &
                
                  
                  Kommandos:
                  
                  Queue löschen
                  node_sonos_http_api("Wohnzimmer","clearqueue");
                  
                  Play/Stop
                  node_sonos_http_api("Wohnzimmer","pause");
                  
                  Mp3-file abspielen
                  Das mp3-file muss unter static/clip abgelegt sein.
                  Nach Beendigung wird die vorige Lautstärke wiederhergestellt
                  Beispiel mit Lautstärke 40%
                  node_sonos_http_api("Wohnzimmer","clip/"+ "gong.mp3/40");
                
                  
                  Text to speech
                  Es ist eine sayit instanz instanziert, die ein Mp3- file erzeugt und als 
                  Ausgabe Browser verwendet. 
                  Dazu wird das vom Adapter sayit erzeugte Mp3- file nach static/clip
                  kopiert. Achtung: Das Cachen des sayit Adapters muss dafür ausgeschaltet sein.
                  
                  Beispiel: Sayit abspielen mit Lautstärke 50
                  node_sonos_http_api("Wohnzimmer","clip/"+ "sayit.mp3/50");
                  
                  
                */
                
                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');
                        // Ausgabe 1 Sekunde verzögern, 
                        // damit das Kopieren von sayit.1.say.mp3 abgeschlossen werden kann.
                        delay = 1000;
                    }
                    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);
                }
                /*
                ----- 5 Alexa Lautsprecher und 1 Sonos Playbar -------------------------------
                Die Funktion text_to_wlan speaker funktioniert sowohl für Alexa Lautsprecher
                als auch für eine Playbar (WZ).
                
                */
                var alexa = {
                    "Bad":          'alexa2.0.Echo-Devices.G090LV037324007K',
                    "Kinderzimmer": 'alexa2.0.Echo-Devices.90F00818720400KN',
                    "Küche":        'alexa2.0.Echo-Devices.G090LV03717501KP',
                    "Diele" :       'alexa2.0.Echo-Devices.G090LF09650418PG',
                    "Obergeschoss": 'alexa2.0.Echo-Devices.G2A0P308844308UB',
                    "WZ":           ''
                };
                var alarmvol = 100;
                var klingelvol = 80;
                
                function text_to_wlan_speacher(txt,vol,night,device) {
                    var delay = 0;
                    if ((new Date() >= getDateObject("6:59"))  && 
                        (new Date() <= getDateObject("22:30")) ||
                        (night === true)) {
                        if(alexa[device] !== undefined)
                            if(alexa[device].substr(0,5) == "alexa") {
                                if (vol !== undefined) {
                                    delay = 500;
                                    setState(alexa[device] + ".Commands.speak-volume",parseInt(vol));
                                }
                                setTimeout(function(){setState(alexa[device] + ".Commands.speak",txt);},delay);
                            } else {
                                 
                            // Aufruf der Routine 3 Sek verzögert, damit sayit Adapter Zeit hat
                            // das mp3 file zu erzeugen.
                                setTimeout(function () {
                                    if (vol === undefined) vol = ''; else vol = "/" + vol;
                                    node_sonos_http_api("Wohnzimmer","clip/sayit.mp3"+vol);
                                },3000);
                                //delay  = (txt.length/3)*1000 + 3000;
                                //setTimeout(function () { node_sonos_http_api("Wohnzimmer","clearqueue");},delay);
                            } 
                        else log("unbekannter Lautsprecher");    
                    } else {
                        log("Die unterdrückte Sprachausgabe um " + formatDate(new Date(),'h') + 
                            " Uhr " + formatDate(new Date(),'m') + ' lautete ' + txt + '!');
                    }
                }
                /*
                Aufruf von Text to Speech durch Schreiben auf Datenpunkt "speechout2". Z.B. 
                
                setState("speechout2",JSON.stringify(
                    {   text:   "Hallo Martin",
                        vol:21,
                        device: "WZ",
                        night:  false
                    }));
                    
                text: Der Ausgabetext
                vol:  Die Ausgabelautstärke (optional)
                device: Die Lautsprecherbezeichnung (optional), falls nicht angegeben dann nur
                        Ausgabe auf Browser
                        Bad: Ausgabe im Bad
                        Obergeschoss: Ausgabe im Obergeschoss,
                        Küche: Ausgabe in der Küche
                        Kinderzimmer: Augabe im Kinderzimmer
                        WZ: Ausgabe im Wohnzimmer
                        ALL oder Haus: Ausgabe auf allen Lautsprecher
                        HausohneKZ: Ausgabe auf allen Lautsprecher bis auf Kinderzimmer
                        HausohneWZ: Ausgabe auf allen Lautsprechern bis auf Wohnzimmer
                        
                night: optional. bei false(default) wird Sprachausgabe in der Nacht unterdrückt
                
                */
                
                on({id: "speechout2", change: "any"}, function (obj) {
                    var parameter = JSON.parse(obj.state.val);
                    console.log("speechout2: " + parameter.text + " auf " + ((parameter.device === undefined) ? "Tablet":parameter.device));
                    setState('sayit.1.tts.text','<speak><break time="2s"/>' + parameter.text + '</speak>');
                    if (parameter.night  === undefined) parameter.night = false;
                    if (parameter.device !== undefined) {
                        if ((parameter.device === "ALL") || (parameter.device === "Haus")){
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'WZ');
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Bad');
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Obergeschoss');
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Küche');
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Kinderzimmer');
                        } else
                        if (parameter.device === "HausohneKZ") {
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'WZ');
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Bad');
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Obergeschoss');
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Küche');
                        } 
                        else
                        if (parameter.device === "HausohneWZ") {
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Bad');
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Obergeschoss');
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Küche');
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,'Kinderzimmer');
                        } else
                            text_to_wlan_speacher(parameter.text,parameter.vol,parameter.night,parameter.device);
                    }
                });
                /* Soundausgabe
                Es gibt zwei Soundausgaben
                1. Alarmierung mit Hundegebell über die Playbar im Wohnzimmer
                2. Türklingel mit Sound "doorbell.mp3" im Wohnzimmer und einem freien Sound von
                   der Amazon Musiklibrary namens: "spiele Turmuhr schlägt 12 - Geisterstunde".
                */
                
                //----------------- Hundebellen als zusätzliches Alarmsignal  ------------------
                createState("Hunde",false);
                on({id: "Hunde", change: "gt"}, function(obj) {
                    node_sonos_http_api("Wohnzimmer","clip/"+ "hunde.mp3/" + alarmvol);
                    });
                on({id: "Hunde", change: "lt"},function(obj) {
                    node_sonos_http_api("Wohnzimmer","pause");
                    setTimeout(function () {node_sonos_http_api("Wohnzimmer","clearqueue");},3000);
                });
                
                //-- Türklingeln über Lautsprecher "verstärken" -------------------------------
                var lock = false;
                on({id: getIdByName('Doorbell.PRESS_SHORT'), val: true}, function (obj) {
                   if (lock === false) {
                        lock = true;
                        if(getState("Presence").val === true)
                            setStateDelayed(alexa.Obergeschoss + ".Music-Provider.Amazon-Music","spiele Turmuhr schlägt 12 - Geisterstunde",0);
                            setStateDelayed(alexa.Obergeschoss + ".Player.controlPause",true,10000);
                            node_sonos_http_api("Wohnzimmer","clip/"+ "doorbell.mp3/"+klingelvol);
                            setTimeout(function () {node_sonos_http_api("Wohnzimmer","clearqueue");},10000);
                        //setState('Botschaft', "Am " + formatDate(new Date(), "W") + ' um ' + formatDate(new Date(), "hh:mm") + " hat es geklingelt");
                        setTimeout(function () { lock = false},30000);
                   } 
                });
                
                
                K Offline
                K Offline
                Karatekid
                schrieb am zuletzt editiert von
                #29

                @Marty56

                Nachdem ich die selben Probleme mit dem Adapter hatte, habe ich dein Script ausprobiert und mit ein wenig Anpassung funktioniert es echt super.

                Das einzige Problem was ich noch habe ist, dass es nicht mit Airplay funktioniert.
                Da hier die Gruppe aufgelöst wird und nicht wieder verbunden werden kann.
                Aber dies wird wohl ein Problem der Sonos API sein oder?

                M 1 Antwort Letzte Antwort
                0
                • K Karatekid

                  @Marty56

                  Nachdem ich die selben Probleme mit dem Adapter hatte, habe ich dein Script ausprobiert und mit ein wenig Anpassung funktioniert es echt super.

                  Das einzige Problem was ich noch habe ist, dass es nicht mit Airplay funktioniert.
                  Da hier die Gruppe aufgelöst wird und nicht wieder verbunden werden kann.
                  Aber dies wird wohl ein Problem der Sonos API sein oder?

                  M Offline
                  M Offline
                  Marty56
                  schrieb am zuletzt editiert von
                  #30

                  @Karatekid
                  Keine Ahnung. Ich habe kein Airplay.

                  HW:NUC (16 GB Ram)
                  OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

                  1 Antwort Letzte Antwort
                  0
                  • Q Offline
                    Q Offline
                    Qlink
                    schrieb am zuletzt editiert von
                    #31

                    @Marty56 said in [unGelöst] Sonos Mp3 Sound abspielen:

                    node_sonos_http_api("Wohnzimmer","clearqueue");

                    Hi Marty,
                    ich hätte mich heute auch an deinem Vorschlag probiert.
                    Leider läuft bei mir scheinbar der sonos server schon gar nicht weg.
                    Hier ein Screenshot:
                    sonos.PNG

                    Oder ist das "listening an 0.0.0.0 .." normal ?

                    Wird der api Server bei einem Restart des Hosts automatisch gestartet ?

                    M 1 Antwort Letzte Antwort
                    0
                    • Q Qlink

                      @Marty56 said in [unGelöst] Sonos Mp3 Sound abspielen:

                      node_sonos_http_api("Wohnzimmer","clearqueue");

                      Hi Marty,
                      ich hätte mich heute auch an deinem Vorschlag probiert.
                      Leider läuft bei mir scheinbar der sonos server schon gar nicht weg.
                      Hier ein Screenshot:
                      sonos.PNG

                      Oder ist das "listening an 0.0.0.0 .." normal ?

                      Wird der api Server bei einem Restart des Hosts automatisch gestartet ?

                      M Offline
                      M Offline
                      Marty56
                      schrieb am zuletzt editiert von Marty56
                      #32

                      @Qlink Er scheint die settings.json nicht zu finden und listening on 0.0.0.0 ist nicht normal.
                      Ich habe die settings.json nicht verändert. Die war in dem entpackten Verzeichnis vorhanden.
                      Ich würde vermuten, dass Du einen Fehler beim Entpacken der Files gemacht hast.

                      HW:NUC (16 GB Ram)
                      OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

                      S 1 Antwort Letzte Antwort
                      0
                      • B Offline
                        B Offline
                        Baerny
                        schrieb am zuletzt editiert von
                        #33

                        @Marty56 Da ich auch nur Probleme mit Sonos und Sayit hatte würde ich gerne mal den "node-sonos-http-api" Server probieren. Gibt es irgendwo eine Anleitung wie ich den in iobroker installieren kann.
                        Baerny

                        CCU 2 | Intel NUC mit Proxmox

                        1 Antwort Letzte Antwort
                        0
                        • M Offline
                          M Offline
                          Marty56
                          schrieb am zuletzt editiert von
                          #34

                          Der Server läuft unabhängig von iobroker.
                          Installation wird unter https://github.com/jishi/node-sonos-http-api beschrieben.

                          Ansonsten in dem Beispielscript reinschauen. Da steht alles drin.

                          HW:NUC (16 GB Ram)
                          OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

                          1 Antwort Letzte Antwort
                          0
                          • S Offline
                            S Offline
                            skokarl
                            schrieb am zuletzt editiert von skokarl
                            #35

                            Moin,
                            bin jetzt mit im Boot, habe 4 Sonos One und kriege keinen Ton raus,
                            was ein Mist. :upside_down_face:

                            Und Marty, Du hast natürlich recht..... anstatt einem Ton kommt ein "mute".

                            Das ist zum ....

                            leider bin ich mir nicht sicher ob ich Deine Workaround - Lösung hinbekomme.

                            IOBroker mit Proxmox auf Celeron Nuc mit 16 GB und Debian11, Sonos API, Echo Show 15 als Wandtablet, Homematic IP, HUE, Sonos, Echos, DS718+ als Backup

                            1 Antwort Letzte Antwort
                            0
                            • smileS Offline
                              smileS Offline
                              smile
                              schrieb am zuletzt editiert von
                              #36

                              Hi zusammen,
                              ich schließe mich @skokarl an, würde auch sehr gerne sayit Ausgaben über Sonos zum Laufen bekommen. Hat es mit der Workaround Lösung nun nachhaltig geklappt? Gibt es ggf. eine genaue Beschreibung wie die Installation und Einrichtung gemacht werden kann?

                              Es wäre so klasse wenn das wieder läuft, ich denke das würde vielen entgegenkommen da Sonos ja recht verbreitet ist?


                              io.broker @ debian @ virtualbox @ Windows 10 Pro / Node 18.17.1, npm 9.6.7 / CCU3 / IR.Trans Server / Daslight 4 / Mobotix IP Cams / Qnap NAS / Sonos /

                              Mein Rolladen - Blockly: https://forum.iobroker.net/topic/6442/das-ultimative-markisen-rolladen-blockly-script

                              M 1 Antwort Letzte Antwort
                              0
                              • S Offline
                                S Offline
                                skokarl
                                schrieb am zuletzt editiert von
                                #37

                                vielleicht nimmt sich eines Tages nochmal jemand den Adapter und
                                sieht sich die Fehler an

                                IOBroker mit Proxmox auf Celeron Nuc mit 16 GB und Debian11, Sonos API, Echo Show 15 als Wandtablet, Homematic IP, HUE, Sonos, Echos, DS718+ als Backup

                                1 Antwort Letzte Antwort
                                0
                                • smileS smile

                                  Hi zusammen,
                                  ich schließe mich @skokarl an, würde auch sehr gerne sayit Ausgaben über Sonos zum Laufen bekommen. Hat es mit der Workaround Lösung nun nachhaltig geklappt? Gibt es ggf. eine genaue Beschreibung wie die Installation und Einrichtung gemacht werden kann?

                                  Es wäre so klasse wenn das wieder läuft, ich denke das würde vielen entgegenkommen da Sonos ja recht verbreitet ist?

                                  M Offline
                                  M Offline
                                  Marty56
                                  schrieb am zuletzt editiert von
                                  #38

                                  @smile Mein Workarround läuft seit Januar stabil und ohne Probleme. Ich habe eine Sonos Playbar, die am TV angeschlossen ist.
                                  Auch das Umschalten zwischen Fernsehbetrieb und Durchsage funktioniert wie gewünscht. Die Mischung zwischen Soundausgabe und Text funktioniert auch fehlerfrei.

                                  HW:NUC (16 GB Ram)
                                  OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

                                  S 1 Antwort Letzte Antwort
                                  0
                                  • M Marty56

                                    @smile Mein Workarround läuft seit Januar stabil und ohne Probleme. Ich habe eine Sonos Playbar, die am TV angeschlossen ist.
                                    Auch das Umschalten zwischen Fernsehbetrieb und Durchsage funktioniert wie gewünscht. Die Mischung zwischen Soundausgabe und Text funktioniert auch fehlerfrei.

                                    S Offline
                                    S Offline
                                    skokarl
                                    schrieb am zuletzt editiert von
                                    #39

                                    @Marty56
                                    das freut uns ....

                                    Kannst Du mal bei Gelegenheit ein Howto für Dummies machen ? Muss ja nicht gerade am Vatertag sein :relaxed:

                                    IOBroker mit Proxmox auf Celeron Nuc mit 16 GB und Debian11, Sonos API, Echo Show 15 als Wandtablet, Homematic IP, HUE, Sonos, Echos, DS718+ als Backup

                                    M 1 Antwort Letzte Antwort
                                    1
                                    • S skokarl

                                      @Marty56
                                      das freut uns ....

                                      Kannst Du mal bei Gelegenheit ein Howto für Dummies machen ? Muss ja nicht gerade am Vatertag sein :relaxed:

                                      M Offline
                                      M Offline
                                      Marty56
                                      schrieb am zuletzt editiert von
                                      #40

                                      @skokarl Ich weiß wirklich nicht, was ich mehr machen kann, als oben im Beitrag schon beschrieben. Hast Du dieses Posting schon angeschaut.

                                      HW:NUC (16 GB Ram)
                                      OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

                                      S 1 Antwort Letzte Antwort
                                      0
                                      • M Marty56

                                        @skokarl Ich weiß wirklich nicht, was ich mehr machen kann, als oben im Beitrag schon beschrieben. Hast Du dieses Posting schon angeschaut.

                                        S Offline
                                        S Offline
                                        skokarl
                                        schrieb am zuletzt editiert von
                                        #41

                                        @Marty56 sagte in [unGelöst] Sonos Mp3 Sound abspielen:

                                        @skokarl Ich weiß wirklich nicht, was ich mehr machen kann, als oben im Beitrag schon beschrieben. Hast Du dieses Posting schon angeschaut.

                                        wenn ich es richtig verstanden habe startet der Server beim Neustart nicht automatisch, richtig ?
                                        Wie kriege ich das hin ?
                                        Und hättest Du ein ganz kleines Blockly für eine Beispiel Ausgabe ?
                                        mit Ausgabe auf unterschiedliche Sonos ?

                                        .... nur wenn es Dir nix ausmacht.

                                        IOBroker mit Proxmox auf Celeron Nuc mit 16 GB und Debian11, Sonos API, Echo Show 15 als Wandtablet, Homematic IP, HUE, Sonos, Echos, DS718+ als Backup

                                        1 Antwort Letzte Antwort
                                        1
                                        • M Offline
                                          M Offline
                                          Marty56
                                          schrieb am zuletzt editiert von
                                          #42

                                          Ich habe null Ahnung von Blocky. Habe ich noch nie benutzt.

                                          Zum automatischen Start habe ich ein Startscript, startsonosserver.sh, erstellt, das den Sonos Api Server automatisch beim booten startet.

                                          Das Script liegt unter /etc/init.d/.

                                          Es beinhaltet:

                                          #!/bin/bash
                                          cd /opt/iobroker/node-sonos-http-api-master
                                          nohup npm start &

                                          Danach executable Rechte setzen.

                                          chmod +x /etc/init.d/startsonosserver.sh

                                          Und beim Booten starten mit

                                          sudo update-rc.d /etc/init.d/startsonosserver.sh defaults

                                          HW:NUC (16 GB Ram)
                                          OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

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

                                          388

                                          Online

                                          32.6k

                                          Benutzer

                                          81.9k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe