STV: Unterschied zwischen den Versionen
Zeile 218: | Zeile 218: | ||
''Basics & Allgemeines'' | ''Basics & Allgemeines'' | ||
* '''MAC''' | * '''MAC''' | ||
: nur bei Bedarf: die IP-Adresse des Rechners auf dem FHEM läuft | : nur bei Bedarf: die IP-Adresse des Rechners auf dem FHEM läuft. Sollte das zu steuernde Gerät nicht reagieren, bitte dieses Attribut setzen. | ||
* '''fork''' | * '''fork''' |
Version vom 2. Dezember 2018, 14:32 Uhr
STV | |
---|---|
Zweck / Funktion | |
Client for Samsung TV | |
Allgemein | |
Typ | Inoffiziell |
Details | |
Dokumentation | siehe Forum |
Support (Forum) | Multimedia |
Modulname | 70_STV.pm |
Ersteller | Zwiebel (Forum /Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Das Modul STV ermöglicht die Steuerung von Samsung Fernsehern und Bluray-Playern.
Voraussetzungen
Historie
Im Ursprung wurde 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 wurde das Modul so erweitert, dass per Python-Skript samsungctl die TV's problemlos ansteuerbar sind. Die größten Probleme scheinen die H- u. J-Serie zu bereiten. Diese nutzen neben websocket zusätzlich eine Verschlüsselung. Für den Zugriff wurde ein Python-Skript nach Perl übersetzt, das wiederum in die nicht offizielle STV eingebunden wurde. Schließlich wurde noch die Möglichkeit der Ausgabe von Medien-Streams für alle Serien über DLNA eingebaut. Die aktuelle inoffizielle Version, in der ALLE features enthalten sind, findet Ihr >>>hier<<< neben der zusammengefassten Doku >>>hier<<<.
Neben den unterschiedlichsten Servern in der Firmware der TV's gibt es auch Unterschiede bei der Berechtigungssteuerung. Nachfolgend findet Ihr relevante Informationen zu den unterschiedlichen Serien.
Steuerungsmöglichkeiten (allgemein)
Steuerungsmöglichkeiten(Voraussetzung also eine LAN- oder WLAN-Verbindung u. berechtigter Zugriff) aus FHEM heraus sind
- senden von remote control Befehlen an den TV
- Bildschirmnachrichten wie z.B. InfoScreen bei eingehendem Anruf
- Abspielen von Video, Audio, Foto Konserven
B/C/D-Series(vor 2012)
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 ?
E-Series(2012)
sämtliche remote control commands über port 55000; Definition mit FHEM-Standard-Modul STV und Port 55000.
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.
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 !)
Bestätigte Modelle:
ganze Serie
F-Series(2013)
Vermutlich kein Unterschied zur E-Serie.
H-Series(2014)
Einführung der Kommunikation über websockets u. port 8000 durch Samsung. Zusätzlich ist der Zugriff verschlüsselt. Im Netz verfügbare Python-Skripte wurden von Raymund nach Perl übersetzt, so dass keine zusätzlichen Installationen für Python erforderlich sind. Für die Zugriffsberechtigung muss aber einmalig das Perl-Skript regapp.pl aus diesem Post (https://forum.fhem.de/index.php/topic,57595.msg748445.html#msg748445) zur Erzeugung des session-key ausgeführt werden.
Für die Definition des TV in FHEM ist anstatt des tatsächlichen Ports "wse" anzugeben.
Notwendige Vorbereitung:
1. Erstellen der samsung_session_key.txt mit Perl-Skript regappl.pl (Pin-Eingabe über FB des TV erforderlich) 2. Bei ERFOLG(lieber mal reingucken ;)) die Datei in das FHEM-Verzeichnis kopieren, wo auch die fhem.cfg liegt 3. Manchen wird noch das Perl-Modul Crypt::Rijndael fehlen. Das installiert man(für Debian): a) sudo apt-get update b) sudo apt-get upgrade c) sudo apt-get install libcrypt-rijndael-perl d) ein reboot schadet an dieser Stelle nie 4. define MeinTV STV MEINE_IP wse
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.
Registrierung: Mittlerweile ist das Perl-Skript do_v2.pl von Raymund auch in das inoffizielle70_STV eingebunden. Das Skript regapp.pl muss nach wie vor einmalig(?) für die Schlüsselerzeugung ausgeführt werden. Bitte Vorgehensweise im vorgenannten Post beachten !
Bildschirmnachrichten: Bildschirmnachrichten bzw. generelle Medienausgabe über DLNA möglich
Bestätigte Modelle: UE-55H6740SV, UExyHU6900, UE40H6400, UE55H6700
Info des Python-Skript-Autors: Note that the following TV Models are most likely incompatible for one reason or another H4xxx, H510x, H52xx, H53x3, H5403, H6003, H61x3, H6201, H6203, S9, S9C
J-Series(2015)
vermutlich wie H-Serie.
Bestätigte Modelle: UE48JU7590(THKMDEUC-1452)
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 ?
K-Series(2016)
Der Port ist durch Samsung auf 8001 geändert. Eine Verschlüsselung gibt es nicht mehr. Dominik hat den Aufruf des im Netz verfügbaren Python-Skripts samsungctl in das STV-Modul integriert. Die Installation des Python-Skripts samsungctl ist zusätzlich erforderlich.
Für die Definition des TV in FHEM ist anstatt des tatsächlichen Ports "ws" anzugeben.
Notwendige Vorbereitung:
1. sudo apt-get update 2. sudo apt-get upgrade 3. pip installieren. wheezy bietet nur eine V. 1.1, von der im Inet abgeraten wird. Deshalb habe ich die v 9.0.1 mit wget https://bootstrap.pypa.io/get-pip.py geladen. 4. sudo python get-pip.py (ohne sudo gab es eine exception meldung) 5. sudo pip install websocket-client 6. sudo pip install samsungctl (das package wird dann automatisch heruntergeladen und installiert) 7. das File /usr/local/lib/python2.7/dist-packages/samsungctl/__main__.py editiert o except FileNotFoundError: in except: ändern o Folgende Zeile löschen directories.append(os.path.join(os.getenv("HOME"), ".config")) 8. Damit das geänderte 70_STV lief, musste ich einerseits "use Blocking;" am Anfang des Moduls hinzufügen und scheinbar ist der /usr/local/bin bei mir nicht bekannt, so dass ich den einfachen Aufruf von samsungctl in /usr/local/bin/samsungctl ändern musste.
Das Senden der üblichen remote control commands funktioniert.
Definition in FHEM: anstatt einem numerischen Port ist der String ws einzugeben
Zugriffsberechtigung:
- Popup mit Bestätigung
- dann unter Einstellungen -> Allgemein -> Geräteverbindungsmanager findet man eine Geräteliste (da kann man die einzelnen zugriffsberechtigten Geräte auch wieder rausschmeissen) und man kann sogar die Zugriffsbenachrichtigung verändern (nur einmal od. jedes Mal).
Bildschirmnachrichten: Bildschirmnachrichten bzw. generelle Medienausgabe über DLNA möglich
Bestätigte Modelle: ganze Serie ?: UE40K5579, UE55KU6170, UE65ks7090
Tizen 2.4 (nicht aber: UBD-K8500, UBD-KM85C, UBD-KM85)
M-Series(2017)
Vermutlich kein Unterschied zur K-Serie. :-\
Bestätigte Modelle: ganze Serie ?
Tizen 3.0(UMU6100 Tizen 2.4)
Q-Series(2018)
Mal sehen, was uns da wieder erwartet. Vorstellung wohl im Februar 2018.
Tizen 4.0
Installation
Erste Schritte
(für Version aus dem FHEM Repository)
Device in FHEM anlegen:
define <name> STV <ip>
Danach sollte das Device bei eingeschaltetem Fernseher oder Bluray-Player in den Status opened gehen.
Ist dies nicht der Fall ist die Modellreihe zu ermitteln. Am Command-Prompt kann mittels nmap ermittelt werden welche Ports geöffnet sind (xxx.xxx.xxx.xxx ist in diesem Beispiel die IP-Adresse des Samsung-Gerätes)
nmap xxx.xxx.xxx.xxx
Starting Nmap 6.47 ( http://nmap.org ) at 2018-02-18 09:22 CET
Nmap scan report for xxx.xxx.xxx.xxx
Host is up (0.0095s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
7676/tcp open imqbrokerd
8080/tcp open http-proxy
8443/tcp open https-alt
anschließend die High Ports scannen
nmap -sT -p50000-65534 xxx.xxx.xxx.xxx
Starting Nmap 6.47 ( http://nmap.org ) at 2018-02-18 09:25 CET
Nmap scan report for xxx.xxx.xxx.xxx
Host is up (0.015s latency).
Not shown: 15532 closed ports
PORT STATE SERVICE
52345/tcp open unknown
55000/tcp open unknown
55001/tcp open unknown
Jetzt gilt es folgende Fälle zu unterscheiden:
- Port 52235 wird ausgewiesen
- define <device> STV <ip>
- ohne Portangabe
Jetzt gilt es folgende Fälle zu unterscheiden:
- Port 55000 wird ausgewiesen
- define <device> STV <ip>
- ohne Portangabe
Bei dem aktuellen Modul aus dem FHEM-Repository kann kein Port mitgegeben werden. Die Definition kann dann nachträglich im angelisteten Device durch Bearbeitung der DEF erfolgen. Die IP-Adresse um den Port ergänzen
xxx.xxx.xxx.xxx 55000
und speichern.
Alternative: Aktuelle Version aus dem Forum
Die im Anhang zu Post #298 vom 21.2.2018 publizierte Fassung ist in der Entwicklung, bietet aber weitergehende Funktionen.
Diese dort gepostete Version des 70_STV sollte für ALLE Serien die Ausgabe von Bildschirmnachrichten per DLNA ermöglichen. Bitte lest den Post, um auf dem laufenden zu bleiben. Wenn die Version fertig ist wird sie hier dokumentiert.
Anwendung
Attribute
Basics & Allgemeines
- MAC
- nur bei Bedarf: die IP-Adresse des Rechners auf dem FHEM läuft. Sollte das zu steuernde Gerät nicht reagieren, bitte dieses Attribut setzen.
- fork
- enable|disable
- setWhenOffline
- execute|ignore Ist der Fehnseher ausgeschaltet hängt ein Set-Befehl, bis das Modul realisiert, dass der Fernseher ausgeschaltet ist. Mit setWhenOffline ignore lässt sich dieses Verhalten verhindern.
nur in aktueller Entwicklerversion
- callerURI
- callerURI ist für die Nutzung von Anruferinfo gedacht.
- screenURI
- Über screenURI und einen Dummy kann z.B. ein InfoDisplay von FHEM auf dem TV ausgeben. In die URIs wird der jeweilige Pfad zum Bild eingetragen(also so, wie man es bereits beim Test des DLNAClient gemacht hatte).
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.
Set
Das Modul kennt derzeit folgende Commands
Basis-Commandset (bei Nutzung von Port 52235)
- set <name> mute {on|off]
- schaltet den Ton ein/aus
- set <name> volume <nummer>
- Lautstärke ändern. <nummer> kann zwischen 0 und 100 liegen
- set <name> call <von_name> <von_number> <an_name> <an_number>
- <von_name> = Name des Anrufers
- <von_number> = Nummer des Anrufers
- <an_name> = Name des Anzurufenden
- <an_number> = Nummer des Anzurufenden
- set <name> sms <von_name> <von_number> <an_name> <an_number> <text>
- <von_name> = Name des Anrufers
- <von_number> = Nummer des Anrufers
- <an_name> = Name des Anzurufenden
- <an_number> = Nummer des Anzurufenden
- <text> = SMS Nachrichtentext
- set <name> date <start_datum> <start_zeit> <an_name> <an_number> <betreff> <ende_datum> <ende_zeit> <ort> <nachrichtentext>
- Termineinladung mit
- <start_datum> = Startdatum
- <start_zeit> = Startzeit
- <an_name> = Name des Einzuladenden
- <an_number> = Nummer des Einzuladenden
- <betreff> = Betreff der Einladung
- <ende_datum> = Enddatum
- <ende_zeit> = Endzeit
- <ort> = Treffpunkt
- <nachrichtentext> = Text der Einladung
Erweitertes Commandset (bei Nutzung von Port 55000)
- set <name> connect
- Mit dem Fernseher/Player verbinden
- set <name> button
- button ist ein Befehl der Fernbedienung aus dieser Liste:
- [ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 3SPEED | 4_3 | 16_9 | AD | ADDDEL | ALT_MHP | ANGLE | ANTENA | ANYNET | ANYVIEW | APP_LIST | ASPECT | AUTO_ARC_ANTENNA_AIR | AUTO_ARC_ANTENNA_CABLE | AUTO_ARC_ANTENNA_SATELLITE | AUTO_ARC_ANYNET_AUTO_START | AUTO_ARC_ANYNET_MODE_OK | AUTO_ARC_AUTOCOLOR_FAIL | AUTO_ARC_AUTOCOLOR_SUCCESS | AUTO_ARC_CAPTION_ENG | AUTO_ARC_CAPTION_KOR | AUTO_ARC_CAPTION_OFF | AUTO_ARC_CAPTION_ON | AUTO_ARC_C_FORCE_AGING | AUTO_ARC_JACK_IDENT | AUTO_ARC_LNA_OFF | AUTO_ARC_LNA_ON | AUTO_ARC_PIP_CH_CHANGE | AUTO_ARC_PIP_DOUBLE | AUTO_ARC_PIP_LARGE | AUTO_ARC_PIP_LEFT_BOTTOM | AUTO_ARC_PIP_LEFT_TOP | AUTO_ARC_PIP_RIGHT_BOTTOM | AUTO_ARC_PIP_RIGHT_TOP | AUTO_ARC_PIP_SMALL | AUTO_ARC_PIP_SOURCE_CHANGE | AUTO_ARC_PIP_WIDE | AUTO_ARC_RESET | AUTO_ARC_USBJACK_INSPECT | AUTO_FORMAT | AUTO_PROGRAM | AV1 | AV2 | AV3 | BACK_MHP | BOOKMARK | CALLER_ID | CAPTION | CATV_MODE | CHDOWN | CHUP | CH_LIST | CLEAR | CLOCK_DISPLAY | COMPONENT1 | COMPONENT2 | CONTENTS | CONVERGENCE | CONVERT_AUDIO_MAINSUB | CUSTOM | CYAN | DEVICE_CONNECT | DISC_MENU | DMA | DNET | DNIe | DNSe | DOOR | DOWN | DSS_MODE | DTV | DTV_LINK | DTV_SIGNAL | DVD_MODE | DVI | DVR | DVR_MENU | DYNAMIC | ENTER | ENTERTAINMENT | ESAVING | EXIT | EXT1 | EXT2 | EXT3 | EXT4 | EXT5 | EXT6 | EXT7 | EXT8 | EXT9 | EXT10 | EXT11 | EXT12 | EXT13 | EXT14 | EXT15 | EXT16 | EXT17 | EXT18 | EXT19 | EXT20 | EXT21 | EXT22 | EXT23 | EXT24 | EXT25 | EXT26 | EXT27 | EXT28 | EXT29 | EXT30 | EXT31 | EXT32 | EXT33 | EXT34 | EXT35 | EXT36 | EXT37 | EXT38 | EXT39 | EXT40 | EXT41 | FACTORY | FAVCH | FF | FF_ | FM_RADIO | GAME | GREEN | GUIDE | HDMI | HDMI1 | HDMI2 | HDMI3 | HDMI4 | HELP | HOME | ID_INPUT | ID_SETUP | INFO | INSTANT_REPLAY | LEFT | LINK | LIVE | MAGIC_BRIGHT | MAGIC_CHANNEL | MDC | MENU | MIC | MORE | MOVIE1 | MS | MTS | MUTE | NINE_SEPERATE | OPEN | PANNEL_CHDOWN | PANNEL_CHUP | PANNEL_ENTER | PANNEL_MENU | PANNEL_POWER | PANNEL_SOURCE | PANNEL_VOLDOW | PANNEL_VOLUP | PANORAMA | PAUSE | PCMODE | PERPECT_FOCUS | PICTURE_SIZE | PIP_CHDOWN | PIP_CHUP | PIP_ONOFF | PIP_SCAN | PIP_SIZE | PIP_SWAP | PLAY | PLUS100 | PMODE | POWER | POWEROFF | POWERON | PRECH | PRINT | PROGRAM | QUICK_REPLAY | REC | RED | REPEAT | RESERVED1 | RETURN | REWIND | REWIND_ | RIGHT | RSS | RSURF | SCALE | SEFFECT | SETUP_CLOCK_TIMER | SLEEP | SOUND_MODE | SOURCE | SRS | STANDARD | STB_MODE | STILL_PICTURE | STOP | SUB_TITLE | SVIDEO1 | SVIDEO2 | SVIDEO3 | TOOLS | TOPMENU | TTX_MIX | TTX_SUBFACE | TURBO | TV | TV_MODE | UP | VCHIP | VCR_MODE | VOLDOWN | VOLUP | WHEEL_LEFT | WHEEL_RIGHT | W_LINK | YELLOW | ZOOM1 | ZOOM2 | ZOOM_IN | ZOOM_MOVE | ZOOM_OUT ]
Get
Derzeit keine Funktionen realisiert.
Readings
- state: Status der Verbindung
Anwendungsbeispiele
folgen noch
Bekannte Probleme / Fehlersuche
Im Foum gibt es zwei Threads
Links
- https://forum.fhem.de/index.php/topic,82890.0.html Zusammenfassende Doku: Samsung TV und FHEM