FHEM -> Samsung TV mit Tizen

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

Vorheriges Thema - Nächstes Thema

bugster_de

ZitatAlso entweder besser suchen im Netz oder versuchen zu reverse engineeren.
Hast Du Hinweis zu besseren Suchbegriffen?
Samsung TV remote
Samung TV api
Samsung TV json

und verschiedenste Varianten davon liefern entweder Hinweise auf Interfaces für Fernseher vor 2014 und dort eigentlich immer reverse engineered oder Links auf die Samsung Developer Webseite, in der dann auf die Entwicklung der Apps eingegangen wird.

ZitatEin Zugang muss es aber wohl geben da es ja auch Apps gibt mit denen man den TV steuern kann.
Ironie: Echt? Ich dachte das geht per Telephatie oder so. Ironie aus.
Wenn ich das richtig sehe, dann ist die Remote App für Android im Playstore von Samsung selbst. Alle anderen Apps steuern die TV Modelle bis 2014 an.
Verleitet mich zu der Annahme, dass es zwar eine API für Modelle ab 2015 gibt, diese aber nicht offengelegt ist; sprich reverse engineering ist angesagt.
Wie hier im Fred ja schon diskutiert, wurde dabei folgende Möglichkeiten vorgeschlagen:
- aus anderen Programmiersprachen / Anwendungen das heraus zu fischen
- eine App, die es ja auch gibt zu dekompilieren
Es wundert mich aber, dass ich im Netz eigentlich keine Hinweise auf solch eine erfolgreiche Reverse-Engineering Aktion finde. Normalerweise ist doch immer jemand dabei, der seine erfolgreiche Aktion dann auch dokumentiert.

Dritte Alternative ist natürlich das Sniffen des Netzwerkverkehrs via Wireshark. Bei verschlüsseltem Verkehr ist das aber mal mindestens zäh.
Da für das Wochenende aber Regen angesagt ist und meine Frau eh unterwegs, schmeisse ich den Wireshark mal an. Mal sehen was er mir so erzählt.

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

bugster_de


bugster_de

#33
Hi,

ich habe einen UE55KU, Kaufdatum Dez. 2016

- die Phyton Software aus dem Link geht bei mir nicht
- das Kommando zum Anzeigen der JSON Daten beim Verbinden geht nur bedingt. Bei mir liefert er nur eine minimale JSON Info zurück (siehe früherer Eintrag in diesem Thread)
- die offizielle Samsung App kann den TV nicht einschalten. Er muß bereits eingeschaltet sein, damit sie sich verbinden kann. Aber genau das wäre mein Use-Case gewesen ... ("Siri Fernsehabend")

Per Wake-on-LAN kann man den TV starten; somit also mit dem bekannten WOL Modul und etherwake ist der Fernseher startbar. Per Presence Modul weiß man dann ob er läuft und kann z.B. Lampen etc. entsprechend schalten.


Fixel2012

Zitat von: bugster_de am 04 März 2017, 15:40:39
Hi,

ich habe eine UE55KU, Kaufdatum Dez. 2016

- die Phyton Software aus dem Link geht bei mir nicht


In wie fern geht die Software bei dir nicht? Geht sie nicht mit deinem Fernseher oder kriegst du sie nicht zum laufen?

Bei mir ist es letzeres.  ???
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

bugster_de

#35
Bei mir ist es auch letzteres. Führt mich zu der Vermutung, dass es noch ein neues Protokoll gibt.

Erste Erkenntnisse mit Wireshark um den Datenverkehr zwischen der App un dem TV zu belauschen
App and TV:
- App von 59016 nach TV auf 8080
- TV von 8080 an App auf 59016
- das geht ein paar mal so

dann sendet die App von Port 54508 nach Port 8080 am TV

- dann wechselt der Sende Port der App dauernd !
- der TV empfängt auf den Ports 57039, 57040,57041, 57042
- die App sendet immer zuerst ein Paket mit 74 Bytes, dann ein Paket mit 66 Bytes. Kein Muster erkennbar (aber ich bin da auch nicht der Crack)

Fazit für mich: die Analyse dieses Protokolls übersteigt meine Netzwerk-Analyse Kenntnisse bei weitem. Ich stell egerne mein Wireshark File hier bereit, aber ich komme eher nicht weiter.

bugster_de

wenn ich das Modul von Seite 1 aus diesem Fred nutze, dann kommt beim ersten define dieses Moduls die Meldung auf dem Fernseher, das FHEM sich verbinden möchte. Wenn man dies dann am TV zulässt, habe ich im Logfile nur einen Eintrag mit don't match. Dann das define nochmal löschen und nochmal anlegen und ich habe dann eine ganze Menge im Logfile. Sprich der Fernseher antwortet wohl irgendwie.

dominik

Funktioniert bei irgendjemand das samsungctl Tool (https://github.com/Ape/samsungctl)?

Wenn das geht, könnte man ja das per Commandline oder Inline Python aus einem FHEM Modul aufrufen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Fixel2012

Zitat von: dominik am 05 März 2017, 09:03:54
Funktioniert bei irgendjemand das samsungctl Tool (https://github.com/Ape/samsungctl)?

Wenn das geht, könnte man ja das per Commandline oder Inline Python aus einem FHEM Modul aufrufen.
Wie bugster und ich geschrieben haben, hat es bei uns beiden wohl nicht funktioniert.

Bei mir ist es schon daran gescheitert, dass ich keine Befehle innerhalb des Tools auszuführen konnte. Habe immer Fehlermeldungen bekommen mit denen ich Nichts​ anfangen konnte.

Bin da aber nicht der Profi, vielleicht kriegt es wer anderes zum laufen!

Gesendet von meinem ONEPLUS A3003 mit Tapatalk

Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

dominik

Das lag wahrscheinlich daran, dass du Python2 verwendest. Habe gerade eine Änderung durchgeführt, damit es auch mit Python2 läuft. Kann es aber erst später testen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

Diese Änderung ist erforderlich dann klappts auch mit Python2:

https://github.com/Ape/samsungctl/pull/30/commits/f9b246c949324b375bbf80d1af39e56c32a97e36

Wer baut nun das Modul welches die Commandline aufruft? Das sollte nicht so schwer sein :)
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

KölnSolar

dann kann ich mich endlich von der E-Serie trennen ?  ;D ;D ;D
Zwiebel hatte ja das 70_STV geschrieben. Die commands sind doch vermutlich gleich geblieben. Dann würde die dortige Integration doch Sinn machen, oder ? Zwiebel ist auch noch aktiv im Forum.
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

Reinhart

#42
Zitat von: dominik am 05 März 2017, 09:03:54
Funktioniert bei irgendjemand das samsungctl Tool (https://github.com/Ape/samsungctl)?

Wenn das geht, könnte man ja das per Commandline oder Inline Python aus einem FHEM Modul aufrufen.

Hallo,

also bei meinem UE55HU8500 bekomme ich keine Antwort vom TV, weil dieser die Verbindung verweigert. Ich sehe kurz am oberen linken TV Bildschirm eine Fehlermeldung die jedoch sofort verschwindet.

#!/usr/bin/env python3

import samsungctl
import time

config = {
    "name": "samsungctl",
    "description": "PC",
    "id": "068e7781-006e-1000-bbbf-84a4666073a8",
    "host": "10.0.0.3",
    "port": 55000,
    "method": "legacy",
    "timeout": 0,
}

with samsungctl.Remote(config) as remote:
    for i in range(10):
        remote.control("KEY_MENU")
        time.sleep(0.5)

das ist der Python Code

Traceback (most recent call last):
  File "C:/Program Files (x86)/Python36-32/setup.py", line 16, in <module>
    with samsungctl.Remote(config) as remote:
  File "C:/Program Files (x86)/Python36-32\samsungctl\remote.py", line 8, in __init__
    self.remote = RemoteLegacy(config)
  File "C:/Program Files (x86)/Python36-32\samsungctl\remote_legacy.py", line 21, in __init__
    self.connection.connect((config["host"], config["port"]))
ConnectionRefusedError: [WinError 10061] Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte

hier die Python Fehlermeldung

Auf dieser Adresse ( http://10.0.0.3:8001/api/v2/ ) bekomme ich allerdings alle Infos vom TV:
{
  "id": "068e7781-006e-1000-bbbf-84a4666073a8",
  "name": "[TV]Samsung LED55",
  "version": "2.0.24",
  "device": {
    "type": "Samsung SmartTV",
    "duid": "068e7781-006e-1000-bbbf-84a4666073a8",
    "model": "14_GOLFP_UHD",
    "modelName": "UE55HU8500",
    "description": "Samsung TV RCR",
    "networkType": "wired",
    "ssid": "",
    "ip": "10.0.0.3",
    "firmwareVersion": "Unknown",
    "name": "[TV]Samsung LED55",
    "id": "068e7781-006e-1000-bbbf-84a4666073a8",
    "udn": "068e7781-006e-1000-bbbf-84a4666073a8",
    "resolution": "1920x1080",
    "countryCode": "AT",
    "msfVersion": "2.0.24",
    "smartHubAgreement": "true",
    "developerMode": "0",
    "developerIP": "0.0.0.0"
  },
  "type": "Samsung SmartTV",
  "uri": "http://10.0.0.3:8001/api/v2/"
}


TV ist Baujahr 2014 (Modell 2015).

LG
Reinhart




FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

dominik

Probiere es mal mit samsungctl und dem Patch, damit sollte es funktionieren.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

CoolTux

Schön das sich meine 10min Suche bezahlt gemacht hat.
Nun einfach die Logik des Codes nach Perl portieren und dann wird das schon gehen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net