はじめに
我が家にも有機ELテレビがやってきました。国産メーカのテレビも、有機ELパネルはほとんどがLG製のパネルを利用しているらしく「同じパネルなら安い方がいいんじゃない?」という事でOLED 55C7Pを購入!
このLG製のテレビ、内部はwebOSというOSで動作していてWeb APIが公開されているんです。そこで、今回はLG製のテレビをnode-redから操作してみたいと思います。
やりたいこと
最終的にやりたいのは、以下のようにAmazon Alexaとスマホを使って、テレビのチャンネルやYoutube動画を切り替える事です。
1-1.(子供が)Amazon Alexaに「テレビをプリキュアにして」という
1-2.(大人が)スマホから指定のYoutube動画のボタンを押す
2.テレビのアプリをYoutubeアプリに切り替え
3.プリキュアの動画を再生

ちなみに、テレビをNode-redから操作するためには、テレビがLANに繋がっていることが前提となりますので、有線かWifiでLANに接続しておきましょう。
実現に向けた連載
やりたいことを実現するために、以下のように少しずつに記事を書いていきます(予定)。
1回目:Node-redからテレビの電源を消す ←この記事
2回目:Node-redからテレビのチャンネルを変える
3回目:Node-redからYoutubeアプリを起動して動画を再生する
4回目:スマホからテレビを操作できるようにする
5回目:Alexaから声でテレビを操作できるようにする
付録:Wake-On-LANでテレビの電源をつける
付録:Gravioで子供用プリキュアボタン
1回目:Node-redからテレビの電源を消す
第1回目では、Node-redにlgtvパレットを追加して、テレビの電源を消したり、アプリを切り替えたりする事をできるようにしましす。webOSでは、テレビも一つのアプリとして扱われているので、テレビを見るにはアプリをテレビアプリに切り替えないといけないんです。
node-red-contrib-lgtvのインストール
Node-redには、LG製のテレビを操作するためのパレットnode-red-contrib-lgtvが用意されています。このパレットをインストールしていきます。
①パレットの管理画面の表示
テレビと同一LANに接続されたPCやラズパイにインストールされているNode-redを開き、右上の「三」のアイコンからパレットの管理画面を開きます。Node-redのインストール方法はあちこちにあると思いますので割愛します。

②lgtvノードの検索と追加
パレットの管理画面の左の「パレット」を選択し、「ノードを追加」のタブを選択します。次に、検索欄に「lgtv」と入力して、ノードを検索します。検索結果として出てきたnode-red-contrib-lgtvにある「ノード追加」のボタンをクリックします。

警告画面が出ますが、気にせずに「追加」ボタンを押しましょう。

少し待つ(私の環境では3分ほど)とlgtvのパレットがインストールされ、Node-red画面の左側の一番下に追加されます。

controlノードの追加
テレビの基本的な動作(電源を消したり、音量を上げたい下げたり)を行うにはcontrolノードを利用します。早速利用してみましょう。
①controlノードの追加
左側のパレットからcontrolノードをドラックして追加します。

②controlノードの設定画面の表示
追加したcontrolノードをダブルクリックして設定画面を開きます。

③テレビの電源を入れる
このタイミングで操作される側のテレビの電源を入れておきましょう。
④lgtv-configの設定
設定画面の「鉛筆」のアイコンを追加し、lgtv-configの設定画面を表示させ。テレビのIPアドレスを入力します。ちなみに、テレビのIPアドレスは、テレビの詳細設定画面→ネットワーク→有線ネットワークと選択して行くと確認できます。

⑤接続の確認
設定画面にある「Connect」ボタンを押しましょう。

「Connect」ボタンを押すと、テレビの画面に接続確認の画面が表示されます!
テレビのリモコンで迷わず「はい」を押しましょう。

⑥追加・完了ボタンを押す
テレビへの接続がうまくいったら、Node-redの画面で「追加」ボタンを押しましょう。

⑦続いて、「完了」ボタンを押しましょう。

payloadの設定
controlノードを使って、どんなテレビ操作を行うかはplayloadに記載します。それでは、やってみましょう。
①templateノードの追加
画面左側のパレットの上の方にあるtemplateノードをドラッグして追加します。

②templateノードの設定
追加したtemplateノードをダブルクリックして設定画面を開き、以下のように設定します。
・名前:turnOff ※なんでも良い
・設定先:msg.payload ※デフォルトのまま
・形式:平文
・構文:なし
・テンプレート:turnOff

③完了ボタンの押下
上記を設定したら「完了」ボタンを押しましょう。

ノードの接続
追加したcontrolノードとtemplateノードを接続し、ちゃんと動作するか確認してみましょう。
①injectノードの追加とノードの接続
以下の図のように、injectノードを追加し、injectノード→templateノード→controlノードの順に接続します。

②デプロイ
画面右上の「デプロイ」ボタンを押してデプロイしましょう。これ、ほんとに私よく忘れるんですよ!

③接続の確認
controlノードの下に「接続済」と表示させれいれば、ちゃんとテレビに接続されています。

テスト
さて、ちゃんと動作するか確認しましょう。当然ながらテレビの電源つけておいてくださいね。
①トリガのボタンを押す
injectノードの左に付いているボタンを押しましょう!

②テレビがパッ!!
テレビちゃんと消えましたか?これで、完了です。
おわりに
今回はNode-redからLG製テレビを操作する最も簡単な「電源を消す」についてやってみました。次回は、テレビのチャンネルを変える事をやって見ようと思います。
ちなみに「電源を消す」のは簡単にできますが「電源をつける」のは、少々面倒です。テレビの電源がついてないと、信号を受け取るwebOS側がついてないので当然ですけどねー。電源をつけるのは「Wake On LAN」を使ってできそうなので、暇があったらやってみます。
連載記事
1回目:Node-redからテレビの電源を消す
2回目:Node-redからテレビのチャンネルを変える ←次はこれ
3回目:Node-redからYoutubeアプリを起動して動画を再生する
4回目:スマホからテレビを操作できるようにする
5回目:Alexaから声でテレビを操作できるようにする
付録:Wake-On-LANでテレビの電源をつける
付録:Gravioで子供用プリキュアボタン
関連文書
この記事は以下を参考にさせていただいています。ありがとうございます。
・WebOS TV Standard Web API
・node-red-contrib-lgtv
・npm lgtv2
・GoogleHomeからテレビ(LG製WebOS)をコントロールしてみる
コメント