Sony TV HX-, NX-Serie

Begonnen von StephanH, 03 Dezember 2013, 12:55:57

Vorheriges Thema - Nächstes Thema

vuffiraa

Zitat von: mar5 am 23 Dezember 2017, 23:54:07
Hi,

ich kann jetzt an meinen Sony TV Texte senden - zB. Taste Home(Google), Youtube ...
Das geht auch über OK Google - wenn man will.

Hier ist mein Script sony_w855c dazu. Ich habe es lieber ganz gepostet - damit es auch geht. Einen Auth-Cookie braucht man dazu.
Es wäre schön, wenn dies in der Bravia-Lib landet.

Mit einem anderen Aufruf soll man auch Apps des Fernsehers direkt starten können.


Beispielaufruf: sony_w855c 192.168.178.22 sendtext "Suche nach einem Begriff"

Ist eingebaut und wird ab morgen mit dem Update verteilt.

Es gibt ein neues Set-Kommando "text" welches die angegebenen Argumente in ein Textfeld überträgt. Dazu muss auf dem Fernseher auch ein solchen vorhanden sein und den Fokus haben.

Ich hatte zuerst gehofft, dass das endlich die Möglichkeit ist, um Texte einfach auf dem TV anzuzeigen...

Gruß Vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

willibutz

Hallo Vuffiraa,
habe die Text-Funktion probiert. Sie funktioniert prinzipiell z.B. in einem Browserfenster. Leider bastelt jede APP ihre eigenen Eingabe-Felder und da kommt dann z.B. bei Youtube nichts an.
Bei der Spielerei habe ich festgestellt, dass ja schließlich auch auf der Fernbedienung Buchstaben aufgedruckt sind. Es ist mir allerdings nicht gelungen, mit der Fernbedienung direkt Buchstaben zu versenden. Ich habe es dann noch mal mit deiner Funktion RemoteControl versucht aber die mag genau wie das Original nur Zahlen ;-)

Aber eigentlich hatte ich genau wie du eher auf eine Text-Ausgabe als eine Text-Eingabe Möglichkeit gehofft. Ich habe auch dazu schon mal etwas rumgespielt und auf dem Fernseher die APP Notifications for AndroidTV installiert. Damit kann man Benachrichtigungen die auf dem Handy eingehen auch auf dem Fernseher anzeigen (egal was da gerade läuft).

Da ich den Fernseher ja aber von FHEM aus füttern möchte habe ich mal versucht mit HTTPMOD das Senden nachzustellen, allerdings ohne Erfolg :-(

Außerdem habe ich noch ein passendes home-assitant-modul gefunden:
https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/notify/nfandroidtv.py
Das hilft mir aber mangels Wissens auch nicht viel weiter, aber vielleicht kannst du ja etwas damit anfangen.

auf jeden Fall vielen Dank für deine bisherige Arbeit am Modul und noch schöne Restweihnachten,
viele Grüße willibutz

mar5

Hi,

ich habe die BraviaLib ausprobiert und sie funktioniert bestens.
Nur im Wiki sollte man schreiben, dass man 2 Mal register aufrufen muss. ... eigentlich logisch ... Aber das hat mir 5 Minuten gekostet :-O.

Bei mir geht Youtube, NetFlix und Home mit der text-Funktion. Wichtig ist, dass man nicht schon in dem Textfeld etwas eingegeben hat. Es muss der Cursor im Textfeld zu sehen sein. Dann geht es. Man bekommt einen Fehler 7 zurück, wenn man nicht im richtigen Modus ist. Dazu muss man die Antwort auswerten. Mehr brauche ich bisher auch nicht. Youtube kann ich auch gleich per OK Google vom Handy aus starten und auch alle Funktionen bis zu der Liste mit den gesuchten Videos ausführen lassen.

Ich habe noch etwas getestet und Apps auflisten und starten lassen. Es soll auch stoppen gehen. Allerdings wechsele ich meist nur die Apps.
Hier unten ist mein Script. Dies habe ich um netflix, youtube und applist erweitert. Man sollte in Perl die Applist als XML einladen und dann kann man die App per Namen auswählen und muss sich nicht die ganze App-Id merken. Leider bin ich noch nicht so gut in Perl. Ich programmiere eher C. Wenn ihr das macht ist das zig Mal schneller :-) und auch richtig.

Grüße,
Marcus

#!/bin/bash

set -e

if [ "$1" = "" ] || [ "$2" = "" ]; then
  echo "Usage: $0 <TV_IP> <IRCC_COMMAND>"
  exit 1
fi

declare -A commandmap
commandmap[Num2]="AAAAAQAAAAEAAAABAw=="
commandmap[Num3]="AAAAAQAAAAEAAAACAw=="
commandmap[Num1]="AAAAAQAAAAEAAAAAAw=="
commandmap[Num4]="AAAAAQAAAAEAAAADAw=="
commandmap[Num5]="AAAAAQAAAAEAAAAEAw=="
commandmap[Num6]="AAAAAQAAAAEAAAAFAw=="
commandmap[Num7]="AAAAAQAAAAEAAAAGAw=="
commandmap[Num8]="AAAAAQAAAAEAAAAHAw=="
commandmap[Num9]="AAAAAQAAAAEAAAAIAw=="
commandmap[Num0]="AAAAAQAAAAEAAAAJAw=="
commandmap[Num11]="AAAAAQAAAAEAAAAKAw=="
commandmap[Num12]="AAAAAQAAAAEAAAALAw=="
commandmap[Enter]="AAAAAQAAAAEAAAALAw=="
commandmap[Guide]="AAAAAQAAAAEAAAAOAw=="
commandmap[ChannelUp]="AAAAAQAAAAEAAAAQAw=="
commandmap[ChannelDown]="AAAAAQAAAAEAAAARAw=="
commandmap[VolumeUp]="AAAAAQAAAAEAAAASAw=="
commandmap[VolumeDown]="AAAAAQAAAAEAAAATAw=="
commandmap[Mute]="AAAAAQAAAAEAAAAUAw=="
commandmap[TvPower]="AAAAAQAAAAEAAAAVAw=="
commandmap[Audio]="AAAAAQAAAAEAAAAXAw=="
commandmap[MediaAudioTrack]="AAAAAQAAAAEAAAAXAw=="
commandmap[Tv]="AAAAAQAAAAEAAAAkAw=="
commandmap[Input]="AAAAAQAAAAEAAAAlAw=="
commandmap[TvInput]="AAAAAQAAAAEAAAAlAw=="
commandmap[TvAntennaCable]="AAAAAQAAAAEAAAAqAw=="
commandmap[WakeUp]="AAAAAQAAAAEAAAAuAw=="
commandmap[PowerOff]="AAAAAQAAAAEAAAAvAw=="
commandmap[Sleep]="AAAAAQAAAAEAAAAvAw=="
commandmap[Right]="AAAAAQAAAAEAAAAzAw=="
commandmap[Left]="AAAAAQAAAAEAAAA0Aw=="
commandmap[SleepTimer]="AAAAAQAAAAEAAAA2Aw=="
commandmap[Analog2]="AAAAAQAAAAEAAAA4Aw=="
commandmap[TvAnalog]="AAAAAQAAAAEAAAA4Aw=="
commandmap[Display]="AAAAAQAAAAEAAAA6Aw=="
commandmap[Jump]="AAAAAQAAAAEAAAA7Aw=="
commandmap[PicOff]="AAAAAQAAAAEAAAA+Aw=="
commandmap[PictureOff]="AAAAAQAAAAEAAAA+Aw=="
commandmap[Teletext]="AAAAAQAAAAEAAAA/Aw=="
commandmap[Video1]="AAAAAQAAAAEAAABAAw=="
commandmap[Video2]="AAAAAQAAAAEAAABBAw=="
commandmap[AnalogRgb1]="AAAAAQAAAAEAAABDAw=="
commandmap[Home]="AAAAAQAAAAEAAABgAw=="
commandmap[Exit]="AAAAAQAAAAEAAABjAw=="
commandmap[PictureMode]="AAAAAQAAAAEAAABkAw=="
commandmap[Confirm]="AAAAAQAAAAEAAABlAw=="
commandmap[Up]="AAAAAQAAAAEAAAB0Aw=="
commandmap[Down]="AAAAAQAAAAEAAAB1Aw=="
commandmap[ClosedCaption]="AAAAAgAAAKQAAAAQAw=="
commandmap[Component1]="AAAAAgAAAKQAAAA2Aw=="
commandmap[Component2]="AAAAAgAAAKQAAAA3Aw=="
commandmap[Wide]="AAAAAgAAAKQAAAA9Aw=="
commandmap[EPG]="AAAAAgAAAKQAAABbAw=="
commandmap[PAP]="AAAAAgAAAKQAAAB3Aw=="
commandmap[TenKey]="AAAAAgAAAJcAAAAMAw=="
commandmap[BSCS]="AAAAAgAAAJcAAAAQAw=="
commandmap[Ddata]="AAAAAgAAAJcAAAAVAw=="
commandmap[Stop]="AAAAAgAAAJcAAAAYAw=="
commandmap[Pause]="AAAAAgAAAJcAAAAZAw=="
commandmap[Play]="AAAAAgAAAJcAAAAaAw=="
commandmap[Rewind]="AAAAAgAAAJcAAAAbAw=="
commandmap[Forward]="AAAAAgAAAJcAAAAcAw=="
commandmap[DOT]="AAAAAgAAAJcAAAAdAw=="
commandmap[Rec]="AAAAAgAAAJcAAAAgAw=="
commandmap[Return]="AAAAAgAAAJcAAAAjAw=="
commandmap[Blue]="AAAAAgAAAJcAAAAkAw=="
commandmap[Red]="AAAAAgAAAJcAAAAlAw=="
commandmap[Green]="AAAAAgAAAJcAAAAmAw=="
commandmap[Yellow]="AAAAAgAAAJcAAAAnAw=="
commandmap[SubTitle]="AAAAAgAAAJcAAAAoAw=="
commandmap[CS]="AAAAAgAAAJcAAAArAw=="
commandmap[BS]="AAAAAgAAAJcAAAAsAw=="
commandmap[Digital]="AAAAAgAAAJcAAAAyAw=="
commandmap[Options]="AAAAAgAAAJcAAAA2Aw=="
commandmap[Media]="AAAAAgAAAJcAAAA4Aw=="
commandmap[Prev]="AAAAAgAAAJcAAAA8Aw=="
commandmap[Next]="AAAAAgAAAJcAAAA9Aw=="
commandmap[DpadCenter]="AAAAAgAAAJcAAABKAw=="
commandmap[CursorUp]="AAAAAgAAAJcAAABPAw=="
commandmap[CursorDown]="AAAAAgAAAJcAAABQAw=="
commandmap[CursorLeft]="AAAAAgAAAJcAAABNAw=="
commandmap[CursorRight]="AAAAAgAAAJcAAABOAw=="
commandmap[ShopRemoteControlForcedDynamic]="AAAAAgAAAJcAAABqAw=="
commandmap[FlashPlus]="AAAAAgAAAJcAAAB4Aw=="
commandmap[FlashMinus]="AAAAAgAAAJcAAAB5Aw=="
commandmap[AudioQualityMode]="AAAAAgAAAJcAAAB7Aw=="
commandmap[DemoMode]="AAAAAgAAAJcAAAB8Aw=="
commandmap[Analog]="AAAAAgAAAHcAAAANAw=="
commandmap[Mode3D]="AAAAAgAAAHcAAABNAw=="
commandmap[DigitalToggle]="AAAAAgAAAHcAAABSAw=="
commandmap[DemoSurround]="AAAAAgAAAHcAAAB7Aw=="
commandmap[xAD]="AAAAAgAAABoAAAA7Aw=="
commandmap[AudioMixUp]="AAAAAgAAABoAAAA8Aw=="
commandmap[AudioMixDown]="AAAAAgAAABoAAAA9Aw=="
commandmap[PhotoFrame]="AAAAAgAAABoAAABVAw=="
commandmap[Tv_Radio]="AAAAAgAAABoAAABXAw=="
commandmap[SyncMenu]="AAAAAgAAABoAAABYAw=="
commandmap[Hdmi1]="AAAAAgAAABoAAABaAw=="
commandmap[Hdmi2]="AAAAAgAAABoAAABbAw=="
commandmap[Hdmi3]="AAAAAgAAABoAAABcAw=="
commandmap[Hdmi4]="AAAAAgAAABoAAABdAw=="
commandmap[TopMenu]="AAAAAgAAABoAAABgAw=="
commandmap[PopUpMenu]="AAAAAgAAABoAAABhAw=="
commandmap[OneTouchTimeRec]="AAAAAgAAABoAAABkAw=="
commandmap[OneTouchView]="AAAAAgAAABoAAABlAw=="
commandmap[DUX]="AAAAAgAAABoAAABzAw=="
commandmap[FootballMode]="AAAAAgAAABoAAAB2Aw=="
commandmap[iManual]="AAAAAgAAABoAAAB7Aw=="
commandmap[Netflix]="AAAAAgAAABoAAAB8Aw=="
commandmap[Assists]="AAAAAgAAAMQAAAA7Aw=="
commandmap[ActionMenu]="AAAAAgAAAMQAAABLAw=="
commandmap[Help]="AAAAAgAAAMQAAABNAw=="
commandmap[TvSatellite]="AAAAAgAAAMQAAABOAw=="
commandmap[WirelessSubwoofer]="AAAAAgAAAMQAAAB+Aw=="


if [ "$2" = "sendtext" ]; then
  cmd='{"id":78,"method":"setTextForm","version":"1.0","params":['\"$3\"']}'
  echo "$cmd"
  code=$(curl -d "$cmd" -X POST -H "Content-Type: application/json" -H "Cookie: auth=D4917CE46114429359002FFAE903EA8F7C7295C" http://$1/sony/appControl)
elif [ "$2" = "applist" ]; then
  cmd='{"version":"1.0"}'
  echo "$cmd"
  code=$(curl -d "$cmd" -X GET -H "Content-Type: application/json" -H "Cookie: auth=D94917CE46114429359002FFAE903EA8F7C7295C" http://$1/DIAL/sony/applist)
elif [ "$2" = "netflix" ]; then
  cmd='{"version":"1.0"}'
  echo "$cmd"
  code=$(curl -d "$cmd" -X POST -H "Content-Type: application/json" -H "Cookie: auth=D94917CE46114429359002FFAE903EA8F7C7295C" http://$1/DIAL/apps/com.sony.dtv.com.netflix.ninja.com.netflix.ninja.MainActivity)
elif [ "$2" = "youtube" ]; then
  cmd='{"version":"1.0"}'
  echo "$cmd"
  code=$(curl -d "$cmd" -X POST -H "Content-Type: application/json" -H "Cookie: auth=D94917CE46114429359002FFAE903EA8F7C7295C" http://$1/DIAL/apps/com.sony.dtv.com.google.android.youtube.tv.com.google.android.apps.youtube.tv.activity.TvGuideActivity)
else
  cmd="<?xml version=\"1.0\"?><s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"><s:Body><u:X_SendIRCC xmlns:u=\"urn:schemas-sony-com:service:IRCC:1\"><IRCCCode>${commandmap[$2]}</IRCCCode></u:X_SendIRCC></s:Body></s:Envelope>"

  code=$(curl -w "%{http_code}" --silent -XPOST http://$1/sony/IRCC -d "$cmd" -H 'Content-Type: text/xml; charset=UTF-8' -H 'SOAPACTION: "urn:schemas-sony-com:service:IRCC:1#X_SendIRCC"' -H "Cookie: auth=D94917CE46114429359002FFAE903EA8F7C7295C" -o /dev/null )
fi

if [ "$code" = "200" ]; then
  echo "✓"
else
  echo "Command failed (HTTP_CODE: $code, try running it in a console)"
  exit 1
fi


vuffiraa

Zitat von: mar5 am 29 Dezember 2017, 22:59:39
Hi,

ich habe die BraviaLib ausprobiert und sie funktioniert bestens.
Nur im Wiki sollte man schreiben, dass man 2 Mal register aufrufen muss. ... eigentlich logisch ... Aber das hat mir 5 Minuten gekostet :-O.

Bei mir geht Youtube, NetFlix und Home mit der text-Funktion. Wichtig ist, dass man nicht schon in dem Textfeld etwas eingegeben hat. Es muss der Cursor im Textfeld zu sehen sein. Dann geht es. Man bekommt einen Fehler 7 zurück, wenn man nicht im richtigen Modus ist. Dazu muss man die Antwort auswerten. Mehr brauche ich bisher auch nicht. Youtube kann ich auch gleich per OK Google vom Handy aus starten und auch alle Funktionen bis zu der Liste mit den gesuchten Videos ausführen lassen.

Ich habe noch etwas getestet und Apps auflisten und starten lassen. Es soll auch stoppen gehen. Allerdings wechsele ich meist nur die Apps.
Hier unten ist mein Script. Dies habe ich um netflix, youtube und applist erweitert. Man sollte in Perl die Applist als XML einladen und dann kann man die App per Namen auswählen und muss sich nicht die ganze App-Id merken. Leider bin ich noch nicht so gut in Perl. Ich programmiere eher C. Wenn ihr das macht ist das zig Mal schneller :-) und auch richtig.

Grüße,
Marcus

Hallo Marcus,

gute Idee mit der App-Liste. Dieses Jahr schaffe ich das aber nicht mehr  ;) In der Applist-Url ist noch ein DIAL zu viel, sonst sollte es aber klappen.

Mit Perl habe ich auch erst angefangen, als ich mich näher mit Fhem beschäftigt habe. Ansonsten habe eher mit ABAP zu tun, aber das wäre für Hausautomation etwas übertrieben...

Gruß Ulf

PS: Und einen guten Rutsch in die Runde!
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

mar5

Hallo Ulf,

DIAL muss in der URL enthalten sein.

Ansonsten warte ich gerne. Ich kann ja mein bisheriges Skript verwenden.

Guten Rutsch
Marcus

RaspiLED

OT:
Hihi,
eine SAP Kiste die den Fernseher steuert klinkt spannend ;-)
Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

vuffiraa

Zitat von: mar5 am 30 Dezember 2017, 22:38:12
Hallo Ulf,

DIAL muss in der URL enthalten sein.

Ansonsten warte ich gerne. Ich kann ja mein bisheriges Skript verwenden.

Guten Rutsch
Marcus

Du hast auch Recht, ich kannte bisher nur einen anderen Weg zur App-List.
POST http://192.168.2.43/sony/appControl
{"method":"getApplicationList","params":[],"id":1,"version":"1.0"}

Mal sehen, ob das die gleichen Daten sind.

Gruß Ulf
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

vuffiraa

Im neuen Jahr gibt es per Update ein neues Set: Application.

Damit läßt sich eine Anwendung auf dem TV starten. Bei den Namen der Anwendungen sind die Leerzeichen durch Unterstriche ersetzt, dass macht die Anzeige in der Dropdown-Liste einfacher.

Rutscht gut rein!
Ulf
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

vuffiraa

Zitat von: RaspiLED am 31 Dezember 2017, 11:02:31
OT:
Hihi,
eine SAP Kiste die den Fernseher steuert klinkt spannend ;-)
Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...

Au ja, und auch UI-technisch ist für jeden etwas dabei von Dynpro bis UI5.  ;)
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

justme1968

leerzeichen in fhemweb drop downs gehen seit einiger zeit wenn man ein # statt dem leerzeichen in der set ? rückgabe verwendet
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

willibutz

Hallo vuffiraa,

habe die neue Funktion getestet
ZitatIm neuen Jahr gibt es per Update ein neues Set: Application.

funktioniert auch sehr gut, allerdings musste ich SET TV APP (per Befehlszeile) und nicht APPLICATION (wie im Menü) verwenden.
Irgendetwas scheint da noch nicht zu passen aber scheinbar nur ein Fehler in der Bezeichnung.
Schöne neue Funktion im neuen Jahr, danke.

LG willibutz

PS: hattest du dir eigentlich mal "Notifications for AndroidTV" angeschaut?

vuffiraa

Zitat von: willibutz am 09 Januar 2018, 22:51:09
Hallo vuffiraa,

habe die neue Funktion getestet
funktioniert auch sehr gut, allerdings musste ich SET TV APP (per Befehlszeile) und nicht APPLICATION (wie im Menü) verwenden.
Irgendetwas scheint da noch nicht zu passen aber scheinbar nur ein Fehler in der Bezeichnung.
Schöne neue Funktion im neuen Jahr, danke.

LG willibutz

PS: hattest du dir eigentlich mal "Notifications for AndroidTV" angeschaut?

Da ist noch ein Typo, den bekommen wir aber weg  :)
"Notifications for AndroidTV" habe ich mir noch nicht angeschaut, steht aber auf meiner Liste.

Gruß Vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

justme1968

das fände ich klasse wenn du dir das anschaust :). ich hatte das auch schob vor. bin aber noch nicht dazu gekommen.

das protokoll ist scheinbar nirgendwo dokumentiert. es scheint aber ein einfacher http post request zu sein.

für home assistant scheint es schon ein modul zu geben bei dem man das protokoll abkupfern könnte:https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/notify/nfandroidtv.py

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

willibutz

Hallo vuffiraa,
kurze Rückmeldung zu deiner typo-Korrektur: es wird jetzt zwar application als gültiger Befehl erkannt, es werden aber leider keine Applicationen mehr akzeptiert, die ein Leerzeichen im Namen haben.
Ich würde denken, dass ich die mit der letzten Version noch starten konnte. Jetzt kommt beim Versuch z.B. 'DS Photo' zu starten die Meldung:
Unknown app 'DS' on that device.

aber sonst, alles gut  ;D

LG willibutz

vuffiraa

Zitat von: willibutz am 14 Januar 2018, 19:01:07
Hallo vuffiraa,
kurze Rückmeldung zu deiner typo-Korrektur: es wird jetzt zwar application als gültiger Befehl erkannt, es werden aber leider keine Applicationen mehr akzeptiert, die ein Leerzeichen im Namen haben.
Ich würde denken, dass ich die mit der letzten Version noch starten konnte. Jetzt kommt beim Versuch z.B. 'DS Photo' zu starten die Meldung:
Unknown app 'DS' on that device.

aber sonst, alles gut  ;D

LG willibutz

Hallo Willibutz,

sowas passiert, wenn man Sachen besonders gut machen will. Ich habe die '_' aus dem Namen entfernt und richtige Leerzeichen nach dem Vorschlag von justme1968 genommen. Wenn man den Befehl direkt ausführt und '#' benutzt, funktioniert er, also 'DS#Photo'.

Ansonsten gibt es morgen ein Update. Bitte auch mal mit Kanälen und Eingängen testen, da habe ich es auch entsprechen geändert.

Schönen Abend,
Vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean