ich hab den NU8009 und damit etwas experimentiert und es auch zum Laufen bekommen.
Voraussetzung für das Anschalten aus dem Tiefschlaf (Wake-On-Lan) ist, dass der TV per LAN verbunden ist.
Auf dem Nu8009 habe ich in den Einstellungen noch unter Allgemein-->Netzwerk-->Experteneinstellungen folgendes aktiviert: "IP Fernzugriff" und "Mit dem Mobilgerät einschalten"
Ob damit auch alles mit WLAN (außen Wake-On-LAN natürlich) nach manuellem Anschalten funktioniert, habe ich nicht ausprobiert (würde ich aber vermuten).
So wie ich mir die Ursache, warum der Adapter iobroker.samsung2016 nicht funktioniert, zusammengereimt habe, ist das Problem, dass es aber einer bestimmten Firmware-Version einen Token-Authentifizierung gibt. Diese ist bei den älteren Modellen/Firmware-Versionen und damit auch im iobroker.samsung2016 noch nicht implementiert.
Den Token bekommt man, wenn man z.B. mit wscat (npm install -g wscat) folgenden Befehl an den TV schickt:
wscat -n -c https://TVIP:8002/api/v2/channels/samsung.remote.control?name=aW9Ccm9rZXI=
und dann Zulassen am TV auswählt.
(Die Option -n ist wichtig, da der TV mit einem selbstsigniertem Zertifikat arbeitet. wscat würde ansonsten die Verbindung ablehnen. -n ignoriert das selbstsignierte Zertifikat)
Dann kam bei mir als Antwort so etwas:
< {"data":{"clients":[{"attributes":{"name":"c3ZlbnJlbW90ZQ=="},"connectTime":1550138105298,"deviceName":"c3ZlbnJlbW90ZQ==","id":"e28eb78-6ae-4a16-909c-93f24d2b641c","isHost":false}],"id":"e28eb78-6ae-4a16-909c-93f24d2b641c","token":"16346308"},"event":"ms.channel.connect"}
Der Token ist die: 16346308
Die Zeichenfolge (aW9Ccm9rZXI=) hinter samsung.remote.control?name= ist die Base64-Codierung von "iobroker" (ohne Anführungsstriche). Die ist wichtig, da diese auch von dem Adapter iobroker.samsung2016 benutzt wird und (so wie ich es verstehe) vom TV eindeutig einem "channel" (Kommunikationskanal) und
diesem ein entsprechenden eindeutigen Token zugeordnet wird.
Danach habe den Adapter von @Highpressure installiert (Tab Adapter, Symbol mit der Katze (Installation aus eigener URL) --> Tab Beliebig: https://github.com/Highpressure/iobroker.samsung2016)
Bevor ich eine Instanz dazu angelegt habe, habe ich auf dem iobroker-host die /opt/iobroker/node_modules/iobroker.samsung2016/main.js modifiziert.
Bei mir etwa Zeile 57 stand folgendes:
var ws = new webSocket('http://' + ipAddress + ':8001/api/v2/channels/samsung.remote.control?name=' + app_name_base64, function(error) {
done(new Error(error));
});
und das habe ich hierdurch ersetzt:
var ws = new webSocket('wss://' + ipAddress + ':8002/api/v2/channels/samsung.remote.control?name=' + app_name_base64 + '&token=16346308', {rejectUnauthorized: false}, function(error) {
done(new Error(error));
});
Also geändert/eingefügt habe ich:
- http --> wss
- 8001 --> 8002
- (eingefügt hinter app_name_base64): + '&token=16346308', {rejectUnauthorized: false}
Also Protokoll auf secure websocket (wss) umgestellt, Port auf 8002 geändert und den Token sowie das Ignorieren des selbstsignierten Zertifikates eingefügt.
Dann aus dem Adapter eine Instanz erzeugen und IP und MAC konfigurieren.
Im Objekt (samsung2016.0) kann man dann den Wert von Power auf On setzen (Wert muss sich beim Setzen ändern. Falls es mal nicht klappt durch abc setzen und dann wieder auf on setzen), um den TV einzuschalten (auch aus dem Tiefschlaf).
Bei sendKey kann man dann beim Buttonsymbol beliebige Key-Werte einfügen (KEY_MUTE, KEY_POWER, .. s.: http://www.maartenvisscher.nl/samsung-tv-control/javadoc/nl/maartenvisscher/samsungtvcontrol/Keycode.html, welche davon alle gehen weiß ich nicht ;)).
Wie lange der Token gültig ist, weiß ich nicht. Irgendwelche Samsung-Developer-Webseiten sprachen mal von 30 tagen. Da weiß ich aber nicht, ob sie diese Token meinten.
Ich hoffe das hilft und ihr braucht nicht einige Abende mit rumgoogeln zu verbringen.
Cool wäre noch:
- wenn @Highpressure oder @stefan0875 das (konfigurierbar??) mit in den Code auf github einbauen könnten
- Der Token im Web-Interface der Instanz konfigurierbar wäre (hab ich zwar hingefummelt, aber das ist mehr Ninja-development und mag ich hier nicht beschreiben)
- Ein Token-renewal alle x Tage verfügbar wäre (auch bestimmt nicht schwierig zu bauen, aber ich bekomme schon schräge Blicke, wenn ich mich im Moment meinem Entwicklungs-Fuhrpark nähere)
- ein Port von https://github.com/tavicu/homebridge-samsung-tizen zum iobroker. Das ist auch alles schon in js geschrieben und bietet noch mehr Funktionen wie das Starten von Apps (Netflix, etc). Nichst gegen den iobroker.samsung2016, der ist klasse, aber leider findet sich wohl niemand, der den weiterentwickelt und der Fork von Highpressure kann leider auch nicht eingecheckt werden.
Viel Spaß bei Remote-steuern.