NEWS
Adapter-Anfrage Sony Bravia TV
-
Sooo alle zusammen. Ich habe ein Skript gebastelt, dass von unseren Bravia TVs den aktuellen Status, die aktuelle Laustärke und den aktuellen Titel auslesen kann.
Ich musste mich erstmal in die Erstellung von HTTP-Requests einlesen, daher hat es etwas gedauert.
Da mir das Stufenweise hoch und runterschalten der Lautstärke nicht gefallen hat, habe ich den Lautstärke Stat schreibbar gemacht. –> Einfach einen Schieberegler mit step=1 drauf und es sollte gehen.
Im Skript-Kopf müsst ihr noch die IP des Gerätes, den PSK (also euren vergebenen PIN) und das gewünschte Abfrage-Intervall eingeben. Zusätzlich zur Abfrage alle x sekunden habe ich noch eine Abfrage jeweils 1 Sekunde nach dem Tastendruck aus den Tasten aus dem Adapter eingebaut. Somit bekommt man relativ schnell eine Antwort, wenn man ausschaltet.
Code hier im "Spoiler" damit der Thread lesbar bleibt.
! ```
`//################### 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 werdenif (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] -
Ich sage schon mal danke, werde es mir am Wochenende mal ansehen, aktuell bin ich leider etwas angeschlagen
-
Ich sage schon mal danke, werde es mir am Wochenende mal ansehen, aktuell bin ich leider etwas angeschlagen `
Gib mir bitte mal kurz Bescheid ob es bei dir auch funktioniert. Wenn ich irgendwann etwas Zeit finde werde ich versuchen mein Skript direkt in den Adapter mit aufzunehmen, dann muss der TV nicht mehr an zwei stellen integriert werden.Aktuell sehe ich aber, dass der Adapter häufig auf "gelb" springt, weil der TV nicht erreichbar wäre. Ich habe die "einfache IP Steuerung" (= Low Level Protokoll) bei meinem deaktiviert, weil er dann keinen TCP Dienst aufrecht erhält, der scheinbar viel Strom benötigt aber für unser vorhaben nicht notwendig ist, weil mein Script und auch der Adapter auf HTTP Requests und das damit verbundene "High Level" Protokoll aufbauen.
-
Ich sage schon mal danke, werde es mir am Wochenende mal ansehen, aktuell bin ich leider etwas angeschlagen `
Gib mir bitte mal kurz Bescheid ob es bei dir auch funktioniert. Wenn ich irgendwann etwas Zeit finde werde ich versuchen mein Skript direkt in den Adapter mit aufzunehmen, dann muss der TV nicht mehr an zwei stellen integriert werden.Aktuell sehe ich aber, dass der Adapter häufig auf "gelb" springt, weil der TV nicht erreichbar wäre. Ich habe die "einfache IP Steuerung" (= Low Level Protokoll) bei meinem deaktiviert, weil er dann keinen TCP Dienst aufrecht erhält, der scheinbar viel Strom benötigt aber für unser vorhaben nicht notwendig ist, weil mein Script und auch der Adapter auf HTTP Requests und das damit verbundene "High Level" Protokoll aufbauen. `
Ich verstehe zwar nichts vom Programmieren oder von den Protokollen die du da beschreibst, kann Dir aber sagen, dass das Skript bei mir funktioniert und ich z.B. folgende Werte angezeigt bekomme.
3962_2018-02-13_22_48_53-iobroker.admin.png -
Hallo zusammen,
ich habe den Adapter (0.1.0) heute ebenfalls fehlerfrei installieren und die Anleitung am Sony TV abarbeiten können.
Nun möchte ich gerne einige Befehle per Sprachsteuerung (Alexa) Richtung TV senden. Leider wird mir der TV unter dem Cloud-Adapter nicht als Smart-Home Gerät angezeigt.
Mache ich was falsch?
Bei den Homematic-Geräten war dies genau das Vorgehen.
Über eine kurze Hilfestellung wäre ich dankbar.
EDIT: Ok, ich habe mich etwas mehr mit ioBroker beschäftigt. Ich muss die entsprechenden Bravia-Objekte manuell dem Cloud-Adapter hinzufügen.
Wen es interessiert: das Einschalten des TVs klappt bei mir ohne Probleme. Es scheint ja diesbezüglich bei einigen Probleme zu geben. Ich habe einen Bravia der XD (2016) Serie. `
Hallo,
ich kann den Adapter leider nicht aktivieren. Da ich keinen PSK-Schlüssel im TV-Menü finde, habe ich im Adapter 0000 eingetragen. Kann ich irgendwo erkennen, ob mein Sony Bravia kompatibel ist? Im Log erscheinen keine Fehler.
Wie und wo kann ich denn die Objekte manuell dem Cloud-Adapter hinzufügen? Wenn ich im Cloud-Adapter die Objekte unter Sony-Bravia.0 auswähle passiert nichts.
Danke
ioBrokerBert
-
Gibt es eine Kompatibilitäts-Liste für den Adapter?
Möchte mir einen neuen (SONY) TV kaufen und wäre begeistert, wenn ich diesen auch über ioBroker steuern könnte.
Leider kann ich die Kompatibilität bei einem noch nicht erworbenen Gerät schwer testen…
-
Hallo, kurze Frage, ich habe seit gut 2 Stunden iobroker auf meinem Pi und direkt den Adapter für Sony Bravia Fernseher installiert. Leider kann ich nicht Alexa mit den Objekten verknüpfen. Wenn ich die Objekte manuell in der UI aktiviere, klappt alles (außer den Fernseher einschalten, aber das habe ich mit WakeOnLan gelöst). Ich habe meinen Account mit ioBroker und dem Alexa Skill gekoppelt. Hat einer das Gleiche Problem?
LG
-
ich habe das gleiche Problem kann mir jemand vielleicht weiterhelfen?
-
Ich habe den Adapter erfolgreich installieren und einrichten können. Ich kann meinen Fernseher auch steuern. Nun habe ich eine Idee, die ich leider mit meinen Programmierkenntnissen nicht umsetzen kann, wo ich mir aber vorstellen kann, dass einige "Mitleidende" auch begeistert wären, wenn die Idee umsetzbar ist. Sony hat ja bekanntlich den Funktionsumfang der Androidbasierenden TV`s zusammen geschrumpft. Man konnte Aufnahmen aus der Ferne programmieren. Für mich sehr schmerzlich, wurde diese Funktion entfernt. Da man mit dem Adapter auch die Aufnahme steuern kann, ist es mir in den Sinn gekommen, ob man diese Funktion über den IOBroker wieder zurück holen kann. Meine Frage ist nun, ob sich noch jemand finden würde, der etwas mehr Programmierkenntnisse hat, diese Funktion, basierend auf dem Adapter nachzubilden?
-
Hallo,
ich habe einen Sony Fernseher von 2013 ohne Android und der Adapter funktioniert ganz ausgezeichnet. Leider lässt sich mein TV auch nicht einschalten aber das versuche ich gerade mit Wake on Lan zu lösen. Ich habe hier gelesen dass jemand Probleme hatte die Objekte als Smartgeräte in die Cloud/Alexa zu importieren. Bei mir ging es als ich die Objekt-Rolle von "button" in "state" geändert habe.
Viele Grüße
-
Hallo,
Wie bekomme ich das denn hin das Alexa die Befehle von Idittmars Instanz (Sony) benutzten kann?
Im Skript selber von Sony kann ich die entsprechenden Button nutzen und der TV spricht darauf an.
Aber wie integriere ich das in den Broadlink und Alexa??
Sorry, aber ich bin erst frisch dabei
Gruß Dia
-
Hey Leute bräuchte echt Hilfe.Irgendwas überseh ich bestimmt vor lauter Bäume.
Gruß
Dia
-
@Dia:Hey Leute bräuchte echt Hilfe.Irgendwas überseh ich bestimmt vor lauter Bäume.
Gruß
Dia ` Welches gerät hast du denn ? Hat das schon Android (zu erkennen am play store) ??
Grüße
Zyklop
Gesendet von meinem K6000 Pro mit Tapatalk
-
Ich habe den Adapter erfolgreich installieren und einrichten können. Ich kann meinen Fernseher auch steuern. Nun habe ich eine Idee, die ich leider mit meinen Programmierkenntnissen nicht umsetzen kann, wo ich mir aber vorstellen kann, dass einige "Mitleidende" auch begeistert wären, wenn die Idee umsetzbar ist. Sony hat ja bekanntlich den Funktionsumfang der Androidbasierenden TV
s zusammen geschrumpft. Man konnte Aufnahmen aus der Ferne programmieren. Für mich sehr schmerzlich, wurde diese Funktion entfernt. Da man mit dem Adapter auch die Aufnahme steuern kann, ist es mir in den Sinn gekommen, ob man diese Funktion über den IOBroker wieder zurück holen kann. Meine Frage ist nun, ob sich noch jemand finden würde, der etwas mehr Programmierkenntnisse hat, diese Funktion, basierend auf dem Adapter nachzubilden?
Sorry, aber das mache ich mit meiner VU+ Box (vorher solo2, dann DUO2, jetzt uno 4k se) über Android App Dream Droid, welche das webinterface nutzt ("unbekannten" externen Port auf Fritzbox weiterleiten auf internen port 80 / 81 …....)
Nutze die Aufnahmefunktion des Sony TV nicht....
Kann Dir nur eine Linux Set-Top-Box mit Enigma2 hierfür ans Herz legen.......
Grüße
zyklop
-
Hallo, kurze Frage, ich habe seit gut 2 Stunden iobroker auf meinem Pi und direkt den Adapter für Sony Bravia Fernseher installiert. Leider kann ich nicht Alexa mit den Objekten verknüpfen. Wenn ich die Objekte manuell in der UI aktiviere, klappt alles (außer den Fernseher einschalten, aber das habe ich mit WakeOnLan gelöst). Ich habe meinen Account mit ioBroker und dem Alexa Skill gekoppelt. Hat einer das Gleiche Problem?
LG `
Es gibt keine Probleme, nur Lösungen !!!!
Habe auch mal damit angefangen und mich schwer getan.
Du musst nur den IOBroker Cloud Adapter installieren, Java script Adapter und dann dort die scripte mit Blocky anlegen (kannste dort vorher testen) und in die "Geräte" im cloud Adapter anlegen. Danach –> Alexa, suche Geräte !!!
Klingt einfach, ist es auch.......
Bei Fragen, ----> fragen......dafür ist ein Forum da !!!
Grüße
zyklop
Hier ein kleines Beispiel für "Blocky" Java script "Alexa, Netflix AN"....
2607_schalter_netflix.png
2607_instanz_schalter_netflix.png -
Gibt es eine Kompatibilitäts-Liste für den Adapter?
Möchte mir einen neuen (SONY) TV kaufen und wäre begeistert, wenn ich diesen auch über ioBroker steuern könnte.
Leider kann ich die Kompatibilität bei einem noch nicht erworbenen Gerät schwer testen… `
Wenn er Android hat (zu erkennen am Playstore..), geht so ziemlich alles mit dem "Sony Bravia Smart-TV" Adapter…..........
Grüße
zyklop
-
@Dia:Hallo,
Wie bekomme ich das denn hin das Alexa die Befehle von Idittmars Instanz (Sony) benutzten kann?
Im Skript selber von Sony kann ich die entsprechenden Button nutzen und der TV spricht darauf an.
Aber wie integriere ich das in den Broadlink und Alexa??
Sorry, aber ich bin erst frisch dabei
Gruß Dia `
Wenn Dein Sony Bravia im Netzwerk hängt, nutze nicht den Broadlink sondern den Sony Bravia Smart-TV Adapter !! Der ist per LAN Steuerbar…...
Grüße
zyklop
PS: bin froh, das ich meinen Broadlink nicht mehr brauche, weil (sowohl der IOBroker Dienst als auch das Gerät selber im WLAN manchmal hängt...)
-
In diese Richtung habe ich mir den Ansatz vorgestellt! Ich habe es auch schon geschafft eine Aufnahme per Skript zu starten und zu stoppen. Nun wäre noch eine Verbindung zu eine TV-Programm Adapter toll, um dort bequem eine Sendung auswählen zu können und dann daraus eine Programmierung der Aufnahme zu steuern. Das ist aber leider der Punkt, an dem ich überfragt bin, wie ich das umsetzen kann.
Vielen Dank erst einmal für Eure Hilfe!
-
Ich hätte mal das oben lesen sollen. :roll:
Danke Dir Zyklop.
Und wie bekomme ich mehrere Eingaben hintereinander hin.
Z.B. für einen bestimmten Kanal?
Gruß
Dia
-
Hi,
Also ich habs mit Blocky hinbekommen.
Meine Frage wäre noch ob man das "Alexa,mache RTL an" in "Alex schalte auf RTL" ändern kann?
Gruß Dia