Node-RED

LG社のスマートTV(65NANO75JPA)をNode-REDからコントロールしてみた

2022年1月にスマートライトは事務所を世田谷区から渋谷区初台に移転しました。

移転を機にLG社の65インチテレビ(65NANO75JPA)を購入。購入した理由はAPIが搭載されているためKNX視覚化ツールやNode-REDでのコントロールができるとと、当初予定していたSonyのBraviaに比べて5万円以上安かったことです。

naka-kazzさんのNode-redでスマートハウス-LG製テレビを操作してみる(1/5) | 育児×家事×IoTという記事にて、Node-REDからLGのTVをコントロールする方法が紹介されていたので、この記事を読みながら試してみます。

LG TVのwebOS APIについてはこちらのサイトがあります。
webOS TV Developer

なお、新しい事務所を動画で紹介していますので、よかったら見てみてください。

Node-REDをupdate

まずはNode-REDをUpdateします。

npm install -g --unsafe-perm node-red
Node RED 2022 01 30 12 11 51

2022/1/30現在、v2.2.0が最新バージョンです。

node-red-contrib-lgtvをインストール

Node-REDのパレットの管理から、node-red-contrib-lgtv (node) – Node-REDをインストールします。

Node RED 2022 01 30 12 14 58

2年半以上更新がありませんが、とりあえずいってみましょう。

Node RED 2022 01 30 12 17 06

無事にインストールできました。

LGTV-Controlノードを追加

Node RED 2022 01 30 12 18 34

Controlノードを追加してダブルクリック。”新規にlgtv-configを追加”の鉛筆マークをクリックします。

Node RED 2022 01 30 12 22 42

ここで”Connect”を押します。

実は、WindowsのNode-REDから動かしたときはLGのTVを自動的に見つけて画面に接続を承認するかのメッセージがでたのですが、MacのNode-REDでやってみたら出ませんでした。

なので、LG TVのIPアドレスを入力して再度MacのNode-REDから試してみます。

IMG 4505 JPG 2022 01 30 12 28 26

TVにメッセージが表示されるので”はい”をリモコンで選びます。

Node RED 2022 01 30 12 29 43

Tokenが表示され接続されました。

Node-REDからLG TVの電源をOffにする

では、テストを行います。

Node RED 2022 01 30 12 38 13

Injectノードのmsg.payloadを文字列にして”turnOff”を送ります。

Node RED 2022 01 30 12 40 41

デプロイをすると”接続中”になりました。

これで、Injectノードのボタンをおしてみます。

…. Offになりました。

で、offになると

Node RED 2022 01 30 12 41 58

“Close”になってしまいます。

LG TV Remote Flowsをつかってみた

Node-RED DashboardからLG-TVをコントロールできるフローが公開されています。

LG TV Remote (flow) – Node-RED

で、こちらをためしたのですが、

30 Jan 12:47:52 - [info] フローを開始します
30 Jan 12:47:52 - [info] フローを開始しました
30 Jan 12:47:52 - [error] [function:app icon] TypeError: Cannot read property 'com.webos.app.hdmi2' of undefined
30 Jan 12:47:52 - [red] Uncaught Exception:
30 Jan 12:47:52 - [error] TypeError: Cannot read property 'indexOf' of undefined
    at Object.78388b06.3b86c4 (/Users/nakachon/.node-red/node_modules/node-red-contrib-lgtv/nodes/lgtv-mute.js:18:59)
    at /Users/nakachon/.node-red/node_modules/node-red-contrib-lgtv/nodes/lgtv-config.js:72:43
    at Array.forEach (<anonymous>)
    at LgtvConfigNode.subscriptionHandler (/Users/nakachon/.node-red/node_modules/node-red-contrib-lgtv/nodes/lgtv-config.js:71:49)
    at Object.b59a15070002 (/Users/nakachon/.node-red/node_modules/node-red-contrib-lgtv/nodes/lgtv-config.js:38:26)
    at WebSocketConnection.</anonymous><anonymous> (/Users/nakachon/.node-red/node_modules/lgtv2/index.js:149:48)
    at WebSocketConnection.emit (node:events:365:28)
    at WebSocketConnection.processFrame (/Users/nakachon/.node-red/node_modules/websocket/lib/WebSocketConnection.js:554:26)
    at /Users/nakachon/.node-red/node_modules/websocket/lib/WebSocketConnection.js:323:40
    at processTicksAndRejections (node:internal/process/task_queues:78:11)

Errorが出てNode-REDが落ちるようになってしまいました。

Zsh 2022 01 30 12 52 58

このファイルがNode-REDのflowなので、ファイル名を変更してNode-REDを再起動できました。

まとめ

まずは、Node-REDからLG-TVのOffをすることはできました。

サンプルフローが落ちた原因はよくわかりませんが、引き続きしらべていきたいとおもいます。

ABOUT ME
中畑 隆拓
スマートライト㈱ 代表取締役。IoTソリューションの開発、スマートホーム&オフィスのコンサルティング、DALI,KNX,EnOceanなどのインテグレーションを行っています。

COMMENT

メールアドレスが公開されることはありません。