Autor Thema: Zusammenfassende Doku: Samsung TV und FHEM  (Gelesen 12000 mal)

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
Zusammenfassende Doku: Samsung TV und FHEM
« am: 17 Januar 2018, 11:20:20 »
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 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-devicenamedanach 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,
« Letzte Änderung: 07 April 2019, 09:35:22 von KölnSolar »
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)
Gefällt mir Gefällt mir x 8 Liste anzeigen

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
B/C/D-Series(vor 2012)
« Antwort #1 am: 17 Januar 2018, 11:33:44 »
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
« Letzte Änderung: 06 Februar 2019, 13:57:54 von KölnSolar »
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
E-Series(2012)
« Antwort #2 am: 17 Januar 2018, 11:44:03 »
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  :-\
« Letzte Änderung: 06 Februar 2019, 13:59:44 von KölnSolar »
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)
Gefällt mir Gefällt mir x 1 Liste anzeigen

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
F-Series(2013)
« Antwort #3 am: 17 Januar 2018, 11:46:13 »
Vermutlich kein Unterschied zur E-Serie.  :-\
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
H-Series(2014)
« Antwort #4 am: 17 Januar 2018, 11:47:03 »
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, 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
« Letzte Änderung: 06 Februar 2019, 14:00:15 von KölnSolar »
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)
Gefällt mir Gefällt mir x 1 Liste anzeigen

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
J-Series(2015)
« Antwort #5 am: 17 Januar 2018, 11:47:34 »
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 ?  :-\

« Letzte Änderung: 12 Januar 2019, 12:37:58 von KölnSolar »
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
K-Series(2016)
« Antwort #6 am: 17 Januar 2018, 11:48:08 »
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)
« Letzte Änderung: 06 Februar 2019, 14:01:14 von KölnSolar »
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
M-Series(2017)
« Antwort #7 am: 17 Januar 2018, 11:49:11 »
Vermutlich kein Unterschied zur K-Serie.   :-\

Bestätigte Modelle:
ganze Serie ?:

Tizen 3.0(UMU6100 Tizen 2.4)
« Letzte Änderung: 18 Januar 2018, 18:04:18 von KölnSolar »
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
N-Series(2018)
« Antwort #8 am: 18 Januar 2018, 18:05:56 »
Mal sehen, was uns da wieder erwartet. Vorstellung wohl im Februar.

Edit: Die Serie wird mit N bezeichnet.

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
« Letzte Änderung: 06 Februar 2019, 14:02:25 von KölnSolar »
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)
Gefällt mir Gefällt mir x 1 Liste anzeigen

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
Q-Series(2017/2018)
« Antwort #9 am: 27 Januar 2018, 10:57:14 »
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 ?
« Letzte Änderung: 20 Januar 2019, 11:45:48 von KölnSolar »
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
Samsung TV und FHEM; Anruferinfo als Bildschirmnachricht über DLNA
« Antwort #10 am: 01 Februar 2018, 13:05:19 »
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
  (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 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.
Weil das DLNARenderer-Modul 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 DLNARendererdevicenamedesSamsungTV(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.
« Letzte Änderung: 31 Mai 2019, 19:00:26 von KölnSolar »
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
Samsung TV und FHEM: Allgemeine Medienausgabe
« Antwort #11 am: 10 Januar 2019, 22:25:32 »
Sicherlich ist die im vorherigen Post beschriebene Bildschirmnachrichtenausgabe die für viele wichtigste Form der Medienausgabe auf dem Bildschirm. Letztendlich ist es aber nur eine Sonderform der allgemeinen Medienausgabe per DLNA mit dynamischer Mediengenerierung per RSS-Modul.

Tatsächlich lassen sich mit DLNA alle Medien, ob Video, Audio, Foto, die auf einem Medien-Server gespeichert sind,  auf den TV "pushen". Das eröffnet dann für die Hausautomatisierung unendlich viele Anwendungsmöglichkeiten. Ich zähle nur mal ein paar Ideen als Anregung dazu auf:
 - es klingelt an der Tür --> Kamera nimmt Bild auf --> Bild wird auf dem TV angezeigt
                                   --> Video- oder Audio-Konserve werden abgespielt

 - Einbruchalarm wird ausgelöst --> TV einschalten --> dem Einbrecher wird per Konserve gezeigt, dass sein Einbruch registriert wurde

 - sonstiger Alarm --> Info auf dem Bildschirm mit konkretem Auslöser des Alarms per Video-, Audio-, Foto-Konserve
 - Termin --> Terminerinnerung per per Video-, Audio-, Foto-Konserve
.
.
.
.

Für die praktische Umsetzung in FHEM bedarf es nur der ereignisgesteuerten Nutzung des DLNAClient-Moduls(sobald DLNARenderer für Samsung funktioniert, natürlich dieses offizielle Modul). Die Voraussetzungen wurden im vorherigen Post beschrieben.  ;)

Mit der optionalen Definition stellt das SamsungAV-Modul ein paar Readings mit Informationen zum TV zur Verfügung. Es gibt einen zusätzlichen Befehl sayText, über den eine TTS-Funktion realisiert ist. Ein weiterer Befehl ist volume, welcher das einstellen einer absoluten Lautstärke ermöglicht.
« Letzte Änderung: 06 Februar 2019, 14:07:36 von KölnSolar »
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
DLNARenderer für Samsung TV
« Antwort #12 am: 20 Januar 2019, 11:24:14 »
Was DLNA eigentlich heißt und ist, habt Ihr doch hoffentlich bereits hier gelesen.  ::)
Der DLNARenderer ist also eigentlich ein DMC. Er verknüpft Ausgabegeräte(z.B. Samsung TV) mit Mediendateien(Medienserver), übernimmt die Steuerung dieser Verbindung. Was einfach klingt, ist technisch recht komplex. Deshalb ist das Modul in der Handhabung auch etwas außergewöhnlich für FHEM.

Man definiert als erstes ein Masterdevice. Das ist dann später die Zentrale, wo auch gewünschte oder notwendige Attribute definiert werden. Nach dessen Definition und dem save der .cfg ist zwingend ein shutdown/restart erforderlich. Erst und nur dadurch werden manche Attribute wirksam ! Beim restart wird dann das define nebst Attributen durchlaufen und die Zentrale hat sich konfiguriert. Konfiguriert heißt, dass das Modul 3 weitere Systemdevices automatisch im room hidden angelegt hat. Außerdem werden alle DLNAdevices aufgefordert sich zu melden. Geben Sie eine Rückmeldung(können natürlich nur die, die on sind  ;)), werden sie automatisch im room unsorted oder im room des Attributs defaultRoom angelegt. Die Fähigkeiten der devices werden in der Zentrale gespeichert. Das FHEM device des physischen devices dient der User-Steuerung. Dabei bedient es sich der Informationen der Zentrale.. Auch werden  Veränderungen(z.B. Lautstärkeänderung per Fb) des physikalischen devices in Readings und events umgesetzt.

Wie funktioniert das und welche Rolle spielen die 3 Systemdevices dabei ?
Jedes der Systemdevices lauscht auf einem Port und verarbeitet eingehende Daten entsprechend seines Zwecks:
Das Masterdevice setzt EINMALIG bei dessen Definition einen Search-Request ab, auf den dann alle physischen Geräte, die online sind, auf dem mitgegebenen Port antworten können(und das in der Regel auch tun). Die Antworten werden von Systemdevice Nr. 1 empfangen und wie oben beschrieben verarbeitet. Danach erfolgt NIE wieder ein "search" bis zum nächsten FHEM-Start. Deshalb haben Veränderungen der Attribute .....IP oder env.... auch keine Auswirkung im laufenden Betrieb.

Warum werden später trotzdem neue Geräte erkannt ?
Weil auch jedes physische device bei Ein-,Ausschalten eine Broadcast-message sendet, nach dem Motto: Hallo hier bin ich bzw. ich bin dann mal weg. (Funktioniert natürlich nicht, wenn man, wie ich, hart per Funksteckdose abschaltet  ) Diese Nachrichten werden an Port 1900 "verschickt". Sie empfängt das System-device Nr. 2. Ist das device noch nicht vorhanden, wird es angelegt. Wurde es abgeschaltet, bekommt es den state absent. Nachteilig dabei ist, dass auch nicht DLNA-UPnP-Geräte solche messages auf Port 1900 schicken, z.B. Access Points. Das kann zu Problemen führen, weshalb sich der Ausschluss per ignoredIP empfiehlt.   

Bliebe noch System-device Nr. 3. Hier macht das Modul einen eigenen Port auf, teilt dem physischen device mit, dass es auf diesem Port lauscht, um Mitteilungen über Zustandsveränderungen am device zu erfahren. Das ist dann der subscription-process. Dabei wird auch vereinbart wie lange diese Vereinbarung Gültigkeit hat. Diese muss dann natürlich auch immer wieder erneuert werden, renewal halt. Über diesen Weg bekommen wir dann die Readings-Aktualisierung, events in FHEM.

Nochmal weil wichtig zum Verständnis von Problemen:
- Attribute werden nur beim start von FHEM interpretiert. Bei deren Änderung: save/shutdown/restart erforderlich !
- Es ist ein Universalmodul für alle devices, die den DLNA-Standard unterstützen. Theoretisch.
- Master-, 3 System- und das Userdevice(=physischem device) arbeiten verzahnt zusammen.
- Nicht jedes physische device unterstützt dieselben services und actions
- Die physischen devices haben in der Regel nur einen eingeschränkten und unterschiedlichen Umfang von zulässigen Mediendateiformaten
- Manche devices erfordern Spezialattribute beim Master device(s.o.). Es kann aber nur genau ein Masterdevice konfiguriert werden. Der User kann möglicherweise daher nicht alle seiner Geräte in einer FHEM-Installation nutzen. Wahrscheinlich gibt es daher auch Probleme, wenn andere Module dieselben UPnP-Perlmodule nutzen, auf denen das DLNA_Renderer-Modul aufbaut, z.B. das SONOS-Modul.


Das Beispiel für die Definition für Samsung TV und ein Anwenderbeispiel findet Ihr hier
« Letzte Änderung: 08 April 2019, 17:56:48 von KölnSolar »
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)
Gefällt mir Gefällt mir x 1 Liste anzeigen

Online KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3548
Samsung TV special: power,poweron,poweroff
« Antwort #13 am: 23 Januar 2019, 16:11:31 »
Es gibt immer wieder Verwirrung, mit welchen RC-Befehlen sich der TV aus- oder gar einschalten lässt.

Bei den TVs/firmware älteren Datums wird der Befehl poweroff für das Ausschalten des TV unterstützt. In der Regel hat der Befehl poweron keine Funktion, auch wenn sich das syntaktisch ableiten ließe. :-X

Bei neueren Modellen/firmware muss man den Befehl power zum Abschalten nutzen. Auch hier gibt es in der Regel keinen Einschaltbefehl. Bei wenigen TVs(ich denke, dass das in der Regel nur auf Q-Serie zutrifft) kann man den power-Befehl auch zum einschalten benutzen.

Obwohl also in der Regel kein RC-Befehl das Einschalten unterstützt, lässt sich das über folgende Möglichkeiten lösen:
1. Hartes Aus-/Einschalten über eine Funksteckdose. Der TV startet so, wie er im Ausschaltzustand war, also On und vorheriger Kanal, wenn der TV on war. Standby, wenn er im standby war. Ich hab das 5 Jahre praktiziert, ohne dass der TV das übel genommen hat. Aber wer weiß....
2. über das WOL-Modul. Zumindest bei neueren Modellen ist dies möglich. Bei mir sogar bei einer WLAN-Verbindung(obwohl es nicht zuverlässig funktioniert) Ich habe das device wie folgt definiert
define WOL_TV_device WOL MACdesTV IPdesTV UDPOb die Schnittstellen überhaupt WOL-fähig sind, sollte man außerhalb FHEM testen(z.B. Netzwerkverbindungen im FritzBox-Menü).
3. Falls ein Linux-Gerät(z.B. Raspberry ) via HDMI am TV angeschlossen ist , mittels echo 'on 0' | cec-client -s -d 1einschalten. cec-client ist im Paket libcec enthalten.

Und bevor jemand schreibt, dass bei ihm das Einschalten funktioniert, es gibt noch eine Besonderheit der neueren TVs: Sie lassen sich noch ca. 1 min. nach dem Abschalten mit power wieder Einschalten. Aber eben auch nur für diesen kurzen Zeitraum. :-X


WIP

Dies ist ein Dokuthread. Bitte keine posts !
« Letzte Änderung: 08 April 2019, 15:52:25 von KölnSolar »
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)
Gefällt mir Gefällt mir x 1 Liste anzeigen