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
2022/1/30現在、v2.2.0が最新バージョンです。
node-red-contrib-lgtvをインストール
Node-REDのパレットの管理から、node-red-contrib-lgtv (node) – Node-REDをインストールします。
2年半以上更新がありませんが、とりあえずいってみましょう。
無事にインストールできました。
LGTV-Controlノードを追加
Controlノードを追加してダブルクリック。”新規にlgtv-configを追加”の鉛筆マークをクリックします。
ここで”Connect”を押します。
実は、WindowsのNode-REDから動かしたときはLGのTVを自動的に見つけて画面に接続を承認するかのメッセージがでたのですが、MacのNode-REDでやってみたら出ませんでした。
なので、LG TVのIPアドレスを入力して再度MacのNode-REDから試してみます。
TVにメッセージが表示されるので”はい”をリモコンで選びます。
Tokenが表示され接続されました。
Node-REDからLG TVの電源をOffにする
では、テストを行います。
Injectノードのmsg.payloadを文字列にして”turnOff”を送ります。
デプロイをすると”接続中”になりました。
これで、Injectノードのボタンをおしてみます。
…. Offになりました。
で、offになると
“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が落ちるようになってしまいました。
このファイルがNode-REDのflowなので、ファイル名を変更してNode-REDを再起動できました。
まとめ
まずは、Node-REDからLG-TVのOffをすることはできました。
サンプルフローが落ちた原因はよくわかりませんが、引き続きしらべていきたいとおもいます。