Zusammenfassende Doku: Samsung TV und FHEM

Begonnen von KölnSolar, 17 Januar 2018, 11:20:20

Vorheriges Thema - Nächstes Thema

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:
define MeinFernseher SamsungAV MeineFernseherIP [Port] [FHEMdevicenameDLNAClient]

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:
rename TV-devicename old_TV-devicename
danach legt Ihr ein neues device
define TV-devicename SamsungAV ..... 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
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

KölnSolar

#1
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
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

KölnSolar

#2
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  :-\
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

KölnSolar

Vermutlich kein Unterschied zur E-Serie.  :-\
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

KölnSolar

#4
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
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

KölnSolar

#5
in der Regel wie H-Serie. Machmal wohl auch wie K. Das müsst Ihr selber rausfinden. ???

Bestätigte Modelle: UE48JU7590(THKMDEUC-1452), UE55JU6560, 55JU6450(firmware 1530)
Info des Python-Skript-Autors:
Note the the following TV Models are most likely incompatible for one reason or another
J4xxx, J50xx, J51xx, J52xx, J53xx, UNxxJ6200, J6201, J6203, J620D

Tizen 2.3(nicht aber UJ4300, UJ5300)

Spätere Modelle wie K-Serie ?  :-\

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

KölnSolar

#6
sämtliche remote control commands über port 8001 oder 8002(secure port)und das websocket-Protokoll; keine Verschlüsselung mehr.
Neuere Serien und aktuellere firmware verwenden zusätzlich ein token bei der Berechtigungsprüfung.
(Erkennbar wenn im JSON von http://ip:8001/api/v2/ "TokenAuthSupport\":\"true\", auftaucht)
Edit:Integration in das inoffizielle STV durch Dominik. Manuelle Installation des geänderten Moduls erforderlich. Zusätzlich notwendige Installation des Python-Skripts samsungctl Das samsungctl ist nicht mehr notwendig. Dank Raymunds Vorarbeit für die J-/H-Serie konnte ich die Funktionalität des Skripts nach Perl übersetzen und ins Modul integrieren.

Definition in FHEM aus Kompatibilitätsgründen mit Port 8001: anstatt einem numerischen Port ist der String ws einzugeben.

Modulintern wird der SSL-Port 8002 für die Kommunikation genutzt. Eine Prüfung des SSL-Zertifikats findet aber nicht statt.
Sofern der TV mit der erweiterten Berechtigungsprüfung mit einem token arbeitet, wird dies modulintern berücksichtigt.

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

Bildschirmnachrichten:
bisher keine technische Möglichkeitenüber DLNA im Test oder dem TV-integrierten Webbrowser
Definiert man den TV mit dem optionalen DLNAClient, werden die Nachrichten aus callerURI oder screenURI über den  DLNAClient ausgegeben. Wird der DLNAClient nicht definiert, so werden die URI's über den Webbrowser des TV ausgegeben.

Zugriffsberechtigung:
- bei erstem Zugriff(define in FHEM; sofern TV eingeschaltet) erscheint Popup auf dem TV, welches mit "zulassen" zu bestätigen ist
-  unter Einstellungen -> Allgemein -> Externe Geräteverwaltung ->Geräteverbindungsmanager findet man eine Geräteliste (da kann man die einzelnen zugriffsberechtigten Geräte auch wieder rausschmeissen)  und man kann sogar die "Art" der Zugriffsbenachrichtigung verändern (nur einmal od. jedes Mal). Wir brauchen: nur einmal !

zusätzliche Funktion:
  locate installed apps of TV(only during definition of device or with command statusRequest, if TV is connected) (blocking !!!)
  new commands:
  - 0_App_state: check state of app: running/stopped
  - 0_App_start: start app

Bestätigte Modelle:
ganze Serie ?: UE40K5579, UE55KU6170, UE65ks7090

Tizen 2.4 (nicht aber: UBD-K8500, UBD-KM85C, UBD-KM85)
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

KölnSolar

#7
Vermutlich kein Unterschied zur K-Serie.   :-\

Bestätigte Modelle:
ganze Serie ?:

Tizen 3.0(UMU6100 Tizen 2.4)
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

KölnSolar

#8
Mal sehen, was uns da wieder erwartet. Vorstellung wohl im Februar.

Edit: Die Serie wird mit N bezeichnet bzw. R(2019), T(2020), A(2021) funktionieren auch.

Kein Unterschied zur K-Serie.
Der Zugriff erfolgt nun per SSL verschlüsselt über Port 8002. Das Modul "löst" das selbständig. Es bleibt also bei der Definition mit Port 8001.

Tizen 4.0
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

KölnSolar

#9
Die Serie ist eine Besonderheit. Es ist nicht das Baujahr abzuleiten. Es handelt sich um TVs mit QLED-Technologie.

Für FHEM aber kein Unterschied zur K-Serie.
Der Zugriff erfolgt per SSL verschlüsselt über Port 8002. Das Modul "löst" das selbständig. Es bleibt also bei der Definition mit Port 8001.

Bestätigte Modelle: GQ65Q7FNG(firmware 1153)

Tizen 4.0 ?
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

KölnSolar

#10
Wieder eine Besonderheit seit 2017.  ::) Mehr Infos hier.

Ausstattung:
Es gibt zusätzlich neben dem normalen Fernsehmodus einen Kunstmodus, bei welchem Bilder angezeigt werden. Aufgrund des Stromverbrauchs u. Abo-Zusatzkosten ist die nette Spielerei nicht unbedingt empfehlenswert.

Typenbezeichnung:
UExxL....

FHEM:
wie alle Serien seit 2016

Bestätigte Modelle:
UE49LS03N, UE43LS003

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

KölnSolar

#11
Platzhalter
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

KölnSolar

#12
Platzhalter
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

KölnSolar

#13
Platzhalter
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

KölnSolar

#14
Derzeit befindet sich die Funktionalität noch im erfolgversprechenden Test auf E-, H- u. M-Serie

Die attachte Version des 70_SamsungAV sollte für ALLE Serien die Ausgabe von Bildschirmnachrichten per DLNA ermöglichen.

Je nach persönlichem Geschmack, lässt es sich in 2 Varianten einrichten: ohne oder mit zusätzlichem Server. Letztere hat den Vorteil, dass man sich mit dem nicht uninteressanten Thema eines Digitalen Media Servers auseinandersetzt, der dann weitere Möglichkeiten(siehe nächster Post) bietet.

Für beide Varianten ist es notwendig
-   z.B. mit dem RSS-Modul dynamisch, also quasi "realtime" Bilder zu erzeugen.
     In unserem Fall die Anruferinfo.
das Modul DLNAClient DLNARenderer von hier hier zu installieren. Nicht vergessen im global device das Attribut exclude_from_update
    mit 98_DLNARenderer zu setzen, sonst wird die inoffizielle Version beim nächsten update wieder überschrieben !
(das Modul ist der Vorgänger des offiziellen DLNARenderers, welches derzeit leider nicht für Samsung TV funktioniert)
 
(die Installation zusätzlicher Perlmodule ist notwendig siehe commandref)

  Dieses Modul führt das eigentliche streaming von Mediendateien aus und wird aus dem SamsungAV-Modul lediglich mit dem entsprechenden URI
  aufgerufen.
- Vorbereitung des FHEMWEB-devices:
  Da wir derzeit noch keine Lösung haben, wie wir username/Passwort übergeben können, muss ein FHEMWEB-device gewählt oder ggfs neu
  erstellt werden, welches nicht mit dem allowed-device verknüpft ist. Der Port dieses devices sollte logischerweise nicht geroutet sein(kein
  Zugriff von außen)
  Es ist das zusätzliche Attribut allowedHttpMethods mit GET|POST|HEAD einzurichten. Bedeutung u. Auswirkungen sind in der commandref 
  beschrieben.

Habt Ihr die zuvor beschriebenen Installationen ausgeführt und ein RSS-Bild definiert, sollte an dieser Stelle mit dem DLNARendererDLNAClient-Modul UPNP-Paket generell das Rendering(so nennt man die Ausgabe v. Medien auf dem TV) getestet werden:
Definition:
define MeinRenderer DLNARenderer
attr MeinRenderer envPrefix s
attr MeinRenderer envNamespace <undef>
attr defaultRoom EuerRaum

Den EUERfriendlynamedesSamsungTV findet man im Menü des TV oder durch auslesen der SSDP messages mit einem Netzwerksniffer oder in den Log-Einträgen zum DLNAClient-Modul(verbose 5), welches selbständig nach verfügbaren devices im lokalen Netzwerk sucht.
Das Modul sucht selbständig nach verfügbaren devices im lokalen Netzwerk und sollte in EuremRaum ein device angelegt haben.
Danach ist zwingend ein shutdown/restart erforderlich.[/s]
Weil das DLNARenderer-Modul UPNP-Paket außergewöhnlich und komplex ist kann es in Eurer Installation zu Problemen kommen. Dafür habe ich im übernächsten Post ein paar Details zum Verständnis geschrieben.
Rendering-Test: set DLNARendererdevicenamedesSamsungTV stream http://EureFHEM_IP:EuerFHEM_Port/fhem/rss/EuerRSS.jpg

Erscheint das RSS-Bild auf dem TV, dann habt Ihr alles richtig gemacht und könnt nun den Fernseher definieren:
define MeinFernseher SamsungAV MeineTVIP MeinPort DLNAController[s]Renderer[/s]devicenamedesSamsungTV
(MeinPort siehe Serienbeschreibung)

Ist das device definiert, stehen 2 neue Attribute zur Verfügung: "callerURI" und "screenURI", wobei callerURI für die Nutzung von Anruferinfo gedacht ist, während screen allgemeiner sein soll/kann. Über screen und einen Dummy gebe ich z.B. mein InfoDisplay von FHEM auf dem TV aus. In die URIs wird der jeweilige Pfad zum Bild eingetragen.(also so, wie man es bereits beim Test des DLNAClient DLNARenderer gemacht hattet).

Durch die Definition der jeweiligen URI, wurde dynamisch das Befehlsset des TV-devices erweitert. Für den Aufruf der callerURI steht der neue set-Befehl caller und für screenURI entsprechend screen zur Verfügung.

Nun kann man erneut die Funktion über die neuen set-Befehle mit den ....URI's testen.

Die letzte Lücke in der Kette für die Ausgabe des aktuellen Anrufers schließen entsprechende notify's. Ich habe ein notify, welches auf das ring-event des FB_CALLMONITOR reagiert.
notify ...... set MeinFernseher caller

Das war's.....

...es sei denn, man möchte nicht nur RSS-Bilder ausgeben und einen zusätzlichen Server einrichten.
Wer bereits einen Server wie z.B. Apache installiert hat, sollte problemlos die Dateinamen in die URI'S des SamsungAV-Moduls eingeben bzw. diese auch direkt im DLNARendererDLNAClient-Modul streamen können.

Wer einen richtigen Media-Server einrichten möchte, kann für den Rpi z.B. das recht schlanke miniDLNA  installieren. Dieser hat die Besonderheit, dass er alle Medien mit einem Index versieht und nur das indizierte Medium aufgerufen werden kann, also z.B. 170.jpg. Der Originalname ist nicht verfügbar. Um dieser Besonderheit zu begegnen sind 2 wichtige Dinge zu beachten:
- in der /etc/minidlna.conf ist inotify=no zu setzen. Das verhindert das Neuindizieren bei jeder Änderung/Hinzufügung einer Mediendatei.
- über z.B. den WindowsMediaPlayer muss man sich den Pfad einer Datei über die Eigenschaften besorgen. Die URI, die im SamsungAV-Modul einzugeben ist, sieht dann z.B. so aus: http://MediaServerIP:MediaServerPort/MediaItems/4711.jpg

Möchte man nun das RSS-Bild physisch auf dem Media-Server ablegen, so ist das notify um einen curl-Befehl zu erweitern
notify ...... "curl -o absolutpathofMediaServerLocation/Yourpicture.jpg http://EureFHEM_IP:EuerFHEM_Port/fhem/rss/EuerRSS.jpg";set MeinFernseher caller;

Sofern Ihr nun kein Original-RSS-Bild streamen möchtet, könnt Ihr das im FHEMWEB-device angelegte  zusätzliche Attribut allowedHttpMethods mit GET|POST|HEAD auch wieder löschen oder auf den Standard GET|POST setzen.

Beachtet die beschriebenen Zusammenhänge. Ansonsten kann das zum aufhängen oder gar Absturz von FHEM führen !!!!!

Und bedenkt, dass dies eine Alpha-Version ist, die aufgrund der unterschiedlichen Funktionen der TVs nicht für Euren TV getestet ist !!!


Edit: Zwischenversion entfernt.
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