NEWS
lgtv Adapter zur Steuerung von LG WebOS SmartTVs
-
Hallo,
ich verwende Version 1.1.6.
Wenn ich Wert false auf
lgtv.0.states.power
schreibe geht der Fernseher aus, soweit okay.
Schreibe ich nochmal false, geht der Fernseher an. Ist das plausibel oder ein Fehler?Vielen Dank
-
Lt Code dürfte das nicht passieren. Kannst du mal auf debug stellen und das dann hier Posten? Hast du den Haken bei schalte als Fernbedienung gesetzt?
-
bei mir geht der garnicht an
-
@dirkhe Nein. Wenn ich "Schalten Sie den Fernseher als Ferbedienungstaste aus" aktiviere so geht turnOff und power nicht mehr. Was macht die Einstellung?
Das ist das Log.
Erst mache ich aus - ok - "appId":""
dann nochmal aus - State change "states.power" - VALUE: false -> Sending turn OFF command to WebOS TV
dann geht die Kiste an - "appId":"com.webos.app.livetv"lgtv.0 2020-06-07 10:44:22.109 debug (14278) tv/getCurrentChannel: {"channelId":"7_22_6_6_1089_12060_1","dualChannel":{"dualChannelId":null,"dualChannelTypeName":null,"dualChannelTypeId":null,"dualChannelNumber":null},"isScrambled":false lgtv.0 2020-06-07 10:44:21.294 debug (14278) tv/getCurrentChannel: {"channelId":"7_22_6_6_1089_12060_1","dualChannel":{"dualChannelId":null,"dualChannelTypeName":null,"dualChannelTypeId":null,"dualChannelNumber":null},"isScrambled":false lgtv.0 2020-06-07 10:44:20.692 debug (14278) renew connection in one minute for stable subscriptions... lgtv.0 2020-06-07 10:44:20.671 debug (14278) cur app is com.webos.app.livetv lgtv.0 2020-06-07 10:44:20.670 debug (14278) DEBUGGING getForegroundAppInfo: {"subscribed":true,"appId":"com.webos.app.livetv","returnValue":true,"windowId":"","processId":""} lgtv.0 2020-06-07 10:44:20.066 debug (14278) Sending turn OFF command to WebOS TV: 192.168.0.14 lgtv.0 2020-06-07 10:44:20.065 debug (14278) State change "states.power" - VALUE: false lgtv.0 2020-06-07 10:44:15.680 debug (14278) TV is off lgtv.0 2020-06-07 10:44:14.177 debug (14278) DEBUGGING getForegroundAppInfo: {"subscribed":true,"appId":"","returnValue":true,"windowId":"","processId":""} lgtv.0 2020-06-07 10:44:13.988 debug (14278) Sending turn OFF command to WebOS TV: 192.168.0.14 lgtv.0 2020-06-07 10:44:13.988 debug (14278) State change "states.power" - VALUE: false
-
Ich habe jetzt gerade mal in den code geschaut:
case 'states.power': if (!state.val){ adapter.log.debug('Sending turn OFF command to WebOS TV: ' + adapter.config.ip); if (adapter.config.power){ sendCommand('button', {name: 'power'}, (err, val) => { if (!err) adapter.setState('states.power', state.val, true); }); } else { sendCommand('ssap://system/turnOff', {message: state.val}, (err, val) => { if (!err) adapter.setState('states.power', state.val, true); }); } }
Also so wie ich den code verstehe, wird bei angehakter checkbox ein key-command zum TV geschickt, also quasi, als wenn du auf die Fernbedienung clickst. Sonst wird halt expliziet das Ausschaltkommando geschickt
Was mich wundert ist, wie du den state setzt? Der reagiert nämlich nur, wenn du den ack nicht setzt. Und zumindest über die admin konsole bekomme ich das erbeute setzten, wenn der bereits auf false ist, gar nicht hin. Also ich bekomme deine Zeile 7 gar nicht reproduziert. Ich denke, es macht auch kein Sinn, abzufragen ob der TV aus ist, denn vlt. ist aus irgendeinem Grund ein Schiefstand im System, dann hätte man die Möglichkeit, darüber nochmal extra zu schalten.
-
Ich setzte den State entweder per NodeRed oder in Objekte, Checkbox weg und dann auf den Haken.
Wenn ich den Fernseher lange aus habe (> 1 Minute) reagiert er wie ich erwarten würde mit Timeout:
} else { sendCommand('ssap://system/turnOff', {message: state.val}, (err, val) => { adaptetr.log.error('yyy err' + err); if (!err) adapter.setState('states.power', state.val, true); });
lgtv.0 2020-06-07 16:53:31.679 debug (18117) yyy err Error: timeout lgtv.0 2020-06-07 16:53:31.677 debug (18117) ERROR! Response from TV: Error: timeout
Sieht für mich so aus als interpretiert der Ferseher das zweite Kommando falsch.
-
Wieso den Haken weg? Der ist doch schon weg wenn du das erste mal auf false setzt oder nicht?
Wie sieht denn das log aus, wenn du das 1. mal auf false setzt, steht denn dann da "yyy err" ohne fehler?
-
@dirkhe genau, checkbox weg (lassen)
Wenn ich den State das erste mal auf false setze kommt kein Fehler
lgtv.0 2020-06-07 18:43:35.963 debug (20017) TV is off lgtv.0 2020-06-07 18:43:34.462 debug (20017) DEBUGGING getForegroundAppInfo: {"subscribed":true,"appId":"","returnValue":true,"windowId":"","processId":""} lgtv.0 2020-06-07 18:43:34.294 debug (20017) yyy err null lgtv.0 2020-06-07 18:43:34.174 debug (20017) Sending turn OFF command to WebOS TV: 192.168.0.14 Power:false lgtv.0 2020-06-07 18:43:34.172 debug (20017) State change "states.power" - VALUE: false
-
Dann hat er power doch auf false gesetzt, also ist die checkbox doch gar nicht mehr gesetzt. Dann kannst du die über die Objekte doch gar nicht mehr auf false setzen?
-
screen-capture.webm Ich mache mal ein Video, ich hoffe das klappt.
Anyway, ich habe jetzt einen Filter eingebaut der power zurückliest und keine gleichen Werte schreibt. Somit kann ich den Fernseher über verschiedene Bedienstellen (Vis, Fernbedienung, App) synchron halten.
-
Das ist echt interressant, das habe ich eben auch so gemacht, bei mir passiert da nichts im log. Iregndwie komisch...
-
Hi Zusammen,
bin auch fleißig am Testen des Adapters und bislang sehr zufrieden. Leider lassen sich mit meinem Modell keine Sender anwählen, das Thema wurde ja schon ausführlich diskutiert - kann damit aber gut leben.
Woran ich aktuell scheiter: Ich möchte gerne direkt die Amazon Prime Video App starten.
- Sofern der TV bereits an ist und der Adapter verbunden funktioniert der Start der App über Javascript und "LaunchApp" problemlos.
- Sofern der TV jedoch noch aus ist, muss ich diesen zunächst per WOL wecken, auch das klappt soweit einwandfrei. Leider scheitere ich gerade daran, ein Script zu bauen, das nun abwartet bis der Adapter verbunden ist, um DANN die korrekte Amazon Prime Video App zu triggern. Ich habe schon verschiedene Varianten ausprobiert, hier ein Beispiel:
Habt ihr dafür eine schlauere Lösung oder einen "Trick", den ich übersehe?
Danke und Grüße
schmax -
@schmax Entweder du macht es über einen timer, der dann dann den Wert nach einer bestimmten Zeit, die du mal beobachten müsstest oder du subscrbst dich an den online datenpunkt und setzt dann den prime app DP und unsubscribst dich anschliessed.
https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#unsubscribe -
EDIT Besten Dank für die schnelle Antwort! Ich dachte, der innere "Falls"-Block sei eine Art Subscription? Im Code ist das eingerückte "Falls" ja ein "on({id: 'lgtv.0.states.on' ...". Die Änderung wird aber ignoriert, weil das Script den Falls-Block zunächst als nicht erfüllt wertet und dann das Script zu Ende bringt.
Ich habe mir jetzt so beholfen, dass ich einen Timer eingebaut habe, der erst einige Sekunden verzögert prüft und dann einen zyklischen Retry, der die innere "Falls"-Prüfung jede Sekunde wiederholt, bis der TV an ist. Nicht besonders schön, aber es scheint zu funktionieren.
Spannend wäre trotzdem dazuzulernen, wie genau ich das mit der Subscription richtig hätte lösen können. Ich werde aus der Doku an der Stelle nur bedingt schlau - laut Dokumentation ist das ja deckungsgleich mit "On change".
Nochmals: DANKE!
-
Das Problem ist, dass ich aus blocky nicht schlau werde, ist mir zu kompliziert...
Das Problem ist, wenn du dich an ein DP dranhängt, gilt das immer. Aber du willst ja WOL senden und dann einmalig auf das online lauschen, um dann umzuschalten. Daher merkt man sich das Subscribe (on...) und wenn das dann ausgeführt wird, löscht man das lauschen wieder (unsubscribe) -
ich rufe hin und wieder youtube über den adapter auf (dafür gibt es einen datenpunkt). seit einiger zeit funktioniert das nicht mehr- das youtube video wird zwar aufgerufen, aber ich kann es nicht stoppen oder anders fernsteuern. zusätzlich ist das bild sehr klein - es braucht nur 1/6 des bildschirms
wenn ich mit der fernbedienung youtube direkt als app öffne, funktioniert die app
kennt jemand von euch dieses problem auch ?
-
@liv-in-sky sagte in lgtv Adapter zur Steuerung von LG WebOS SmartTVs:
ich rufe hin und wieder youtube über den adapter auf (dafür gibt es einen datenpunkt). seit einiger zeit funktioniert das nicht mehr- das youtube video wird zwar aufgerufen, aber ich kann es nicht stoppen oder anders fernsteuern. zusätzlich ist das bild sehr klein - es braucht nur 1/6 des bildschirms
wenn ich mit der fernbedienung youtube direkt als app öffne, funktioniert die app
kennt jemand von euch dieses problem auch ?
Was steht denn unter "states.currentApp", wenn Du die Youtube App über die Fernbedienung öffnest?
-
-
@liv-in-sky
Aber genau mit dem Befehl wird im Quellcode die Youtube App geöffnet:sendCommand('ssap://system.launcher/launch', {id: "youtube.leanback.v4"}, (err, val) => { if (!err) adapter.setState('states.launch', state.val, true);
Scheint also eher ein Bug im LG WebOS zu sein
-
das wäre doof - den eine anfrage bei lg würde nix bringen, da wir ja eine fremdsoftware (adapter) nutzen
sonst funktioniert die app - gestern gab es ein web-os update - hat nix geändert