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.
    • 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
                      • M
                        Marty56 last edited by

                        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);
                        
                        
                        1 Reply Last reply Reply Quote 0
                        • S
                          speedy last edited by

                          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.

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

                            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 😄 .

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

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

                            Schade

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

                              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.

                              1 Reply Last reply Reply Quote 0
                              • M
                                Marty56 last edited by 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 1 Reply Last reply Reply Quote 0
                                • K
                                  Karatekid @Marty56 last edited by

                                  @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 Reply Last reply Reply Quote 0
                                  • M
                                    Marty56 @Karatekid last edited by

                                    @Karatekid
                                    Keine Ahnung. Ich habe kein Airplay.

                                    1 Reply Last reply Reply Quote 0
                                    • Q
                                      Qlink last edited by

                                      @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 Reply Last reply Reply Quote 0
                                      • M
                                        Marty56 @Qlink last edited by Marty56

                                        @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.

                                        S 1 Reply Last reply Reply Quote 0
                                        • B
                                          Baerny last edited by

                                          @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

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

                                            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.

                                            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

                                            920
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            14
                                            48
                                            11446
                                            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