NEWS
Adapter-Anfrage Sony Bravia TV
-
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 -
Habe mir gerade noch anderweitig geholfen, anscheinend gibt es noch eine neuere/andere Version... warum ich sie bis dato nicht gefunden habe bleibt mir schleierhaft. Für andere die genau das selbe "Problem" haben: In diesem Thread findet man den anderen Adapter, der einem auch den gewünschten Status liefert.
-
@123bobby Hi ... ich habe mich heute mal dran gesetzt un den Adapter neu installiert ...
soweit so gut ... die buttons reagieren ..... habe auch mal einen auf switch gesetzt und der Adapter reagiert auf false / True .....nun die alles entscheidende FRAGE wie bekome ich es hin den TV mit dem Echo Dot zu steuern ??
Ich finde keine anleitung dazu ...... kannst du mir vielleicht helfen ????
Schhöne Weihnachten
Danke
Dornkaat
-
Hallo,
was kann man mit dem Adapter mehr, als mit dem Alexa Skill?Gibt es eine Möglichkeit über den ioBroker dem Sony TV zu sagen, dass er eine Applikation öffnen soll? zB Youtube, Netflix, sonstiges...
Mfg Christian
-
@Bielefelder81 sagte in Adapter-Anfrage Sony Bravia TV:
was kann man mit dem Adapter mehr, als mit dem Alexa Skill?
ohne Alexa arbeiten
-
Ich habe den
Sony Bravia Smart-TV Adapter (1.0.3) vorhi installiert. Verbindung scheint in Ordnung zu sein. Status vom TV wird mir auch angezeigt. Aber wenn ich ihn bspw. über "PowerOff" abstellen möchte funktioniertes nicht und ich bekomme folgenden Eintrag im Log:KLAPPT JETZT!
Woran liegt das? Was ist falsch?
DANKE! -
@mwx46 said in Adapter-Anfrage Sony Bravia TV:
@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!
Wahnsinn. Das hat bei mir auch geholfen. Klasse! Mein Eintrag vorher kann ignoriert werden. Internet sei dank
-
Servus,
bei mir wird unter sony-bravia.0.info.connection permanent der gleiche Wert (true) angezeigt.
Gibt es eine Möglichkeit anderweitig festzustellen, ob der TV in Betrieb ist? -
@snaffer
Unter info sollte ein Datenpunkt sein der sich PowerStatusActive nennt, daran solltest du erkennen können ob der Fernseher an oder aus ist. -
@michmein bei mir leider nicht.
Hab auch schon die weiteren Reiter durchsucht. -
@snaffer hast du aus dem latest oder stable installiert? Bei meiner Version 1.0.3 ist der DP vorhanden. Welche Version hast du?
-
@schuko80
Hi bei mir auch, hastDu schon Info was ich falsch mache? -
Mein ersten Versuch den Adapter zu verwenden, führten sehr schnell zur Enttäuschung.
Über PowerOff kann ich beispielsweise den Fernseher problemlos ausschalten, aber - egal was auch immer ich versuche - eingeschaltet bekomme ich das Gerät einfach nicht mehr.
Die Funktion Mute werden ja wie auch PowerOn/Off als Taster (allerdings mit Toggle-Funktion im TV) realisiert. Erstaunlicherweise geht diese Option, nur PowerOn will einfach nicht.
Weiß jemand Rat?
-
-
@david-g said in Adapter-Anfrage Sony Bravia TV:
Bleibt dein TV im Netz erreichbar, wenn er aus ist?
Ja, der Fernseher reagiert auf PING.
Allerdings frage ich mich, was in der nachfolgenden Abbildung ..
.. die Funktion TvPower von Power on unterscheidet.VolumeUp, VolumeDown, Mute funktionieren tadellos, hingegen reagiert der Fernseher weder auf TvPower noch auf Power on.
Unser Fernseher ist ein BRAVIA-KDL-50W805B.
-
TVPower ist ein Toggle. Wenn der TV aus ist, schaltet er an und anders rum. Wie der Knopf auf der Fernbedienung.
TVon schaltet nur an, bewirkt also nur was, wenn der TV aus ist.
TVoff schaltet nur aus, bewirkt also nur was, wenn der TV an ist.
Beiden letztere nutze ich teilweise für die Anwesenheitssimulation. So weiß man sicher, was passiert.
-
Vielen Dank für deine detaillierten Erläuterungen.
Bei uns funktionieren etwa Mute, PowerOff, VolumeUp, VolumeDown nicht jedoch PowerOn.
Was ich auch immer versuche, PowerOn will partout nicht funktionieren.
Schade, so ist der Adapter für uns nicht zu gebrauchen.
-
@legro
Könntest ja mal wakeup und sleep unter other Settings testen. -
Hallo zusammen,
ich bin kürzlich von openHAB zu ioBroker umgezogen und hatte dort das Sony Binding im Einsatz. Das io-Broker Pendant scheint eine andere Basis zu haben, da offenbar z.B. nur gesteuert aber nicht ausgelesen werden kann. Das openHAB Binding konnte z.B. die Senderliste lesen und auch gezielt Sender aufrufen.
Die Grundlage scheint die Sony Scalar API zu sein. Gibt es auch bei ioBroker einen solchen Adapter, bzw. ist bekannt ob jemand daran arbeitet? Danke!
-
@david-g said in Adapter-Anfrage Sony Bravia TV:
@legro
Könntest ja mal wakeup und sleep unter other Settings testen.Diese Datenpunkte lösen anscheinend keinerlei Reaktionen aus.