Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Steuerung günstiges Audio Multiroom-System (Silvercrest)

    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

    Steuerung günstiges Audio Multiroom-System (Silvercrest)

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

      Is ja Gut 😄 , dann will ich mir mal nach dem Urlaub ein set holen und dann sehen wir mal ob die was taugen. :lol:

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

        Wie versprochen hier ein Beispiel Skript mit dem das Gerät eingeschaltet und ein Radiosender ausgewählt wird. Notwendig ist die Script-Bibliothek xml2js um die Antworten der Geräte auswerten zu könenn. Ihr dürft gerne lachen was meine JavaScript-Kenntnisse angeht 😉 … hoch professionell ist das nicht

        Was passiert ist folgendes:

        • das Radio mit der festen IP wird angefragt ob es läuft und reagiert. Leider nötig, weil die Erreichbarkeit im Netzwerk einer der größten Bugs der günstigen Lautsprecher sind. Manchmal sind trotz Standby-Funktion einfach offline.

        WENN ERREICHBAR:

        • SET/netRemote.sys.power Gerät wird eingeschaltet

        • SET/netRemote.sys.mode Modus wird auf Radio gesetzt

        DANN 2 SEKUNDEN WARTEN BIS DER LAUTSPRECHER DIESE SCHRITTE AUSGEFÜHRT HAT

        • CREATE_SESSION Eine Session-ID holen, damit durch die Optionen navigiert werden kann

        DANN 2 SEKUNDEN WARTEN BIS DER LAUTSPRECHER DIESE SCHRITTE AUSGEFÜHRT HAT UND DIE ID GELSEN WURDE

        • SET/netRemote.nav.state "Virtuelle" Menü-Navigation mit Session-ID einschalten

        • SET/netRemote.nav.action.selectPreset Das entsprechende Radio-Preset wählen

        DAS SCRIPT WIRD GESTOPPT

        
        var request = require('request');
        var parseString = require('xml2js').parseString;
        
        var ip              ='192.168.XXX.XXX';
        var pin             ='1234';
        var radiostation    ='3';
        var volume          ='3';
        var link;
        var sessionID;
        
        //Check connection, if true activate fs_command function
          request(
            { method: 'GET'
            , uri: 'http://' + ip
            , timeout: 1500
            }
          , function (error, response, body) {
              // connection check
            }).on('error', function(error) {
            console.log(error);
            }).on('response', function(response) {
                if (response.statusCode == "200") {
                console.log('Status Code ' + response.statusCode + ': sending command');
        
                timeout = setTimeout(function () {fs_power_mode();     }, 1000);
        
                }
            }
           );
        
        function fs_power_mode(){ 
            link = 'http://' + ip + '/fsapi/SET/netRemote.sys.power' + "?pin=" + pin + '&value=1';
            log(link);
        
            request(link, function (error, response, body) {
                    var xml, result;
                        parseString(body, function (err, result) {
                            xml = JSON.stringify(result);
                            //log("XML Objekt: " + xml); 
                            xml=JSON.parse(xml); 
                            log (xml.fsapiResponse.status);
                        });
        
                        link = 'http://' + ip + '/fsapi/SET/netRemote.sys.mode' + "?pin=" + pin + '&value=0';
                        log(link);
        
                        request(link, function (error, response, body) {
                                var xml, result;
                                    parseString(body, function (err, result) {
                                        xml = JSON.stringify(result);
                                        //log("XML Objekt: " + xml); 
                                        xml=JSON.parse(xml); 
                                        log ('test '+xml.fsapiResponse.status);
        
                                        timeout = setTimeout(function () {fs_session();    }, 2000);
        
                                    });
                        });
        });
        }  
        
        function fs_session(){
        
            link = "http://" + ip + '/fsapi/CREATE_SESSION' + "?pin=" + pin;
            //log(link);
        
                request(link, function (error, response, body) {
                    var xml, result;
                        parseString(body, function (err, result) {
                            xml = JSON.stringify(result);
                            //log("XML Objekt: " + xml); 
                            xml=JSON.parse(xml); 
                            //log (xml.fsapiResponse.sessionId);
                            log (link + ' ' + xml.fsapiResponse.status);
                            sessionID = xml.fsapiResponse.sessionId;
                            log ('Neue Session: ' + sessionID);
        
                            timeout = setTimeout(function () {fs_navigate();     }, 2000);
        
                    });            
        
            });
        }
        
        function fs_navigate(){
        
                        link = 'http://' + ip + '/fsapi/SET/netRemote.nav.state' + "?pin=" + pin + '&sid=' + sessionID + '&value=1';
                        log(link);
        
                        request(link, function (error, response, body) {
                                var xml, result;
                                    parseString(body, function (err, result) {
                                        xml = JSON.stringify(result);
                                        xml=JSON.parse(xml); 
                                        log (xml.fsapiResponse.status);
                                    });
        
                                link = 'http://' + ip + '/fsapi/SET/netRemote.nav.action.selectPreset' + "?pin=" + pin + '&value=' + radiostation;
                                log(link);
        
                                 request(link, function (error, response, body) {
                                        var xml, result;
                                            parseString(body, function (err, result) {
                                                xml = JSON.stringify(result);
                                                xml=JSON.parse(xml); 
                                                log (xml.fsapiResponse.status);
        
                                            });
        
                                 });
                    });
        }
        
        stopScript();
        
        

        Die meisten einfachen Funktionen Power, Lautstärke etc gehen ohne Session-ID. Alles was mit Navigation zu tun hat, also Sender setzen, Gruppieren etc. muss mit einer Session-ID erfolgen.

        Im Skript oben wird die HTTP-Antwort des Gerätes geloggt. Das kostet oft unnötig Ressourcen im Skript. Bei einfachen Dingen wie Lautstärke setzen habe ich die Funktion raus gelassen. Wie im nächsten Beispiel:

        Beispiel 2: Lautstärke aller Lautsprecher auf Standard

        Was passiert?

        • 4 Lautsprecher und deren Lautstärke werden definiert

        • SET/netRemote.sys.audio.volume Lautstärke wird gesetzt

        var request = require('request');
        var parseString = require('xml2js').parseString;
        
        var ip1              ='192.168.XXX.1';
        var volume1          ='6';
        
        var ip2              ='192.168.XXX.2';
        var volume2          ='6';
        
        var ip3              ='192.168.XXX.3';
        var volume3          ='10';
        
        var ip4              ='192.168.XXX.4';
        var volume4          ='7';
        
        var pin             ='1234';
        
        var link;
        
                    link = 'http://' + ip1 + '/fsapi/SET/netRemote.sys.audio.volume' + "?pin=" + pin + '&value=' + volume1;
                    log(link);
        
                    request(link, function (error, response, body) {
        
                        link = 'http://' + ip2 + '/fsapi/SET/netRemote.sys.audio.volume' + "?pin=" + pin + '&value=' + volume2;
                        log(link);
        
                        request(link, function (error, response, body) {
        
                            link = 'http://' + ip3 + '/fsapi/SET/netRemote.sys.audio.volume' + "?pin=" + pin + '&value=' + volume3;
                            log(link);
        
                            request(link, function (error, response, body) {
        
                                link = 'http://' + ip4 + '/fsapi/SET/netRemote.sys.audio.volume' + "?pin=" + pin + '&value=' + volume4;
                                log(link);
        
                                request(link, function (error, response, body) {
        
                    });     
                    }); 
                    }); 
                    }); 
        
            log('Laustärke gesetzt');
        
        stopScript();
        
        

        Vielleicht ist das hilfreich für euch. Wundert euch beim Ausprobieren nicht: die Steuerung der Lautsprecher ist offenbar VOLLER BUGS. Ständig funktioniert irgendwas nicht - vollkommen unabhängig ob via IOS-App, Android-App oder über direkte HTTP-Befehle.

        Die HTTP-Request-Befehle an die Lautsprecher sehen also immer etwa so aus:

        http://192.168.XXX.XXX/fsapi/SET/netRem … 34&value=5

        Das kann man in jedem Browser im Netzwerk testen. Eine Liste der meisten Befehle gibt's hier: https://github.com/flammy/fsapi/blob/master/FSAPI.md

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

          Bin überhaupt nicht mit dem Lidl System zufrieden geworden http://multiroom-lautsprecher-test.org !

          Hab das sofort entsorgt und was qualitativ-hochwertiges besorgt.

          Würde ich dir auch empfehlen lieber etwas mehr hinzublättern.

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

            Ja auch bei mir ist der Test nicht aufgegangen. Zu viele Kleinigkeiten, die ständig nicht funktionieren.

            Habe dazu auch ein Video gemacht, weil es trotzdem ein gutes Beispiel ist: https://youtu.be/7BlBhHJG6_U

            1 Reply Last reply Reply Quote 0
            • BBTown
              BBTown last edited by

              @mystic:

              Bin überhaupt nicht mit dem Lidl System zufrieden geworden http://multiroom-lautsprecher-test.org ` meinem Verständnis nach ist der Echo kein Multiroom-Lautsprechersystem 😐

              1 Reply Last reply Reply Quote 0
              • D
                deejay last edited by

                Gibt es hier noch Neuigkeiten? Mich interessiert das Thema auch. Habe ebenfalls die Lautsprecher und Alexa und würde gerne mit ein paar einfachen Befehlen starten…

                1 Reply Last reply Reply Quote 0
                • B
                  Berchemer last edited by

                  @spielberger32

                  Danke für den Hinweis mit "FSRadio-Remote" 8-)

                  Jetzt werde ich mal schauen, ob ich auch mit Deinen Vorschlägen zur Steuerung in VIS zurechtkomme :?

                  1 Reply Last reply Reply Quote 0
                  • K
                    klmf2 last edited by

                    super, vielen Dank.

                    Meine Frau und ich können uns morgens im Bad immer nicht auf einen Radiosender einigen. Jetzt kann jeder über den Homematic Lichtschalter den Seiner schnell auswählen, den er möchte 🙂

                    1 Reply Last reply Reply Quote 0
                    • C
                      chemieka last edited by

                      Ich habe ein Anua KR-200. Das Radio wäre auch wie oben beschrieben steuerbar. Gibt es hier eine Adapterlösung?

                      1 Reply Last reply Reply Quote 0
                      • Diginix
                        Diginix last edited by

                        Bisher nichts in Sicht, aber über die http requests kann ich mein Medion Radio wunderbar steuern.

                        Man hat halt nur keine Datenpunkte mit dem tatsächlichen Status. Falls es mal manuell eingeschaltet wurde, weiß ioBroker das nicht.

                        Das bekommt man aber auch mit einem http request raus, nur wie oft will man den sinnlos ausführen um es immer zeitnah zu wissen.

                        Seit ich das Radio aber nur noch per Alexa steuer, ist das für mich nicht so wichtig.

                        Dennoch würde ich mich auch über einen Frontier-Silicon Adapter freuen. Immerhin gibt es nicht wenig Geräte die damit funktionieren würden.

                        Wundert mich echt, dass den noch keiner geschrieben hat.

                        @Ingo (https://forum.iobroker.net/memberlist.php?mode=viewprofile&u=378😞 Ist das Trello Board noch relevant?

                        Sieht alles recht veraltet aus. Wo wäre ein Adapter Request am sinnvollsten platziert?

                        1 Reply Last reply Reply Quote 0
                        • C
                          chemieka last edited by

                          Och ich würde da schon einen Sinn sehen. Man kann den Titel/Interpret/Cover auslesen.

                          Und man könnte auch seine Favoriten auslesen und natürlich wäre die Steuerung besser.

                          Aber Grundsätzlich wäre es schon toll wenigstens Titel/Interpret/Cover in eine IObroker Systemvariable zu bekommen um das dann Visualisieren zu können. Für jemanden der das kann ist das bestimmt einfach für mich leider nicht.

                          Trotzdem mal im Code die Wichtigsten HTTP Requests in Sammlung, wenn wer was dazu tragen möchte gern.

                          http://192.168.1.59:80/fsapi/SET/netRemote.sys.power?pin=1234&sid=570007566&value=1
                          DAB
                          http://192.168.1.59/fsapi/SET/netRemote.sys.Mode?pin=1234&sid=570007566&value=4
                          Internetradio
                          http://192.168.1.59/fsapi/SET/netRemote.sys.Mode?pin=1234&sid=570007566&value=0
                          Senderwahl Favariten
                          http://192.168.1.59/fsapi/SET/netRemote.nav.state?pin=1234&sid=1541669613&value=1
                          http://192.168.1.59/fsapi/SET/netRemote.nav.action.selectPreset?pin=1234&sid=1426318513&value=0
                          
                          Albumcover URL
                          http://192.168.1.59/fsapi/GET/netRemote.play.info.graphicUri?pin=1234&sid=1541669613
                          
                          Interpret/Song
                          http://192.168.1.59/fsapi/GET_NOTIFIES?pin=1234&sid=1541669613
                          
                          http://192.168.1.59/fsapi/LIST_GET_NEXT/netRemote.sys.caps.validModes/-1?pin=1234&sid=1541669613&maxItems=65536
                          
                          Lautstärke
                          http://192.168.1.59/fsapi/SET/netRemote.sys.audio.volume?pin=1234&sid=1426318513&value=5
                          
                          Neue SID erzeugen
                          http://192.168.1.59/fsapi/CREATE_SESSION?pin=1234
                          
                          1 Reply Last reply Reply Quote 0
                          • C
                            chemieka last edited by

                            Hat jemand eine Idee wie ich mit diesem http Befehl die Cover URL in eine Variable schreiben könnte um das Cover dann zur VISU zu nutzen.

                            Das Ergebnis des http Befehls schaut so aus:

                            
                            - <fsapiresponse><status>FS_OK</status>
                            
                            - <value><c8_array>http://auna2.wifiradiofrontier.com/setupapp/setup1/logo/logo-82098.png</c8_array></value></fsapiresponse> 
                            

                            <size size="150">Ich schreibe die Frage mal unter Skripte rein, passt hier nicht so richtig.</size>

                            1 Reply Last reply Reply Quote 0
                            • Eisbaeeer
                              Eisbaeeer Developer last edited by

                              @chemieka:

                              Hat jemand eine Idee wie ich mit diesem http Befehl die Cover URL in eine Variable schreiben könnte um das Cover dann zur VISU zu nutzen. `

                              What?

                              Da seh ich keinen Befehl. Was genau willst du machen?

                              DIE URL zeigt ja auf eine externe Seite.

                              Imho kannst du die url direkt in der Visualisierung verwenden. Internet vorausgesetzt.

                              Gruß Eisbaeeer

                              Gesendet von meinem SM-G950F mit Tapatalk

                              1 Reply Last reply Reply Quote 0
                              • C
                                claus1993 last edited by

                                Habe beim mir die URL für das Logo mittels Node Red ausgelesen und in einen Datenpunkt geschrieben.

                                Die Rückmeldung habe ich auf "c8_array" selektiert.

                                1 Reply Last reply Reply Quote 0
                                • C
                                  chemieka last edited by

                                  Das wäre toll wenn du mir schreiben könntest wie das genau geht.

                                  Der Befehl ist:

                                  http://192.168.1.59/fsapi/GET/netRemote.play.info.graphicUri?pin=1234&sid=1541669613
                                  

                                  Die Anwort steht oben mit der URL wo dann das Cover liegt. Diese URL müsste in eine Variable zur weiteren Verwendung gespeichert werden.

                                  Das sind Informationen welche auch einem Internet/DAB Radio kommen.

                                  Also Node Red habe ich jetzt drauf allerdings mit massig Fehlermeldungen. Könnte mir vorstellen das geht mit Blocky auch. Bin aber für jeden Vorschlag dankbar.

                                  1 Reply Last reply Reply Quote 0
                                  • C
                                    chemieka last edited by

                                    Ich bekomme im Blocky schon mal eine Antwort. Aber wie kann ich das FS_OK raus gefiltert?
                                    1867_radio.jpg

                                    1 Reply Last reply Reply Quote 0
                                    • Diginix
                                      Diginix last edited by

                                      Ich löse das so für die Lautstärkeregelung. Zuerst wird die aktuelle Lautstärke per http request abgerufen und in eine Variable extrahiert.

                                      Danach der neue Wert "Variable+1" zurückgesendet.

                                      Allerdings gibt es auch den https://github.com/ioBroker/ioBroker.parser/blob/master/README.md, mit dem sicher komplexere Inhalte einfacher zu zerlegen wären.

                                      6549_blockly_textteil.jpg

                                      1 Reply Last reply Reply Quote 0
                                      • C
                                        chemieka last edited by

                                        Schaut recht komplex aus aber die Lösung ist mit drin.

                                        Respect wer sowas zusammengebaut bekommt.

                                        Werde mal etwas Testen, melde mich bei Erfolg oder nicht Erfolg.

                                        1 Reply Last reply Reply Quote 0
                                        • C
                                          chemieka last edited by

                                          super den die Antwort filtern klappt schon mal.

                                          Aber was nehme ich als Trigger wie bekomme ich das in eine Variable und wie lege ich im IObroker überhaupt eine verwendbare Variable an?

                                          Trigger müsste man einen Zeitplan nehmen, sonst gibt's ja nix. Muss ich das nur noch in eine Variable bekommen.

                                          Ich bin ehrlich so Dankbar.

                                          Update nach langem Rumprobieren hab ich es nun geschafft. Ergebnis im Bild.

                                          Auf diese Art werde ich nun nun auch Interpret und Titel abgreifen.

                                          Zufrieden bin ich nicht ganz mit dem Trigger der auf einer Minute steht. Aber was will man sonst nehmen.

                                          1867_unbenannt.jpg

                                          1 Reply Last reply Reply Quote 0
                                          • C
                                            chemieka last edited by

                                            Was muss ich den machen wenn diese Meldung kommt:

                                            Wrong type of hm-rega.0.24666: "string". Please fix, while deprecated and will not work in next versions.

                                            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

                                            781
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            15
                                            33
                                            10613
                                            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