NEWS
Samsung TizenOS TV Adapter(MJ>=2016)
-
@dtp
Ich teste das heute abend mal, sitze auch nicht vor der Kiste. -
so, spiele mal wieder mit rum.
Meiner will immer die Bestätigung wenn ich was drücke ..... das war in einer älteren Version schonmal anders....
liegt das am Port ?Ist das richtig den generierten Token aus den Objekten in der Instanz einzutragen ?..... scheint jetzt zu gehen.
gibt es sowas fertig für anynet an und aus ?
Ich brauche das für die Umschaltung Fernsehton / Soundbar
-
hab mir heute mal die Zeit genommen auch mit dem Adapter zu spielen. Dabei ist mir aufgefallen, dass ein zu schnelles senden von Buttons den Adapter zum abstürzen bringt.
host.iobroker 2020-01-10 01:18:48.779 info instance system.adapter.samsungTizen.0 terminated with code 0 (NO_ERROR) host.iobroker 2020-01-10 01:18:48.779 error Caught by controller[0]: at TLSSocket._ultron.on (/opt/iobroker/node_modules/iobroker.samsungTizen/node_modules/ws/lib/WebSocket.js:142:22) host.iobroker 2020-01-10 01:18:48.779 error Caught by controller[0]: at Receiver.add (/opt/iobroker/node_modules/iobroker.samsungTizen/node_modules/ws/lib/Receiver.js:139:10) host.iobroker 2020-01-10 01:18:48.778 error Caught by controller[0]: at Receiver.startLoop (/opt/iobroker/node_modules/iobroker.samsungTizen/node_modules/ws/lib/Receiver.js:165:16) host.iobroker 2020-01-10 01:18:48.778 error Caught by controller[0]: at Receiver.getData (/opt/iobroker/node_modules/iobroker.samsungTizen/node_modules/ws/lib/Receiver.js:330:12) host.iobroker 2020-01-10 01:18:48.778 error Caught by controller[0]: at Receiver.dataMessage (/opt/iobroker/node_modules/iobroker.samsungTizen/node_modules/ws/lib/Receiver.js:389:14) host.iobroker 2020-01-10 01:18:48.778 error Caught by controller[0]: at Receiver._receiver.onmessage (/opt/iobroker/node_modules/iobroker.samsungTizen/node_modules/ws/lib/WebSocket.js:146:54) host.iobroker 2020-01-10 01:18:48.778 error Caught by controller[0]: at WebSocket.emit (events.js:198:13) host.iobroker 2020-01-10 01:18:48.777 error Caught by controller[0]: at WebSocket.incoming (/opt/iobroker/node_modules/iobroker.samsungTizen/main.js:103:13) host.iobroker 2020-01-10 01:18:48.777 error Caught by controller[0]: at /opt/iobroker/node_modules/iobroker.samsungTizen/main.js:169:16 host.iobroker 2020-01-10 01:18:48.777 error Caught by controller[0]: at WebSocket.send (/opt/iobroker/node_modules/iobroker.samsungTizen/node_modules/ws/lib/WebSocket.js:358:18) host.iobroker 2020-01-10 01:18:48.776 error Caught by controller[0]: Error: not opened samsungTizen.0 2020-01-10 01:18:48.254 info (7189) Terminated (NO_ERROR): Without reason samsungTizen.0 2020-01-10 01:18:48.251 info (7189) terminating samsungTizen.0 2020-01-10 01:18:47.830 info (7189) websocket connection closed samsungTizen.0 2020-01-10 01:18:47.828 info (7189) sendKey: KEY_RIGHT successfully sent to tv samsungTizen.0 2020-01-10 01:18:47.741 error (7189) Error: not opened at WebSocket.send (/opt/iobroker/node_modules/iobroker.samsungTizen/node_modules/ws/lib/WebSocket.js:358:18) at /opt/iobroker/node_modules/iobroker.samsungTizen/main.j samsungTizen.0 2020-01-10 01:18:47.741 error (7189) uncaught exception: not opened samsungTizen.0 2020-01-10 01:18:47.647 info (7189) open connection: wss://192.168.0.8:8002/api/v2/channels/samsung.remote.control?name=aW9Ccm9rZXI=&token=xxxxxxxx samsungTizen.0 2020-01-10 01:18:47.522 info (7189) open connection: wss://192.168.0.8:8002/api/v2/channels/samsung.remote.control?name=aW9Ccm9rZXI=&token=xxxxxxxx samsungTizen.0 2020-01-10 01:18:24.409 info (7189) samsungTizen.0 release 0.0.8 started with config : {"protocol":"wss","ipAddress":"192.168.0.8","port":"8002","token":"xxxxxxxx","macAddress":"xx:xx:xx:xx:xx:xx","cmdDelay":"300","pollingPort":"9110" samsungTizen.0 2020-01-10 01:18:24.325 info (7189) starting. Version 0.0.8 in /opt/iobroker/node_modules/iobroker.samsungTizen, node: v10.18.0
Laut Logs versucht er dann zweimal eine Verbindung aufzubauen. Wär es nicht einfacher den websocket einmal am Anfang zu verbinden und die Verbindung einfach offen zu lassen?
Ansonsten Top Adapter! Danke dafür! Hab mich schon gefragt wann endlich einer kommt
-
@dahuby said in Samsung TizenOS TV Adapter(MJ>=2016):
Ja ich weiß wie das realisiert wurde und hab es absichtlich so nicht gemacht.
Es wird vor dem senden auf den PowerStatus geschaut(könnten wir auch) und dann erst der Key gesendet.
Ich hab es so nicht gebaut da die PollingPorts nicht 100% den Status des TVs sagen, sie sind auch bei Standby kurz zwischen durch erreichbar und manchmal gibt es eine "Nachlaufzeit" nach dem Ausschalten.
Wenn dann der Status nicht passt würde einfach nicht der Key gesendet werden, du kannst dir aber ein kleines Skript oder Blockly Skript schreiben, dass bei KEY_POWER + weitere KEYs und powerOn = true nicht den KEY_POWER sendet.
Leider funktionieren die KEYs POWERON und POWEROFF auch bei mir nicht, so hätte man das Problem auch lösen können.Ich greife das hier nochmal auf, da ich bzw. eher meine Freundin öfter mal das Problem hat, den on/off Befehl zweimal kurz nacheinander per Alexa zu senden.
Besteht die Möglichkeit, den Polling-Befehl irgendwie per Blockly auszulösen? Also zB 1 Sekunden nach senden von KEY_POWER ein Polling durchzuführen, ob TV an oder aus ist?
Klar kann man den Zustand auch wie beschrieben vorher abfragen. Problem ist, dass ich zB 60 Sek. Pollingintervall eingestellt habe. Somit hab ich halt immer einen Zeitversatz im Zustand. Selbst bei 30 oder auch 10 Sek. wäre der Zeitversatz zu groß .. und ich denke alles unter 10 Sek. lastet evtl. das System zu stark aus?![EDIT] Noch ne Frage .. wäre es irgendwie möglich, für den Einschaltbefehel sofort die WakeOnLan Funktion zu nutzen? Bei mir ist es leider so, dass 95% der Einschaltbefehle erst in nem "unreach" enden und dann erst WOL ausgeführt wird.
Danke & Gruß
-
@dahuby sagte in Samsung TizenOS TV Adapter(MJ>=2016):
Ich hab es so nicht gebaut da die PollingPorts nicht 100% den Status des TVs sagen, sie sind auch bei Standby kurz zwischen durch erreichbar und manchmal gibt es eine "Nachlaufzeit" nach dem Ausschalten.
Wenn dann der Status nicht passt würde einfach nicht der Key gesendet werden, du kannst dir aber ein kleines Skript oder Blockly Skript schreiben, dass bei KEY_POWER + weitere KEYs und powerOn = true nicht den KEY_POWER sendet.Ich frage mich gerade, wie ich das am sinnvollsten umsetze. Gut, ein Skript zu schreiben, dass vor dem Absetzen des KEY_POWER-Befehls noch den powerOn-Status abfragt, ist jetzt kein Ding, aber ich müsste dieses Skript dann bei jedem Schaltbefehl, außer bei der alleinigen Aktivierung von KEY_POWER aufrufen.
Sprich, das Skript müsste auf sämtliche Befehle unter apps, command und control reagieren und den Power-Status prüfen, außer, wenn ich den KEY_POWER-Befehl alleine sende. Wäre es da nicht evtl. doch einfacher, wenn du das mit einem entsprechenden power-Befehl direkt im Adapter abfragbar machst? Vielleicht auch in Verbindung mit einem sofortigen, einmaligen Abruf des Einschaltzustands? Den power-Befehl, kann man dann mit true oder false bzw. 1 oder 0 in eine Befehlsfolge unter "command" (ich würde das übrigens in der Mehrzahl, also mit "s" schreiben ) einfügen.
Gruß,
Thorsten
-
Hallo,
Ich hab eine neue Version veröffentlicht und eure Ideen eingebaut, neu ist:- KEY_POWERON, KEY_POWEROFF ( auch in sendCmd ) prüft bei auslösen den Status des TVs und sendet dann nur falls der Status != ist einen KEY_POWER.
- Websocket Verbindung wird jetzt nicht nach jedem KEY geschlossen.
Bitte testet den neuen Adapter und gebt mir wieder Feedback.
-
@skokarl sagte in Samsung TizenOS TV Adapter(MJ>=2016):
so, spiele mal wieder mit rum.
Meiner will immer die Bestätigung wenn ich was drücke ..... das war in einer älteren Version schonmal anders....
liegt das am Port ?Ist das richtig den generierten Token aus den Objekten in der Instanz einzutragen ?..... scheint jetzt zu gehen.
gibt es sowas fertig für anynet an und aus ?
Ich brauche das für die Umschaltung Fernsehton / Soundbar
es gibt den KEY_ANYNET wenn der bei dir nicht funktioniert kannst du mit sendCmd und dann z.B.: KEY_MENU,KEY_DOWN,KEY_ENTER,... zu den ANYNET Einstellungen navigieren.
-
Cool.
Nur, wenn ich den Adapter einfach so installiere, ohne den alten zu löschen, erhalte ich das hier:
Wenn ich den alten lösche, dürften all meine angelegten commands weg sein, oder? Bei 60 commands eine ziemliche Plackerei.Kann es sein, dass der Adapter wieder samsung_tizen statt samsungTizen heißt?
-
@dtp ja richtig, umbenannt hab ich ihn auch wieder.
Jetzt aber funktionierend, musste leider sein da npm Pakete leider keine Großbuchstaben beinhalten dürfen. -
Alles klar. Dann muss ich da wohl durch.
-
@dtp sry leider aber ab jetzt sollte es mit Updates funktionieren.
-
Passt schon. Aber ich glaube, du musst da noch ein paar kleine Anpassungen vornehmen:
Der Adapter ließ sich aber mit samsung_tizen statt samsungTizen installieren.
-
... also bei mir funktioniert die Installation mit https://github.com/dahuby/iobroker.samsungTizen/tarball/master
Aber ich habe in der Ansicht "Installierte Adapter" diese Anzeige:
Habe ich das richtig verstanden: Ab der Version 0.0.10 ist zum Update das Deinstallieren des Adapters nicht mehr notwendig ?
-
Du musst die 0.0.8 erst deinstallieren, bevor du die 0.0.10 installierst. Ansonsten kommt es zu den zwei unterschiedlichen Versionen. Ich würde also am besten noch mal beide Versionen deinstallieren und dann die 0.0.10 installieren. Dann kommt es aber zu dem bekannten Installationsfehler, wenn du das alte Verzeichnis samsungTizen als Quelle verwendest. Daher hier einfach samsungTizen durch samsung_tizen ersetzen.
-
@dtp
... also ich habe alle beide Vers. deinstalliert, aber die Neuinstallation mit dem Ersatz "samsung_tizen" hat nicht funktioniert.Dein Tip mit der Deinstallation weiter oben brachte dieses Ergebnis:
Also jetzt wäre ich soweit wieder 0.0.8 zu installieren ...
EDIT:
Aus einem Bauchgefühl heraus habe ich nochmals "samsung_tizen" ausgeführt = Fehlermeldung wie oben, anschließend "samsungTizen", auch mit Fehler.
Ergebnis: Es wurde trotz Fehlermeldung 0.0.10. installiert und ich konnte eine funktionsfähige Instanz anlegen.
Das soll einer verstehen ... -
@RaspiUser sagte in Samsung TizenOS TV Adapter(MJ>=2016):
Ergebnis: Es wurde trotz Fehlermeldung 0.0.10. installiert und ich konnte eine funktionsfähige Instanz anlegen.
Das soll einer verstehen ...Ja, das war bei mir auch so. Trotz Fehlermeldung wurde die 0.0.10 installiert und ich konnte die Instanz anlegen. Da müsste @dahuby vielleicht noch mal ran.
@dahuby Was das Ein- und Ausschalten angeht, so funktioniert das zwar im Prinzip mit "KEY_POWERON" und "KEY_POWEROFF", doch leider stimmt der Power-Status nicht immer. Hab das Polling auf 20 Sekunden gesetzt. Manchmal wird ein true angezeigt, obwohl der TV ausgeschaltet ist. Und dann schaltet er sich natürlich über "KEY_POWERON" nicht ein. Hab es mit allen drei Ports ausprobiert. Könnte aber dann wohl ein WLAN-Problem sein, oder (unser Gerät ist nur über WLAN erreichbar).
-
@dahuby Was das Ein- und Ausschalten angeht, so funktioniert das zwar im Prinzip mit "KEY_POWERON" und "KEY_POWEROFF", doch leider stimmt der Power-Status nicht immer. Hab das Polling auf 20 Sekunden gesetzt. Manchmal wird ein true angezeigt, obwohl der TV ausgeschaltet ist. Und dann schaltet er sich natürlich über "KEY_POWERON" nicht ein. Hab es mit allen drei Ports ausprobiert. Könnte aber dann wohl ein WLAN-Problem sein, oder (unser Gerät ist nur über WLAN erreichbar).
Da kann ich leider nichts machen wenn der TV nicht erreichbar ist. Bei POWERON OFF wird jetzt sofort der gleiche request wie beim polling ausgeführt, wenn da der Port nicht erreichbar ist lässt er sich auch nicht schalten. Ich habe auch gemerkt, dass paar Minuten nach ausschalten der Port manchmal wieder kurz erreichbar ist.
-
Mir ist schon letztens und auch heute wieder bei der Neuinstallation aufgefallen, dass die Datenpunkte "leer" sind, also ihnen wurde weder true noch false zugewiesen. Kann man diese mit "Inhalt" anlegen lassen bei einer neuen Installation? Ich habe nämlich mit Node-Red bspw. den Fehler, dass es die Datenpunkte angeblich nicht gibt, sobald ich ihnen aber einen Wert zugewiesen habe geht alles wunderbar. Ist nämlich doof immer alle Datenpunkte anklicken zu müssen, damit die dann ein Wert haben.
Das ändern der websocket-Verbindung funktioniert übrigens tadellos, kein abstürzen des Adapters mehr wenn man schnell mehrere Befehle sendet, danke -
Bei mir funktioniert der Adapter für das was ich brauche Super.
Jetzt habe ich eine Frage mit dem Adapter Samsung 2016 konnte ich den TV auch nach längerer Standzeit einschalten.
Jetzt nur noch wenn der TV im Standby ist nicht im Tiefschlaf. Gibt es eine Möglichkeit WOL zu benutzen?
Fernseher ist per Lan angeschlossen und hat eine Feste IP.
Danke im Vorraus. -
Ich hätte auch gerne eine Einschaltfunktion mit WoL für das wecken aus dem Deep Standby.