Sony TV HX-, NX-Serie

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

Vorheriges Thema - Nächstes Thema

vuffiraa

Bekommst du heraus, wie die App Timeshift erkennt? Kannst du die Kommunikation mitschneiden?

Ob der 404 bereits als 'present' oder nicht interpretiert werden soll, da bin ich offen. Es sollte intuitiv und konsistent sein :)
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

evgeni.g

Hallo vuffiraa,

erstmal vielen Dank für das Modul. Ich finde es super. Seit kurzem bzw. seit der letzte Version kriege ich folgende Fehlermeldung und das Modul wird nicht geladen. Kannst du mir weiterhelfen?
Zitat2016.02.04 23:01:06 2: Switched CUL_0 rfmode to HomeMatic
Bareword found where operator expected at ./FHEM/70_BRAVIA.pm line 6, near ""en" class"
   (Missing operator before class?)
Bareword found where operator expected at ./FHEM/70_BRAVIA.pm line 24, near "<title>fhem_modules"
   (Missing operator before fhem_modules?)
Bareword found where operator expected at ./FHEM/70_BRAVIA.pm line 24, near "70_BRAVIA"
   (Missing operator before BRAVIA?)
2016.02.04 23:01:07 1: reload: Error:Modul 70_BRAVIA deactivated:
Unrecognized character \xC2; marked by <-- HERE after at master <-- HERE near column 48 at ./FHEM/70_BRAVIA.pm line 24, <$fh> line 120.

2016.02.04 23:01:07 0: Unrecognized character \xC2; marked by <-- HERE after at master <-- HERE near column 48 at ./FHEM/70_BRAVIA.pm line 24, <$fh> line 120.

2016.02.04 23:01:08 1: Including ./log/fhem.save
2016.02.04 23:01:08 1: configfile: Cannot load module BRAVIA

vuffiraa

Zitat von: evgeni.g am 04 Februar 2016, 23:05:58
Hallo vuffiraa,

erstmal vielen Dank für das Modul. Ich finde es super. Seit kurzem bzw. seit der letzte Version kriege ich folgende Fehlermeldung und das Modul wird nicht geladen. Kannst du mir weiterhelfen?

Das sieht danach aus, dass du den Link direkt als Modul genutzt hast, er zeigt aber erst mal nur auf die GitHub-Seite  des Moduls  ;) Dort kann man sich das Modul herunterladen. Hier wäre aber auch noch der Link zum Quellcode.
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

crusader

#243
Zitat von: vuffiraa am 04 Februar 2016, 20:20:51
Bekommst du heraus, wie die App Timeshift erkennt? Kannst du die Kommunikation mitschneiden?

Die App sendet u.a.:

HTTP 520 POST /sony/avContent HTTP/1.1  (application/json)

Ich nehme an, dass in der Antwort die Information enthalten ist.
Die Antwort hat mein capture-Programm leider nicht erfasst.

Edit:
Sehe gerade, dass diese Anfrage vom BRAVIA-Modul schon verwendet wird.
Vielleicht versteckt sich die Info dann doch in:

HTTP 535 POST /sony/recording HTTP/1.1  (application/json)

{"method":"getScheduleList","params":[{"cnt":100,"stIdx":0}],"id":2981,"version":"1.0"}


Edit2:
Hab die Anfrage mal vom PC abgesendet. Antwort im Timeshift-Modus:
{"id":2981,"result":[[{"channelName":"WDR HD","durationSec":28800,"id":"0","overlapStatus":"notOverlapped","quality":"DR","recordingStatus":"recording","repeatType":"1","startDateTime":"2016-02-05T19:32:35+0100","title":"","type":"recording","uri":"tv:dvbs?trip=1.1201.28331&srvName=WDR%20HD"}]]}

TVSideView vergleicht diese Info wohl mit der aktuellen Programminformation und stellt das im Programmführer entsprechend dar.

Edit3:
Steht ja alles hier:
https://aydbe.com/assets/uploads/2014/11/json.txt

Praktisch ist z.B. diese Abfrage auf /avContent:
{"id":2,"method":"getContentList","version":"1.2","params":[{"source":"tv:dvbs","type":"","cnt":50,"stIdx":""}]}
Liefert eine hübsche Liste der ersten 50 Satelliten-Kanäle.

vuffiraa

Da hast du mir ja ganz schön Arbeit verschafft. Die Seite ist super, außer das ich die Sendernamen nicht lesen kann...
Kannst du mit 'getScheduleList' noch etwas rumspielen? Soweit ich das verstehe, ist das die Liste der Aufnahmen. Wenn ich recht habe, hast momentan keine weiteren Aufnahmen gespeichert. Kannst du vielleicht mal etwas regulär aufnehmen. Und dann das Kommando bei der Aufnahme, danach und bei der Wiedergabe probieren.
Ist ja Wochenende ;)
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

crusader

Zitat von: vuffiraa am 06 Februar 2016, 11:49:03
Da hast du mir ja ganz schön Arbeit verschafft. Die Seite ist super, außer das ich die Sendernamen nicht lesen kann...
Kannst du mit 'getScheduleList' noch etwas rumspielen?
Werde ich machen.

Was meinst Du mit "...Sendernamen nicht lesen kann" ?

vuffiraa

Zitat von: crusader am 06 Februar 2016, 13:37:39
Was meinst Du mit "...Sendernamen nicht lesen kann" ?

Das war nicht ganz ernst gemeint. Wenn du auf der Webseite schaut, wo eigentlich Sendernamen oder Titel von Sendungen stehen sollten, werden bei mir im Browser lustige Sonderzeichen angezeigt.
Das ist sicherlich nur ein falsches Encoding der Webseite, aber ich bin mir auch sicher, dass sich dahinter die Schriftzeichen einer Sprache verbergen, die ich auch auch nicht lesen könnte. Ich tippe wegen Sony mal ins Blaue, die Beispiele von der Webseite stammen aus Japan...
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

crusader

Hier das Ergebnis:

Programmierte Aufnahmen werden -wie vermutet- ebenfalls in die Schedule-Liste eingetragen, und zwar mit dem gleichen Typ wie Timeshift-Aufnahmen und dem recordingStatus: "notStarted".
Bei der tatsächlichen Aufnahme ändert sich der Status in der Schedule-Liste dann über "preparing" auf "recording".

Der gleiche Status kann auch einfacher über die Abfrage von:
{"id":2,"method":"getRecordingStatus","version":"1.0","params":["1.0"]}
gelesen werden.

Der Unterschied zum Timeshift besteht nur darin, dass bei laufender Timeshift-Wiedergabe die Abfrage von:
{"id":2,"method":"getPlayingContentInfo","version":"1.0","params":["1.0"]}
einen Fehler erzeugt, während bei einer laufenden Aufnahme das aktuelle (und gleichzeitig aufgezeichnete) Programm ausgegeben wird.

Wird die Aufzeichnung im Hintergrund vorgenommen, also bei "ausgeschaltetem" TV, so ergeben alle Anfragen den Fehler:
{"error":[7,"not power-on"],"id":2}

Andy89

Zitat von: vuffiraa am 30 Januar 2016, 13:23:04
Hallo Andy,

das sieht ja doch so aus, als ob sich ein genauerer Blick lohnen könnte. Kannst du vielleicht noch folgende URLs probieren:
curl -v -XPOST http://192.168.178.45/sony/guide -d '{"method":"getMethodTypes","params":[""],"id":1,"version":"1.0"}'
curl -v -XPOST http://192.168.178.45/sony/system -d '{"method":"getMethodTypes","params":[""],"id":2,"version":"1.0"}'
curl -v -XPOST http://192.168.178.45/sony/videoScreen -d '{"method":"getMethodTypes","params":[""],"id":3,"version":"1.0"}'
curl -v -XPOST http://192.168.178.45/sony/audio -d '{"method":"getMethodTypes","params":[""],"id":4,"version":"1.0"}'
curl -v -XPOST http://192.168.178.45/sony/avContent-d '{"method":"getMethodTypes","params":[""],"id":5,"version":"1.0"}'
curl -v -XPOST http://192.168.178.45/sony/recording -d '{"method":"getMethodTypes","params":[""],"id":6,"version":"1.0"}'
curl -v -XPOST http://192.168.178.45/sony/appControl -d '{"method":"getMethodTypes","params":[""],"id":7,"version":"1.0"}'
curl -v -XPOST http://192.168.178.45/sony/browser -d '{"method":"getMethodTypes","params":[""],"id":8,"version":"1.0"}'
curl -v -XPOST http://192.168.178.45/sony/notification -d '{"method":"getMethodTypes","params":[""],"id":9,"version":"1.0"}'
curl -v -XPOST http://192.168.178.45/sony/cec -d '{"method":"getMethodTypes","params":[""],"id":10,"version":"1.0"}'
curl -v -XPOST http://192.168.178.45/sony/accessControl -d '{"method":"getMethodTypes","params":[""],"id":11,"version":"1.0"}'
curl -v -XPOST http://192.168.178.45/sony/encryption -d '{"method":"getMethodTypes","params":[""],"id":12,"version":"1.0"}'


Eventuell muss du noch den Header ergänzen -H "Cookie: auth=<authCookie>".
<authCookie> mit dem Wert aus den Readings ersetzen.

Gruß vuffiraa

Servus,
sorry hatte leider keine Zeit zum testen. Heute bin ich dazu gekommen, weil ich aber nicht alles vollspamen will, hab ich den output mal per PDF angehängt.

Bis auf bei 2, gab es überall Antworten  :)

Beste Grüße
Andy
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD

vuffiraa

#249
Zitat von: Andy89 am 12 Februar 2016, 15:30:25
Servus,
sorry hatte leider keine Zeit zum testen. Heute bin ich dazu gekommen, weil ich aber nicht alles vollspamen will, hab ich den output mal per PDF angehängt.

Bis auf bei 2, gab es überall Antworten  :)

Beste Grüße
Andy
Hallo Andy,

Okay, das sieht wirklich nicht schlecht aus. Mir ist aufgefallen, dass du bei den Aufrufen nicht den Cookie verwendet hast, sondern eine andere Authentication. Hast du mehr Infos dazu? Es sieht nicht nach Basic Authentication aus.

Kannst du mal die Readings aus dem Modul posten oder das Ergebnis von List <device>?

Viele Grüße,
Vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Andy89

#250
Hey,
das hab ich irgendwo auf den Seiten gesehen und damit hat es mit der Authentifizierung funktioniert. Der "Code" der da drin steht, ist aus deinem pairing entstanden, der ist ja vierstellig, und wurde noch konvertiert mit einer "Formel" aber ich weiß nicht mehr welche das war...
Soll ich es nochmal mit deinem Coockie versuchen? Aber ich glaube mich zu erinnern, dass die Authentification die "Basic Authentification" ist.

Hier das List:
Internals:
   CHANGED
   DEF        192.168.177.55
   INTERVAL   45
   NAME       SonyTV
   NR         940
   STATE      on
   TYPE       BRAVIA
   generation
   modelName
   name
   Readings:
     2016-01-29 16:09:25   authCookie      9561
     2016-01-29 16:04:29   authExpires     0
     2016-01-29 16:09:57   channel         -
     2016-01-29 16:09:57   channelId       -
     2016-01-29 16:09:57   currentMedia    -
     2016-01-29 16:09:57   currentTitle    -
     2016-01-29 16:04:29   generation      0
     2016-01-29 18:20:25   input           -
     2016-01-29 16:04:29   modelName       0
     2016-01-30 22:45:08   mute            off
     2016-01-29 16:04:29   name            0
     2016-02-12 11:56:27   power           on
     2016-02-12 11:56:27   presence        present
     2016-01-29 21:05:47   registrationUUID 84fe4d828e1650b01bc1fb6d69e8e735
     2016-01-29 16:03:02   requestFormat   json
     2016-02-12 11:56:27   state           on
     2016-01-29 20:24:18   upnp            on
     2016-02-11 20:13:15   volume          29
   Helper:
     ADDRESS    192.168.177.55
     AVAILABLE  1
     HEADER     X-CERS-DEVICE-ID: fhem_remote
     lastInput
     Port:
       IRCC       80
       SERVICE    80
       UPNP       52323
     Device:
     Supportedapicmds:
       getContentInformation 1
       getStatus  1
       getSystemInformation 1
       upnp       0
Attributes:
   DbLogExclude .*
   devStateIcon on:rc_GREEN:off off:rc_YELLOW:on absent:rc_STOP:on
   icon       it_television
   macaddr    ac:9b:0a:ba:xx:0c
   room       Multimedia
   webCmd     volume:channelUp:channelDown


Beste Grüße
Andy
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD

vuffiraa

Hi Andy,

Wenn es vielleicht nur die andere Authorization ist, könnte ich das Modul umschreiben. Kann du noch mal etwas probieren?
curl -v -XPOST http://192.168.11.33/sony/system --header "Authorization: OjkyY***"
-d '{"method":"getSystemInformation","params":[],"id":4,"version":"1.0"}'


Gruß vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Andy89

Zitat von: vuffiraa am 13 Februar 2016, 11:58:58
Hi Andy,

Wenn es vielleicht nur die andere Authorization ist, könnte ich das Modul umschreiben. Kann du noch mal etwas probieren?
curl -v -XPOST http://192.168.11.33/sony/system --header "Authorization: OjkyY***"
-d '{"method":"getSystemInformation","params":[],"id":4,"version":"1.0"}'


Gruß vuffiraa
Hey,

Das ergibt folgenes

curl -v -XPOST http://192.168.2.77/sony/system --header "Authorization: OjkyY**=" -d '{"method":"getSystemInformation","params":[],"id":4,"version":"1.0"}'
*   Trying 192.168.2.77...
* Connected to 192.168.2.77 (192.168.2.77) port 80 (#0)
> POST /sony/system HTTP/1.1
> Host: 192.168.2.77
> User-Agent: curl/7.43.0
> Accept: */*
> Authorization: OjkyY**=
> Content-Length: 68
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 68 out of 68 bytes
< HTTP/1.1 403 Forbidden
< Content-Type: application/json
< Content-Length: 165
< Connection: keep-alive
<
* Connection #0 to host 192.168.2.77 left intact
{"auth_url":{"default":"http:\/\/192.168.2.77:80\/sony\/webauth\/auth_default","tv":"http:\/\/127.0.0.1:80\/sony\/webauth\/auth_tv"},"error":[403,"Forbidden"],"id":4


und mit dem Coockie kommt das hier:

curl -v -XPOST http://192.168.2.77/sony/system -H "Cookie: auth=9265" -d '{"method":"getSystemInformation","params":[],"id":4,"version":"1.0"}'
*   Trying 192.168.2.77...
* Connected to 192.168.2.77 (192.168.2.77) port 80 (#0)
> POST /sony/system HTTP/1.1
> Host: 192.168.2.77
> User-Agent: curl/7.43.0
> Accept: */*
> Cookie: auth=9265
> Content-Length: 68
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 68 out of 68 bytes
< HTTP/1.1 403 Forbidden
< Content-Type: application/json
< Content-Length: 165
< Connection: keep-alive
<
* Connection #0 to host 192.168.2.77 left intact
{"auth_url":{"default":"http:\/\/192.168.2.77:80\/sony\/webauth\/auth_default","tv":"http:\/\/127.0.0.1:80\/sony\/webauth\/auth_tv"},"error":[403,"Forbidden"],"id":4}


Beste Grüße
Andy
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD

vuffiraa

Hi Andy,

Ich sehe da keinen Unterschied im Response, jedesmal 'Forbidden'. Das authCookie sieht auch nicht richtig aus, das ist sonst eine längere Zeichenkette. Kannst du vielleicht noch mal eine Registrierung über Fhem probieren und dabei im Gerät verbose auf 5 setzen. Die Log-Datei kannst du mir dann auch gerne als PN schicken.
Eine Sache vielleicht noch, wenn es wirklich Basic Authentication wäre, müsste der Header so aussehen: "Authorization: Basic OjkyY**="

Gruß vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Andy89

Zitat von: vuffiraa am 13 Februar 2016, 18:03:07
Hi Andy,

Ich sehe da keinen Unterschied im Response, jedesmal 'Forbidden'. Das authCookie sieht auch nicht richtig aus, das ist sonst eine längere Zeichenkette. Kannst du vielleicht noch mal eine Registrierung über Fhem probieren und dabei im Gerät verbose auf 5 setzen. Die Log-Datei kannst du mir dann auch gerne als PN schicken.
Eine Sache vielleicht noch, wenn es wirklich Basic Authentication wäre, müsste der Header so aussehen: "Authorization: Basic OjkyY**="

Gruß vuffiraa

Hey,
es gibt auch keinen Unterschied im Response. Auch mit  "Authorization: Basic OjkyY**=" kommt die gleiche Response. Die Registrierung hatte ich über Fhem gemacht. aber ich machs mal nochmal und schick es dir dann per PM. Am TV steht auch:"Herzlichen Glückwunsch. Ihr Mobildfunkgerät wurde registriert."

Beste Grüße
Andy

P.s.: ich hab mal den Cookie aus dem Logfile gesetzt und siehe da es geht... der Cookie wird also falsch gespeidert. Bekommst gleich das Logfile
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD