FHEM - Anwendungen > Multimedia

Zusammenfassende Doku: Samsung TV und FHEM

(1/5) > >>

KölnSolar:
Da sich S. immer wieder neue Ideen einfallen lässt  :o wie sich die AV-Geräte per Netzwerk steuern lassen, habe ich hier mal versucht die Unterschiede der einzelnen Serien(Baujahr), Firmware, Zugriffsmöglichkeiten aus FHEM heraus zu dokumentieren. Neben den unterschiedlichsten Servern in der firmware der TV's gibt es auch Unterschiede bei der Berechtigungssteuerung. In den folgenden Posts findet Ihr relevante Informationen zu den unterschiedlichen Serien.

Modulkonzeption und Historie des Moduls in FHEM:
Im Ursprung wurde von Zwiebel das Modul 70_STV.pm entwickelt, welches bis F-Serie funktionieren sollte. Das Modul ist im Standardumfang von FHEM enthalten.
Für die neue Zugriffsmethode per websocket ab K-Serie hatte Dominik das Modul so erweitert, dass per Python-Skript samsungctl die TV's problemlos ansteuerbar sind. Die größten Probleme schienen die H- u. J-Serie zu bereiten. Diese nutzen neben websocket zusätzlich eine Verschlüsselung. Für den Zugriff hat Raymund ein Python-Skript nach Perl übersetzt, das ich wiederum in das Modul eingebunden habe. Mittlerweile habe ich auf dieser Basis auch das samsungctl übersetzt und in das Modul integriert, so dass keine Installation eines Python-Skripts für den laufenden Betrieb des Moduls mehr notwendig ist.
Schließlich habe ich noch die Möglichkeit der Ausgabe von Medien-Streams für alle Serien über DLNA eingebaut. Das Modul ist nun so konstruiert, dass es weitestgehend die  DevelopmentGuidelinesAV unterstützt.
Die aktuellste Entwicklungsversion des Moduls 70_SamsungAV, in der ALLE features enthalten sind, findet Ihr nun immer hier. Stabile Versionen werden per update verteilt(aktuell 1.0).

Die jeweiligen Unterschiede der einzelnen Serien findet Ihr in den Posts zu Eurer Serie. Dort ist auch das jeweilige serienspezifische define beschrieben. Grundsätzlich sieht das define so aus:

--- Code: ---define MeinFernseher SamsungAV MeineFernseherIP [Port] [FHEMdevicenameDLNAClient]
--- Ende Code ---

Neben dem SamsungAV-Modul gibt es noch das TV-unspezifische remotecontrol-Modul, welches das Anlegen einer grafischen Fernbedienung in FHEM ermöglicht.

Wichtigste Voraussetzung: Zugriffsberechtigungen des TV(siehe jeweilige Serie)

Features des Moduls:
Steuerungsmöglichkeiten(Voraussetzung also eine LAN- oder WLAN-Verbindung u. berechtigter Zugriff) aus FHEM heraus sind
 - senden von einzelnen remote control Befehlen an den  TV(der funktionierende Befehlsumfang unterscheidet sich nach Serie u. firmware)
   Manche TVs benötigen eine Verzögerung zwischen dem Socketaufbau und dem übertragen eines RC-Befehls. Dafür lässt sich das Attribut delayRC
   (default=0) nutzen. Dort eingetragene Werte x führen zu einer Blockierung von x Millisek..
 - Ein-/Ausschaltfunktion
 - Bildschirmnachrichten wie z.B. InfoScreen bei eingehendem Anruf(siehe auch hier)
 - Abspielen von Video, Audio, Foto Konserven, TTS
    (im Sinne einer Hausautomatisierung ereignisgesteuert über notify/DOIF....)
 - Makrofunktion: Mit dem Befehl 0_macro lassen sich mehrere RC-Befehle als Befehlskette senden. Dabei sind in der Eingabezeile die einzelnen RC-Befehle
    durch Komma zu trennen. Jeder Befehl führt zu einer Blockierung von FHEM. Die Dauer der Blockierung/Einzelbefehl sind die Millisek., die im Attribut
    delayMacro vorgegeben sind(default=300000). Also nur mit Bedacht einsetzen,  um z.B. Tastensequenzen als einzelnen FHEM-Aufruf nachzubilden.
     z.B. set TV 0_macro menu,down,down,down,right,down,enter,exit
- Texteingabe: Mit 0_text_line kann man eine Textzeile in FHEM editieren, die dann an den TV geschickt wird. Hilfreich für Anwendungen(Apps), die eine
    Texteingabe(z.B URL) erwarten
     z.B. set TV 0_text_line http://DeineFHEMIP:8083/fhem
- Status ermitteln: Das Modul prüft alle 60 Sek., ob der TV im Netzwerk erreichbar ist. Der state ist dementsprechend on oder absent. Sofern der Status
     absent ist, lassen sich außer POWER/POWERON keine Befehle absetzen. Manche User möchten aber sofort nach dem einschalten des TV einen Befehl
     automatisch absetzen. Dazu lässt sich dann der Befehl "statusRequest" benutzen, um zeitlich unabhängig von der periodischen Prüfung den Status
     zu prüfen und den TV ggfs. in den Status "on" zu versetzen.
     set TV statusRequest

Sonstige FHEM-Unterstützung:
- zur Unterstützung des Moduls remotecontrol ist das Layout-Set SamsungAV_TV im Modul integriert. Dadurch lässt sich in einem remotecontrol-device mit
  set remote-control-device layout SamsungAV_TV
   das layout einer Fernbedienung erzeugen.

Damit dieser Thread übersichtlich bleibt, lasse ich keine Antworten zu. Änderungswünsche/Korrekturen, Erfolgsmeldungen bitte per PN mit Typbezeichnung u. ggfs. firmware-Bezeichnung an mich senden, sofern ich nicht sowieso durch mitlesen in den anderen Threads eine Änderung durchgeführt habe.

Und schließlich noch ein allgemeiner Tipp: Versucht die Kontrolle über firmware-updates zu übernehmen, also automatische firmware-updates (möglichst vor dem ersten Einbinden des TV in das lokale Netzwerk) zu unterbinden !!! Denn man weiß nie, was sich S. mit einer neuen firmware wieder hat einfallen lassen  :'( Einschlägige Meinung der Internet-Gemeinde ist, dass selten Bug-Behebungen oder gar zusätzliche features mit einer neuen Version kommen !!!
Wie man dazu vorgeht, sagt Euch das Internet  ;) Auch hier gibt es je nach Serie, firmware Unterschiede !!!
(Überlegt Euch gut was Ihr tut. Es könnte ja auch sein, dass S. Sicherheitslücken mit einem update geschlossen hat) :-\

Edit:Attached nun auch das "neue" Modul 70_SamsungAV. Die Umbenennung ist notwendig, um das Modul zukünftig offiziell zu machen. Bitte nutzt nur noch das 70_SamsungAV. Die letzte inoffizielle Version des 70_STV lasse ich lediglich für User attached, die unbedingt diese Version nutzen möchten.
Da sich der "type" eines devices nicht ändern lässt geht Ihr am besten wie folgt vor:

--- Code: ---rename TV-devicename old_TV-devicename
--- Ende Code ---
danach legt Ihr ein neues device

--- Code: ---define TV-devicename SamsungAV .....
--- Ende Code ---
mit seinen Attributen(am einfachsten per cut&paste der raw definition u. Änderung des device names von old_TV-devicename nach TV-devicename)  an. So bleiben Abhängigkeiten zu notify.... erhalten.
Schließlich könnt Ihr das alte device löschen. save der config dann nicht vergessen, sofern autosave=0.

Edit2:Seit dem 5.4.19 wird das Modul offiziell per update verteilt. Die attachten Module haben nur noch historischen Wert,

Edit3:debugging bei Berechtigungsproblemen, nicht ankommenden Befehlen ist hier erklärt

KölnSolar:
Da diese TV's schon relativ alt sind hier nur eine Zusammenfassung von Funktionen, die sich je nach Modell unterscheiden:
-  Älteste Modelle(B-Serie ?):  mute, volume, call, sms, date über port 52235  UPNP/SOAP
- Jüngere Modelle(C-/D-Serie): sämtliche remote control commands port über 55000,
  keine Bildschirmnachrichten ?, Port 7676 u. service urn:samsung.com:service:MainTVAgent2:1 nicht verfügbar ?

Definition siehe commandref

Folgende Perl Module werden benutzt und sind ggfs. zu installieren:
sudo apt-get install  libnet-address-ip-local-perl libio-interface-perl libmime-base64-perl(bei port 55000)

Erfolgreicher Test der DLNA-Version am 5.2.18 mit UE55C6700

KölnSolar:
sämtliche remote control commands über port 55000; Definition mit FHEM-Modul SamsungAV und Port 55000.

Folgende Perl Module werden benutzt und sind ggfs. zu installieren:
sudo apt-get install  libnet-address-ip-local-perl libio-interface-perl libmime-base64-perl

Bildschirmnachrichten:
über port 7676  ist UPNP/SOAP (z.B. Browseraufruf mit InfoDisplay f. Anruferinfo) verfügbar. Ebenso ist die Medienausgabe per DLNA möglich.
(nur mit der inoffiziellen Version !)
Zugriffsberechtigung:
Einstellungen findet man unter:
  Menü->Netzwerk->AllShare-Einstellungen->Liste der registrierten Endgeräte->Zulassen|Verbieten|Aus der Liste löschen
Registrierung:
  Bei erstmaligem Zugriff eines Endgeräts erscheint auf dem TV ein pop-up: Neues Netzwerkgerät erkannt......: Zulassen|Verbieten
  Eine Pin-Eingabe ist nicht erforderlich. Eine Einmalige Registrierung berechtigt für den Dauerbetrieb des Endgeräts, wobei (bei mir)
  das Gerät "Perl Samsung Remote" mit der IP 127.0.0.1 angelegt wurde und mit dieser Zugangsberechtigung nun ALLE devices über
  FHEM für die Steuerung zugelassen sind.

Bestätigte Modelle:
ganze Serie  :-\

KölnSolar:
Vermutlich kein Unterschied zur E-Serie.  :-\

KölnSolar:
Einführung der Kommunikation über websockets u. port 8000. Zusätzlich ist der Zugriff verschlüsselt.

Für die Definition des TV in FHEM ist anstatt dem tatsächlichen Port "wse" anzugeben Port 8000 zu verwenden.

Folgende Perl Module werden benutzt und sind ggfs. zu ininstallieren:
sudo apt-get install libcrypt-rijndael-perl libnet-address-ip-local-perl libio-interface-perl libjson-pp-perl

Verfügbare Python-Skripte hat Raymund in Perl übersetzt, so dass keine zusätzlichen Installationen erforderlich sind. Das ganze ist im Teststadium u. noch nicht in ein Modul eingebunden. Das senden sämtlicher remote control commands funktioniert. Tw. gibt es Meldungen, dass die Zugriffsberechtigung nach power off erneuert werden müsse.
Mittlerweile ist das Perl-Skript do_v2.pl von Raymund auch in das inoffizielle 70_STV eingebunden. Das Skript regapp.pl muss nach wie vor einmalig(?) für die Schlüsselerzeugung ausgeführt werden. Vorgehensweise im vorgenannten Post beachten !
Standardmäßig erzeugt das Skript ein File "samsung_session_key.txt". Hat man mehrere TVs der Serie, so muss man das Skript logischerweise für jeden TV ausführen. Das erzeugte File muss dann jeweils in FHEMTVdevicename_session_key.txt umbenannt werden.

Da das regapp.pl zur Erzeugung der Schlüsseldatei auf einen Fremdserver zugreift und mittlerweile auch nicht mehr funktioniert, hat Raymund sich die Mühe gemacht und eine Möglichkeit ohne Fremdserverzugriff  realisiert. Details findet Ihr hier.

Bildschirmnachrichten:
scheinbar noch über port 7676,  vergleichbar der E-Serien-Lösung, möglich.

Bildschirmnachrichten bzw. generelle Medienausgabe über DLNA

Zugriffsberechtigung:
Menü/Netzwerk/Multimedia-Geräteeinstellungen. Dort kann man "SmartDevices" erlauben, verbieten und löschen.
- einmal verboten und der Key ist unbrauchbar. Also neu pairen.
- die IP scheint egal zu sein. Mit den passenden session_key und session_id kann man von jedem Rechner aus zugreifen.

Bestätigte Modelle:
UE-55H6740SV, UExyHU6900, UE40H6400, UE55H6700
Info des Python-Skript-Autors:
Note the the following TV Models are most likely incompatible for one reason or another
H4xxx, H510x, H52xx, H53x3, H5403, H6003, H61x3, H6201, H6203, S9, S9C

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln