Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Adapter-Anfrage Sony Bravia TV

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Adapter-Anfrage Sony Bravia TV

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

      Hallo an alle,
      ich weiß das Thema hier ist schon recht alt aber ich probier es trotzdem mal,
      Ich hab das Skript von Soulforged für Iobroker versucht zum laufen zu bekommen

      ! ```
      `//################### Script Configuration ####################################################
      const bravia_ip = "192.168.1.65"; //Hier die IP des TV einsetzen.
      const psk = "geheim"; //Hier PSK einetzen (PIN der in TV Konfiguration gewählt wurde)
      const poll_intervall = 30; //Abfrageintervall für den Status in Sekunden
      //#############################################################################################
      ! const request = require('request');
      //const util = require('util');
      var message_id = 0;
      ! //Alle Konstanten und States erstellen, die abgefragt werden sollen
      const s_powerstate = 'javascript.0.Bravia.powerstate'; //An/Aus Status
      const s_nowplaying = 'javascript.0.Bravia.nowPlaying'; //aktueller Titel
      const s_volume = 'javascript.0.Bravia.actVolume'; //aktuelle Lautstärke
      ! createState(s_powerstate, "unknown", {type: "string", role: "State"});
      createState(s_nowplaying, "unknown", {type: "string", role: "State"});
      createState(s_volume, "unknown", {type: "string", role: "State"});
      ! function getTVStatus(){ //Funktion führt nacheinander alle ABfragen durch. Wirde als schedule alle x Sekunden ausgeführt.
      bravia('/sony/system','getPowerStatus', [], s_powerstate);
      bravia('/sony/audio', 'getVolumeInformation', [], s_volume);
      bravia('/sony/avContent', 'getPlayingContentInfo', [], s_nowplaying);
      }
      schedule("*/"+poll_intervall+" * * * *", getTVStatus);
      ! function bravia(tv_urlextension, tv_method, tv_params, tv_stateID){ //Funktion fragt einzelnen Stat ab
      //tv_urlextension = in welchem "ordner" liegt die Methode
      //tv_method = wie heißt die Methode (zB. getPowerStatus)
      //tv_params = welche Parameter müssen an die Methode übergeben werden (bei PowerStatus leer []
      //tv_stateID = wo soll das Ergebnis gespeichert werden

      if (message_id > 5000){ //fortlaufende id um Nachrichten identifizieren zu können. Läuft zwischen 5000 und 1.
      message_id=1;
      }else{
      message_id +=1;
      }

      request({ //TV Anfragen
      url: 'http://' + bravia_ip + tv_urlextension,
      method: "POST",
      json: true,
      headers: {
      'X-Auth-PSK': psk,
      'connection' : 'close'
      },
      body: {
      'method': tv_method,
      'params': tv_params,
      'id' : message_id,
      'version' : '1.0'
      }
      }, function (error, response, body) {
      //log(response.statusCode);
      //log(util.inspect(body, false, null)); //Komplette ANtwort im Log wegen Debugging
      if (!error && response.statusCode == 200) {
      if (tv_stateID !== undefined) { //nur wenn State für Update angegeben, sonst handelt es sich um einen BEfehl und keine Statusabfrage
      //Je nach abgefragtem Status sieht die Antwort anders aus --> Switch unterscheidet
      var wert = ''; //wenn nichts gefunden wird, nehmen wir an, der TV wäre aus.
      if(!body.hasOwnProperty('error')) { //Wenn ein Fehler zurück kommt, (zB TV ist aus und Lautstärke wird abgefragt) --> tue nichts

                      switch(tv_method){ //je nach ABfrage versteckt sich der wert an einer anderen stelle im result
                          case 'getPowerStatus':
                              wert = body.result[0].status;
                              break;
                          case 'getVolumeInformation': //Bei Volume muss nach dem key volume gesucht werden bei dem target : speaker 
                              for (var i =0; i<=body.result[0].length; i++)
                              {
                                   if (body.result[0][i].target =="speaker") {wert=body.result[0][i].volume.toString(); break;}
                              }
                              break;
                           case 'getPlayingContentInfo': //Bei bei playing content ziehen wir uns den wert "title"
                              wert = body.result[0].title;
                              break;    
                          default: 
                              return false;
                      }
                  }
                  //log(tv_method+": "+wert);
                  setState(tv_stateID, wert, true); //State schreiben mit Ack flag --> wert aktualisiert
              }
          }
      }
      

      );
      }

      ! //Subscription auf alle Funktionen aus Adapter (=Befehle an TV). ~1 Sekunden nach Befehl an TV Status abfragen
      subscribe({id: /^sony-bravia.0.*/}, function (obj) {
      setTimeout(getTVStatus, 1000);
      }
      );
      ! //Lautstärke-Änderung über Schieberegler --> subscribe auf Läutstäre State. Bei Änderung Nachricht an TV mit neuer Lautstärke
      subscribe({id: s_volume, change: "ne"}, function (obj) {
      bravia('/sony/audio', 'setAudioVolume', [{"target": "speaker", "volume": obj.state.val.toString()}]);
      setTimeout(getTVStatus, 1000); //Sekunde später Werte lesen
      }
      );` [/i][/i]


      aber irgendwie bekomme ich es nicht hin. ist das Skript überhaupt für Javascript? da bekomme ich nämlich nur Fehlermeldungen wenn ich Ihn einfüge und starten will. Hat jemand das komplette Skript am laufen und kann mir helfen?

      1 Reply Last reply Reply Quote 0
      • MartinK.
        MartinK. @Linedancer last edited by

        @Linedancer sagte in Adapter-Anfrage Sony Bravia TV:

        Na super, auf sowas hab ich schon lange gewartet.

        Installation lief problemlos, Datenpunkte wurden angelegt, die Ampel ist grün.

        Leider hat mein Bravia unter "Netzwerkeinstellungen" die notwendigen Menüs nicht :x

        na Klasse, ich bin dann leider raus.

        Also ich habe eine Sony Bravia kdl-55ex725... Auch bei mir fehlt dieser Menuepunkt im TV unter Netzwerk mit Pre Shared KEY.... Dann kann ich wohl auch diesen Adapter nicht nutzen oder ? 😞

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

          Ich klinke mich hier mal ein.
          Mein TV habe ich 1a über den Adapter einbinden können. Hat jemand schon eine Lösung dafür dass der Adapter mitbekommt wenn der TV über die Fernbedienung eingeschaltet wird? Auch bei mir steht connection immer auf true.

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

            @DerS said in Adapter-Anfrage Sony Bravia TV:

            Mein TV habe ich 1a über den Adapter einbinden können. Hat jemand schon eine Lösung dafür dass der Adapter mitbekommt wenn der TV über die Fernbedienung eingeschaltet wird? Auch bei mir steht connection immer auf true.

            Ich hatte das selbe Problem und deshalb habe ich jetzt den alten Adapter Sony-Bravia adpater geforked und einen neuen Status dafür eingebaut, siehe https://github.com/mghomedev/ioBroker.sony-bravia/commit/9bb3e1bbe273b0bb322245ff5d3a7aa830f13e30

            Meine experimentell angepasste Variante des Adapters ist hier https://github.com/mghomedev/ioBroker.sony-bravia

            Es gibt darin bei mir nun "info.powerstatus" und das ist "active" oder "standby" oder "error*" .

            Es ist aber weiterhin nur polling, d.h. Abfrage aller X Sekunden.
            Die X kann man jetzt aber bei mir im Admin-Menu konfigurieren, und ein "refresh" auch per Status triggern.

            0 mghomedev committed to mghomedev/ioBroker.sony-bravia
            introduce new state info.powerstatus to get the actual state from the TV using Sony Bravia JSON API when ping succeeds
            introduce new state triggerUpdateStatus to allow easy trigger of the power status refresh
            1 Reply Last reply Reply Quote 0
            • M
              mghomedev last edited by

              Heute habe ich auch neue Stati für Volume/Lautstärke lesen und schreiben in meinen Sony-Bravia-Adapter-Fork eingebaut : https://github.com/mghomedev/ioBroker.sony-bravia

              1 Reply Last reply Reply Quote 1
              • D
                DuCz last edited by DuCz

                Hat noch jemand das Problem das er nicht die Audio Sachen steuern kann? - Siehe Bild

                2b22a68d-ca3b-44bf-8157-81549f775a9f-image.png

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

                  Guten Abend,
                  hat zufällig noch jemand folgendes Problem?
                  Ich konnte den Adapter ohne Probleme einrichten und er funktioniert auch tadelos...bis man ihn längere Zeit mal nicht nutzt. bzw. der Fernseher längere Zeit aus ist. Dann wechselt der Adapter in den Status "Gelb" und bei "If connected to TV" steht false. Das hat zur Folge, dass man den Fernseher über ein Sprachkommando nicht mehr einschalten kann...ist der Fernsehr von Hand eingeschalten worden, dann wechselt der Adapter auch wieder auf Grün. Der Fernseher ist direkt über ein LAN-Kabel mit dem Router verbunden.
                  Hat jemand einen Tipp für mich, wie ich das Problem lösen kann?

                  Danke euch!

                  MichMein 1 Reply Last reply Reply Quote 0
                  • C
                    Chevalier last edited by

                    Ich war auch auf der Suche nach einem Sony TV Adapter.
                    Hatte noch nicht smit Github zu tun, habe aber den Adapter mit "npm install iobroker .sony-bravia" installiert.
                    Nun habe ich ein sony-bravia0 Object und Instanz.
                    In der Instanzist ist alles grün (Host, Lebenszeichen, sony-bravia).

                    Drücke ich aber Testweise irgendwas (ein..aus..etc) in den Objecten passiert nix....
                    Im Github finde ich von ldittmar81 die Vers 1.0.2, wie installiere ich das?
                    Wie überhaupt wenn es kein npm gäbe..

                    Bitte nicht hauen, sicher für euch ganz einfach, habe auch ewig gegoogelt aber nix gefunden.
                    Scheint was selbstverständliches zu sein..... 😕

                    Ziel soll sein das mein Raspi mit Hilfe von Blockly die Objekte nutzt um Aktionen auszuführen.

                    Bostil 1 Reply Last reply Reply Quote 0
                    • Stephan Schleich
                      Stephan Schleich last edited by Stephan Schleich

                      Ist in der Version 1.0.2 der Objekt Punkt "audio" entfernt worden?

                      1 Reply Last reply Reply Quote 0
                      • Bostil
                        Bostil @Chevalier last edited by Bostil

                        @Chevalier @Claykey Hab dasselbe Problem mit dem Adapter bei einem XE9005 aus 2017 leider. Bist du schon weitergekommen ?

                        J 1 Reply Last reply Reply Quote 0
                        • J
                          jens1987 @Bostil last edited by

                          @Bostil

                          Du musst anstatt ein Button einen Switch wählen.

                          Bostil mwx46 2 Replies Last reply Reply Quote 1
                          • MichMein
                            MichMein @Smart_Home last edited by

                            @Smart_Home
                            Wenn ich mich recht erinnere gibt es irgendwo in den Einstellungen des Fernsehers die Möglichkeit diesem mitzuteilen das er sich nicht komplett herunterfährt wenn er ne zeitlang ausgeschaltet ist. Das dürfte irgendwie ne Stromsparfunktion sein. Wenn ich heute Abend dran denke schauen mal bei meinem zu Hause nach.

                            1 Reply Last reply Reply Quote 0
                            • Bostil
                              Bostil @jens1987 last edited by

                              @jens1987 Hallo Jens, kannst du mir kurz erläutern, wie man dies umzustellen hat? Vielen Dank! 🙂

                              1 Reply Last reply Reply Quote 0
                              • mwx46
                                mwx46 @jens1987 last edited by

                                @jens1987 Das würde mich auch interessieren. Wäre klasse, wenn du das kurz erläutern könntest. Ich habe das selbe Problem. Kann mich mit meinem TV verbinden (alles grün) aber keine Aktion ausführen...

                                J 1 Reply Last reply Reply Quote 0
                                • J
                                  jens1987 @mwx46 last edited by

                                  @mwx46 Morgen, also habe einfach unter Objekten bei der Sony Instanz die jeweiligen Datenpunkte von Button auf Switch umgestellt und die habe ich dann in Vis bzw per IOT Adapter in Alexa eingebunden.

                                  mwx46 1 Reply Last reply Reply Quote 0
                                  • mwx46
                                    mwx46 @jens1987 last edited by

                                    @jens1987 Danke für deine Antwort. Mein Problem war allerdings das der TV überhaupt nicht reagiert hat, egal ob per Button oder Switch. Ich habe jetzt aber die Ursache gefunden: Mit der Fernbedienung konnte ich keinen Preshared Key im TV Menü speichern, irgendwie hat er diesen nicht angenommen. Mit einer angeschlossenen Tastatur (und Bestätigung mit Enter) hat es jetzt aber funktioniert. Komischerweise hat der Adapter auch vorher alles grün angezeigt... Danke für deine Hilfe!

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

                                      Hi,

                                      hat es jemand geschafft einen älteren, nicht-Android-Bravia per wake on lan zuverlässig einzuschalten? Wenn ja, wäre ich sehr an dem Script interessiert.

                                      Vielen Dank und ein schönes Wochenende!

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

                                        Hallo zusammen,
                                        habe einen Sony KD65X7055. Leider finde ich nirgends das Menü "IP-Control". Im Netzwerk ist der Fernseher sehe auch die IP aber leider nicht den PSK.
                                        Wer kann mit weiter helfen??
                                        Gruß

                                        F 1 Reply Last reply Reply Quote 0
                                        • F
                                          flibbi @hugo1215 last edited by flibbi

                                          Hat schonmal jemand diesen Adapter 2 x installiert?
                                          Ich habe 2 Android Sony TVs und den Adapter in 2 Instanzen laufen seit ein paar Tagen.
                                          Eingerichtet habe ich alles und es wurde scheinbar auch alles erkannt, allerdings löst eine Aktion (Tv anschalten z.B.) eine Aktion an beiden Adaptern aus, d.h. schalte ich den TV im Schlafzimmer an, geht auch der TV im Wohnzimmer an, der an die zweite Instanz gekoppelt ist.
                                          IP Settings im Adapter sind die beiden TV IPs, der Pin Code allerdings bei beiden TVs der Gleiche. Hat jemand eine Idee? Beide Geräte hängen im gleichen IP Bereich.

                                          Danke und Grüße!

                                          1 Reply Last reply Reply Quote 0
                                          • 1
                                            123bobby last edited by 123bobby

                                            Hallo zusammen,

                                            habe mich mit dem Script von @Soulforged auseinandergesetzt bzw. wollte es. Ich denke das hier durch Copy/Paste etwas kaputt gegangen ist.
                                            Wichtig ist, dass man auf jedenfall die geschweifte Klammer mitnimmt, die nach dem Codeschnippsel kam, die ich persönlich übersehen hatte 😬 aber so ist das halt... man lernt ja immer. Leider klappt es dann aber mit dem Code immer noch nicht und ich erhalte nicht die benötigten Werte, so wie Sie @Mischa im Screenshot zeigt. Der Grund hierfür wird wohl noch irgend ein anderer "Fehler" im Code sein. Folgende Meldung erhalte ich beim Speichern:

                                            javascript.0 (591) script.js.Tests.Skript_1: TypeScript compilation failed: const request = require('request'); ^ ERROR: Cannot redeclare block-scoped variable 'request'. bravia('/sony/audio', 'setAudioVolume', [{"target": "speaker", "volume": obj.state.val.toString()}]); ^ ERROR: Expected 4 arguments, but got 3.
                                            

                                            Leider sind meine Programmierkenntisse zu schlecht um das zu verstehen / zu beheben. Ich gehe aber davon aus, dass das Entfernen der Ausrufezeichen am Anfang der Zeilen richtig war und das es sich hierbei auch nur um einen weiteren Code Translation / Darstellungsfehler handelt.

                                            Hier nochmal der gesamte Code in einem Schnipsel:

                                            //################### Script Configuration ####################################################
                                            const bravia_ip = "192.168.1.65"; //Hier die IP des TV einsetzen.
                                            const psk = "geheim"; //Hier PSK einetzen (PIN der in TV Konfiguration gewählt wurde)
                                            const poll_intervall = 30; //Abfrageintervall für den Status in Sekunden
                                            //#############################################################################################
                                            const request = require('request');
                                            //const util = require('util');
                                            var message_id = 0;
                                            //Alle Konstanten und States erstellen, die abgefragt werden sollen
                                            const s_powerstate = 'javascript.0.Bravia.powerstate'; //An/Aus Status
                                            const s_nowplaying = 'javascript.0.Bravia.nowPlaying'; //aktueller Titel
                                            const s_volume = 'javascript.0.Bravia.actVolume'; //aktuelle Lautstärke
                                            createState(s_powerstate, "unknown", {type: "string", role: "State"});
                                            createState(s_nowplaying, "unknown", {type: "string", role: "State"});
                                            createState(s_volume, "unknown", {type: "string", role: "State"});
                                            function getTVStatus(){ //Funktion führt nacheinander alle ABfragen durch. Wirde als schedule alle x Sekunden ausgeführt.
                                            bravia('/sony/system','getPowerStatus', [], s_powerstate);
                                            bravia('/sony/audio', 'getVolumeInformation', [], s_volume);
                                            bravia('/sony/avContent', 'getPlayingContentInfo', [], s_nowplaying);
                                            }
                                            schedule("*/"+poll_intervall+" * * * *", getTVStatus);
                                            function bravia(tv_urlextension, tv_method, tv_params, tv_stateID){ //Funktion fragt einzelnen Stat ab
                                            //tv_urlextension = in welchem "ordner" liegt die Methode
                                            //tv_method = wie heißt die Methode (zB. getPowerStatus)
                                            //tv_params = welche Parameter müssen an die Methode übergeben werden (bei PowerStatus leer []
                                            //tv_stateID = wo soll das Ergebnis gespeichert werden
                                            
                                            if (message_id > 5000){ //fortlaufende id um Nachrichten identifizieren zu können. Läuft zwischen 5000 und 1.
                                                message_id=1;
                                            }else{
                                                message_id +=1;
                                            }
                                             
                                            request({
                                                url: 'http://' + bravia_ip + tv_urlextension,
                                                method: "POST",
                                                json: true,
                                                headers: {
                                                   'X-Auth-PSK': psk,
                                                   'connection' : 'close'
                                                },
                                                body: { 
                                                        'method': tv_method,
                                                        'params': tv_params,
                                                        'id' : message_id,
                                                        'version' : '1.0'
                                                    } 
                                            }, function (error, response, body) {
                                                    //log(response.statusCode);
                                                    //log(util.inspect(body, false, null)); //Komplette ANtwort im Log wegen Debugging
                                                    if (!error && response.statusCode == 200) {
                                                        if (tv_stateID !== undefined) { //nur wenn State für Update angegeben, sonst handelt es sich um einen BEfehl und keine Statusabfrage
                                                            //Je nach abgefragtem Status sieht die Antwort anders aus --> Switch unterscheidet
                                                            var wert = ''; //wenn nichts gefunden wird, nehmen wir an, der TV wäre aus.
                                                            if(!body.hasOwnProperty('error')) { //Wenn ein Fehler zurück kommt, (zB TV ist aus und Lautstärke wird abgefragt) --> tue nichts
                                             
                                                                switch(tv_method){ //je nach ABfrage versteckt sich der wert an einer anderen stelle im result
                                                                    case 'getPowerStatus':
                                                                        wert = body.result[0].status;
                                                                        break;
                                                                    case 'getVolumeInformation': //Bei Volume muss nach dem key volume gesucht werden bei dem target : speaker 
                                                                        for (var i =0; i<=body.result[0].length; i++)
                                                                        {
                                                                             if (body.result[0][i].target =="speaker") {wert=body.result[0][i].volume.toString(); break;}
                                                                        }
                                                                        break;
                                                                     case 'getPlayingContentInfo': //Bei bei playing content ziehen wir uns den wert "title"
                                                                        wert = body.result[0].title;
                                                                        break;    
                                                                    default: 
                                                                        return false;
                                                                }
                                                            }
                                                            //log(tv_method+": "+wert);
                                                            setState(tv_stateID, wert, true); //State schreiben mit Ack flag --> wert aktualisiert
                                                        }
                                                    }
                                                }
                                            );
                                            }
                                            
                                            //Subscription auf alle Funktionen aus Adapter (=Befehle an TV). ~1 Sekunden nach Befehl an TV Status abfragen
                                            subscribe({id: /^sony-bravia.0.*/}, function (obj) {
                                            setTimeout(getTVStatus, 1000);
                                            }
                                            );
                                            //Lautstärke-Änderung über Schieberegler --> subscribe auf Läutstäre State. Bei Änderung Nachricht an TV mit neuer Lautstärke
                                            subscribe({id: s_volume, change: "ne"}, function (obj) {
                                            bravia('/sony/audio', 'setAudioVolume', [{"target": "speaker", "volume": obj.state.val.toString()}]);
                                            setTimeout(getTVStatus, 1000); //Sekunde später Werte lesen
                                            }
                                            );
                                            

                                            Wäre echt toll wenn mal ein Experte drüber schauen könnte und mir verraten kann was noch falsch ist... für die Abfragen zu Hause (ist TV an / aus ) ist ja leider der sony bravia Adapter nicht wirklich toll oder liegt es vielleicht am TV bzw. an der Android version? Bei meinem XF9005 geht steuern über den Adapter, aber Rückmeldungen gibt es leider keine und hier erhoffe ich mir die nötigen Infos vom Script.
                                            Danke und viele Grüße

                                            D 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

                                            886
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            64
                                            180
                                            31339
                                            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