FHEM -> Samsung TV mit Tizen

Begonnen von Florian_GT, 12 September 2016, 00:15:35

Vorheriges Thema - Nächstes Thema

KölnSolar

ZitatWo liegt jetzt mein Fehler??
Tv zu alt. :(
ZitatScheinbar ist dieser Service nicht erreichbar...
und nicht nur der service, sondern der Server.  :'(
Zitatschon X - regapp.pl aus dem Fred hier runtergeladen
Wird wohl nicht helfen. Max. warten, ob der Server wieder gestartet wird.

Raymund hatte vorausschauend diesen Weg getestet und beschrieben. Hast Du Dich GENAU an seine Anleitung gehalten ? Python scheint ja manchmal je nach Version zu zicken....
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Raymund

ZitatHi, ich such jetzt schon seit Stunden nach ner Lösung ...

Ja, es ist soweit: der genannte Server bei AWS ist wohl tatsächlich nicht mehr erreichbar. Aber die Python-Lösung läuft weiterhin wie beschrieben. Gerade sicherheitshalber nochmal getestet.

Grüße
Raymund

fireball

Hi danke für die Info. Leider hab ich es bisher nicht geschafft mein python über 3.4 zu bekommen. Auf Jessie gibt's scheinbar kein höheres Paket und selber aus den Quellen bauen hab ich probiert, läuft bei mir immer in einen Fehler.
leider ist jetzt auch noch der Paketmanager hin.. Mal sehen ob ich das alles wieder hinbekomme.

VG René

maxx2081

Ich habe eine Frage, mit welchen befehl kann man umschalten von HDMI 1 auf 2 oder 3 bzw. 4?
Geht das überhaubt?
Mfg maxx

punker

Zitat von: Raymund am 08 Januar 2019, 11:54:12
Wer hier das FHEM-Modul 70_STV.pm mit seiner H-Serie betreibt, wird die dazu notwendige Schlüsseldatei 'samsung_session_key.txt' vermutlich mit 'regapp.pm' erzeugen (siehe #176). Die Verschlüsselung wird darin mittels eines externen Servers unter der IP 34.210.190.209 erledigt, deren Reverse Lookup zu Amazon Web Services führt. Da die Schlüsseldatei sporadisch immer mal neu erzeugt werden muss (z.B. nach einem Stromausfall, aber auch nicht immer), beschleicht einen die Sorge, dass der bei AWS gehostete Server mal nicht mehr zur Verfügung stehen könnte.

Inzwischen gibt es unter https://github.com/tdudek/samsung-remote-models-2014-and-newer eine Javascript-Lösung, die die Verschlüsselung selbst macht und die ich erfolgreich getestet habe. Es wird allerdings Node.js benötigt.

Markus hat mich aber auch auf eine entsprechende Python-Lösung namens 'SmartCrypto' aufmerksam gemacht: https://github.com/eclair4151/SmartCrypto
Auch diese habe ich erfolgreich getestet und ein für unsere Zwecke geeignetes Script hinzugefügt. Es wird dazu Python3 ab Version 3.5 benötigt, das z.B. in Raspbian Stretch bereits installiert ist (Versionsabfrage mit 'python3 -V'). Weiter ist jetzt PIP notwendig, das mit 'apt-get install python3-pip' installiert wird. Es enthält auch das notwendige 'crypto'. Danach wird mit 'python3 -m pip install websocket-client' noch 'websocket' installiert.

Das von github heruntergeladene ZIP-Archiv mit SmartCrypto wird entpackt. Ich habe den darin enthaltenen Ordner 'PySmartCrypto' gleich unter /opt/fhem platziert. Jetzt wird nur noch das hier angehängte Script 'regapp_smartcrypto.py' dort hineinkopiert und darin die eigene IP des Fernsehers eingetragen (Zeile 12). Das sollte es gewesen sein.

Nach dem Start auf der Console mit 'python3 regapp_smartcrypto.py' erscheint die bekannte 4-stellige PIN auf dem TV, die man in die Console überträgt. Wenn jetzt alles klappt, liegt anschließend die Schlüsseldatei 'samsung_session_key.txt' im Ordner. Durch Auskommentieren der Zeile 16 kann die Schlüsseldatei auch eine Etage höher zu liegen kommen und somit direkt von 70_STV.pm gelesen werden. In Zeile 127 wird noch der User (fhem) und die Gruppe (dialout) der Schlüsseldatei gesetzt. Das kann auskommentiert werden, wenn nicht erwünscht.

Da dieses Script nur die Schlüsseldatei bereitstellt, stellt es keinen Eingriff in 70_STV.pm dar!

@Raymund
ich versuche grad meinen Samsung UE65JU6450 mittels deinem Script in FHEM einzubinden.
Es erscheint auch der PIN auf dem TV, aber wenn ich den in der Putty-Shell eingebe kommt folgendes:Current state: stopped
Pin NOT on TV
Please enter pin from tv: 9580
Got pin: '9580'

AES key: 7c6eb5173603963c30a2d287b0fe9fb1
AES encrypted: f938da8314c53349e94b6cfd596f74c03a8dc79ec6825e3f38ff0fb408263d55c5d6f02aff4cddcc30367c58862a186192abb9551f04545f87c4e489fd2e0417855048ed6d3370c589f232c201f909e9c7a42044116cbda4391fffc145c3fe52e5cfb168b815fd8ffdf048e2d8c156d9eca2523e5b7515fd0498bb168669f72e
AES swapped: 84602d56d8512bf33f071a03020637aa7912a3276a8040b43e0b0e9428788852a764d0720bc1726a2ad0d363667831ef52a4c8c0201f9b2a5f8e161d8d86f5a35fd2f9d70bee15b5ef1b6b906b271fe57b2ea19371a53ca257444283690e8dd0912169f20b9a2c807ecd38e47ded103d33f3c8c79a6bade5e1e638a1c702cd9f
data buffer: 0000000636353433323184602D56D8512BF33F071A03020637AA7912A3276A8040B43E0B0E9428788852A764D0720BC1726A2AD0D363667831EF52A4C8C0201F9B2A5F8E161D8D86F5A35FD2F9D70BEE15B5EF1B6B906B271FE57B2EA19371A53CA257444283690E8DD0912169F20B9A2C807ECD38E47DED103D33F3C8C79A6BADE5E1E638A1C702CD9F
hash: 7e0eda04f8dd1b4b4253d2c37c608397493eb1dd
secondStepResponse: {
  "status": 404,
  "message": "Not Found",
  "code": 404
}
Pin incorrect. Please try again...


woran kanns liegen?
Ist der TV nicht richtig erreichbar - wie ich evtl. aus dem "status": 404 entnehme?
LG

Dieter

The truth is out there!

KölnSolar

Zitatmit welchen befehl kann man umschalten von HDMI 1 auf 2 oder 3 bzw. 4?
Kann ich Dir konkret nicht beantworten. Vermutlich v. d. Serie abhängig.
Im Befehlsumfang sind hdmi(evtl. mit der Nr. als nachfolgender Input?), hdmi1, hdmi2. Musst Du probieren. Ansonsten über 0_macro u. TV-Befehl source mit nachfolgenden rauf,runter,links,rechts.
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Raymund

#681
Zitat von: punker am 04 August 2019, 11:14:05
woran kanns liegen?
Ist der TV nicht richtig erreichbar - wie ich evtl. aus dem "status": 404 entnehme?

@punker
Ich habe das genannte Skript erfolgreich für meine H-Serie getestet. Da Dein TV die PIN liefert, scheint er ja unter der eingestellten IP und Port 8080 grundsätzlich erreichbar zu sein. Ob sich auch das weitere Protokoll so verhält wie bei meiner H-Serie, kann ich Dir nicht sagen bzw. schreiben. Vielleicht können andere User das für Deinen TV-Typ zunächst bestätigen???

eclair4151 hatte ja bereits im Readme zu seiner ersten Skriptversion geschrieben, dass einige Typen nicht kompatibel sind  :(

bennebartsch

Zitat von: KölnSolar am 04 August 2019, 12:10:06
Kann ich Dir konkret nicht beantworten. Vermutlich v. d. Serie abhängig.
Im Befehlsumfang sind hdmi(evtl. mit der Nr. als nachfolgender Input?), hdmi1, hdmi2. Musst Du probieren. Ansonsten über 0_macro u. TV-Befehl source mit nachfolgenden rauf,runter,links,rechts.
Grüße Markus
Das gleiche Problem habe ich auch, früher konnte ich mit HDMI1 und HDMI2 einfach direkt auf die richtige Quelle wechseln. Seit einiger Zeit gibts nur noch HDMI im Modul :/

KölnSolar

Das ist falsch.
hdmi, hdmi1 u. hdmi2. Und unter G_Others gibt es noch HDMI3 u. HDMI4.
Da ich kein hdmi habe, kann ich auch nicht testen. Also testen u. mit verbose=5 loggen und Testbeschreibung u. Logauszug hier einstellen.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Raymund

Zitatworan kanns liegen?
Ist der TV nicht richtig erreichbar - wie ich evtl. aus dem "status": 404 entnehme?

@punker
Eine Idee hätte ich noch: checke mal in Deinem TV unter Menü->Netzwerk->Multimedia-Gerätemanager, ob da etwas eingetragen ist. Ggf. löschen.

punker

@Raymund
So, jetzt funzt die Verbindung - hatte in deinem Script den tvPort = "8001" gesetzt, gebraucht hats aber den Port 8080!
Jetzt muss ich nur noch wegen den Kommandos schauen welche funzen.
Danke für die Hilfe!
LG

Dieter

The truth is out there!

punker

Zu früh gefreut.
Hab den Fernseher ausgeschalten  (mit der FB) und wollte ihne per FHEM set power wieder einschalten aber es kommt nur:
[SamsungAV] HTTP socket-connection to mySamsung not successful. SSL_Error: IO::Socket::IP configuration failed
wie kann ich das denn lösen?
LG

Dieter

The truth is out there!

gloob

Zitat von: punker am 07 August 2019, 16:44:47
Zu früh gefreut.
Hab den Fernseher ausgeschalten  (mit der FB) und wollte ihne per FHEM set power wieder einschalten aber es kommt nur:
[SamsungAV] HTTP socket-connection to mySamsung not successful. SSL_Error: IO::Socket::IP configuration failed
wie kann ich das denn lösen?

Garnicht. Wie soll der TV reagieren, wenn er aus ist. Viele Fernseher schalten das Netzwerk ab und horchen nur auf die Fernbedienung über Infrarot.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

punker

Tja, ich dachte wenn der set Befehl poweron bzw. power vorhanden sit dann geht einschalten.
Aber es geht ja auch sonst kein Befehl.
Hab hier noch ein mit verbose 5 erstelltes Log - vllt. hilfts ja)
2019.08.07 16:28:58 3: [SamsungAV] mySamsung defined with host: 192.168.2.221 port: 8001
2019.08.07 16:38:46 2: [SamsungAV] HTTP socket-connection to mySamsung not successful. SSL_Error: IO::Socket::IP configuration failed
2019.08.07 16:39:30 2: [SamsungAV] HTTP socket-connection to mySamsung not successful. SSL_Error: IO::Socket::IP configuration failed
2019.08.07 16:43:24 2: [SamsungAV] HTTP socket-connection to mySamsung not successful. SSL_Error: IO::Socket::IP configuration failed
2019.08.07 17:17:24 5: [SamsungAV] mySamsung command mute parameter
DEBUG: .../IO/Socket/SSL.pm:2853: new ctx 3170433544
DEBUG: .../IO/Socket/SSL.pm:692: socket not yet connected
DEBUG: .../IO/Socket/SSL.pm:694: socket connected
DEBUG: .../IO/Socket/SSL.pm:717: ssl handshake not started
DEBUG: .../IO/Socket/SSL.pm:753: not using SNI because hostname is unknown
DEBUG: .../IO/Socket/SSL.pm:806: set socket to non-blocking to enforce timeout=2
DEBUG: .../IO/Socket/SSL.pm:819: call Net::SSLeay::connect
DEBUG: .../IO/Socket/SSL.pm:822: done Net::SSLeay::connect -> -1
DEBUG: .../IO/Socket/SSL.pm:832: ssl handshake in progress
DEBUG: .../IO/Socket/SSL.pm:842: waiting for fd to become ready: SSL wants a read first
DEBUG: .../IO/Socket/SSL.pm:862: socket ready, retrying connect
DEBUG: .../IO/Socket/SSL.pm:819: call Net::SSLeay::connect
DEBUG: .../IO/Socket/SSL.pm:822: done Net::SSLeay::connect -> -1
DEBUG: .../IO/Socket/SSL.pm:832: ssl handshake in progress
DEBUG: .../IO/Socket/SSL.pm:842: waiting for fd to become ready: SSL wants a read first
DEBUG: .../IO/Socket/SSL.pm:862: socket ready, retrying connect
DEBUG: .../IO/Socket/SSL.pm:819: call Net::SSLeay::connect
DEBUG: .../IO/Socket/SSL.pm:822: done Net::SSLeay::connect -> 1
DEBUG: .../IO/Socket/SSL.pm:877: ssl handshake done
2019.08.07 17:17:24 4: [SamsungAV] HTTP socket-connection to mySamsung. SSL_Reply:
2019.08.07 17:17:24 4: [SamsungAV] HTTP socket-connection to mySamsung successful.
2019.08.07 17:17:24 5: [SamsungAV] mySamsung send to TV: GET /api/v2/channels/samsung.remote.control?name=RkhFTVJlbW90ZQ== HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: 192.168.2.221:8002
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13


2019.08.07 17:17:24 5: [SamsungAV] mySamsung first websocket response: HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=


2019.08.07 17:17:24 5: [SamsungAV] mySamsung Statusbytes of second websocket response: 817e0101
2019.08.07 17:17:24 5: [SamsungAV] mySamsung data of second websocket response: {"event":"ms.channel.connect","data":{"id":"754dce80-b926-11e9-bbc9-6928c1b227ed","clients":[{"id":"754dce80-b926-11e9-bbc9-6928c1b227ed","connectTime":1565191043944,"attributes":{"name":"RkhFTVJlbW90ZQ=="},"deviceName":"RkhFTVJlbW90ZQ==","isHost":false}]}}
2019.08.07 17:17:24 4: [SamsungAV] mySamsung sending MUTE
2019.08.07 17:17:24 5: [SamsungAV] mySamsung send payload: {"params":{"TypeOfRemote":"SendRemoteKey","Cmd":"Click","Option":"false","DataOfCmd":"KEY_MUTE"},"method":"ms.remote.control"}
2019.08.07 17:18:20 5: [SamsungAV] mySamsung command poweroff parameter
DEBUG: .../IO/Socket/SSL.pm:2853: new ctx 3166527928
DEBUG: .../IO/Socket/SSL.pm:692: socket not yet connected
DEBUG: .../IO/Socket/SSL.pm:694: socket connected
DEBUG: .../IO/Socket/SSL.pm:717: ssl handshake not started
DEBUG: .../IO/Socket/SSL.pm:753: not using SNI because hostname is unknown
DEBUG: .../IO/Socket/SSL.pm:806: set socket to non-blocking to enforce timeout=2
DEBUG: .../IO/Socket/SSL.pm:819: call Net::SSLeay::connect
DEBUG: .../IO/Socket/SSL.pm:822: done Net::SSLeay::connect -> -1
DEBUG: .../IO/Socket/SSL.pm:832: ssl handshake in progress
DEBUG: .../IO/Socket/SSL.pm:842: waiting for fd to become ready: SSL wants a read first
DEBUG: .../IO/Socket/SSL.pm:862: socket ready, retrying connect
DEBUG: .../IO/Socket/SSL.pm:819: call Net::SSLeay::connect
DEBUG: .../IO/Socket/SSL.pm:822: done Net::SSLeay::connect -> -1
DEBUG: .../IO/Socket/SSL.pm:832: ssl handshake in progress
DEBUG: .../IO/Socket/SSL.pm:842: waiting for fd to become ready: SSL wants a read first
DEBUG: .../IO/Socket/SSL.pm:862: socket ready, retrying connect
DEBUG: .../IO/Socket/SSL.pm:819: call Net::SSLeay::connect
DEBUG: .../IO/Socket/SSL.pm:822: done Net::SSLeay::connect -> 1
DEBUG: .../IO/Socket/SSL.pm:877: ssl handshake done
2019.08.07 17:18:20 4: [SamsungAV] HTTP socket-connection to mySamsung. SSL_Reply:
2019.08.07 17:18:20 4: [SamsungAV] HTTP socket-connection to mySamsung successful.
2019.08.07 17:18:20 5: [SamsungAV] mySamsung send to TV: GET /api/v2/channels/samsung.remote.control?name=RkhFTVJlbW90ZQ== HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: 192.168.2.221:8002
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13


2019.08.07 17:18:20 5: [SamsungAV] mySamsung first websocket response: HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=


2019.08.07 17:18:20 5: [SamsungAV] mySamsung Statusbytes of second websocket response: 817e0101
2019.08.07 17:18:20 5: [SamsungAV] mySamsung data of second websocket response: {"event":"ms.channel.connect","data":{"id":"968bc930-b926-11e9-bbc9-6928c1b227ed","clients":[{"id":"968bc930-b926-11e9-bbc9-6928c1b227ed","connectTime":1565191099715,"attributes":{"name":"RkhFTVJlbW90ZQ=="},"deviceName":"RkhFTVJlbW90ZQ==","isHost":false}]}}
2019.08.07 17:18:20 4: [SamsungAV] mySamsung sending POWEROFF
2019.08.07 17:18:20 5: [SamsungAV] mySamsung send payload: {"params":{"TypeOfRemote":"SendRemoteKey","Cmd":"Click","Option":"false","DataOfCmd":"KEY_POWEROFF"},"method":"ms.remote.control"}

Danke schonmal
LG

Dieter

The truth is out there!

Gigafix

Ich habe das Power on bei meinem KS9090 so gelöst:

{system (qx(etherwake -i eth0 5c:49:7d:0a:83:7c))}

Der TV hängt allerdings auch am Lan-Kabel. Kannst Du ja bei Dir mal testen - natürlich mit Deiner MAC-Adresse...

Grüße sendet
Gigafix
VM Synology DS918 | CubieTruck |2x HMLAN | HMUSB | 3x HMWLAN | CCU2 | MAX-Cube | nanoCUL | ZWDongle |