Node-redでスマートハウス-LG製テレビを操作してみる(2/5)

スマートホーム
スポンサーリンク

はじめに

我が家にも有機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で子供用プリキュアボタン

2回目:Node-redからテレビのチャンネルを変える

第1回目では、Node-redにnode-red-contrib-lgtvをインストールし、テレビの電源を消す事をやりました。第2回目では、テレビのチャンネルを変えることをやってみたいと思います。

channelIDの取得設定

Node-redでテレビのチャンネルを変更するためには、webOSの内部で管理されているchannelIDというものを指定して、チャンネルを変える必要があります。そこで、まずはchannelIDを調査する必要があります。

①requestノードの追加

channelIDのリストを取得するために、lgtvのrequestノードをパレットからドラックして追加します。

②requestノードの設定

追加したrequestノードをダブルクリックして設定画面を開き、TV欄に第1回で設定したTVのIPアドレスのものを選択します。最後に「完了」ボタンを押しましょう。

③templateノードの追加1

次にtemplateノードをパレットからドラッグして追加します。

④templateノードの設定1

追加したtemplateノードをダブルクリックして設定画面を開き、以下のように設定して「完了」ボタンを押します。
 ・名前:チェンネルリスト ※なんでもよい
 ・設定先:topic
 ・形式:平文
 ・構文:なし
 ・テンプレート:ssap://tv/getChannelList

⑤templateノードの追加2

もう一つtemplateノードをパレットからドラッグして追加します。

⑥templateノードの設定2

追加したtemplateノードをダブルクリックして設定画面を開き、以下のように設定して「完了」ボタンを押します。
 ・名前:戻り値受け取り ※なんでもよい
 ・設定先:payload
 ・形式:平文
 ・構文:なし
 ・テンプレート:{}

⑦Debugノードの追加

requestノードで取得したchannelIDのリストを確認するために、Debugノードをパレットからドラッグして追加します。

⑧injectノードの追加とノードの接続

最後にinjectノードを追加し、injectノード→チャンネルリストノード→戻り値受け取りノード→requestノード→Debugノードの順に接続します。

⑨テレビの電源をつける

テレビの電源をこのタイミングでつけておきましょう。

⑩ノードのデプロイ

右上の「デプロイ」ボタンを押して、追加したノードをデプロイしましょう。

デプロイが完了しテレビと接続されると、requestノードの下に「接続済」と表示されます。

channelIDの取得

上で設定したrequestノードを使って、webOS内部で管理しているchannelIDを取得しましょう。

①トリガの実行

injectノードの左側のボタンを押して、ノードを実行しましょう。

②結果の確認

Node-red画面の右上にあるデバック(虫のアイコン)ボタンを押して、結果を確認します。なお、右側の部分を広げると見やすくなります。

③channelIDの確認

デバック画面で「▼」を押して、詳細を確認していきます。最上位のObject内にchannelListという変数があるので、これを見つけてください。

④channelIDの確認2

channelListの中にchannelIDの情報が入っているので探します。channalNameという箇所に普段見慣れているチャンネルの名前が入っているので、この情報を元にChannelIDの情報を探します。

【ご参考】筆者の場合、地デジのchannelIDは以下でした。

名前       channelID     
NHK総合1・東京1_19_11_65535_32736_1024_32736
NHKEテレ1東京1_26_21_65535_32737_1032_32737
tvk1     1_17_31_65535_32375_24632_32375
日テレ1     1_25_41_65535_32738_1040_32738
テレビ朝日    1_24_51_65535_32741_1064_32741
TBS1     1_22_61_65535_32739_1048_32739
テレビ東京1   1_23_71_65535_32742_1072_32742
フジテレビ    1_21_81_65535_32740_1056_32740

チャンネル変更設定

それでは、調査したchannelIDを使って、テレビのチャンネルを変更するノードを作成していきます。

①channelノードの追加

lgtvのパレットから、channelノードをドラッグして追加します。

②channelノードの設定

追加したchannelノードをダブルクリックして設定画面を開き、TV欄に第1回目で設定したテレビのIPアドレスのものを選択します。最後に「完了」ボタンを押します。

③templateノードの追加

パレットからtemplateノードをドラッグして追加します。

④templateノードの設定

追加したtemplateノードをダブルクリックして設定画面を開き、以下のように設定して「完了」ボタンを押します。
 ・名前:NHK総合1・東京 ※チャンネル名:なんでもよい
 ・設定先:payload
 ・形式:平文
 ・構文:なし
 ・テンプレート:1_19_11_65535_32736_1024_32736 ※上で調べたchannelID

⑤injectノードの追加とノードの接続

最後にinjectノードを追加し、injectノード→チャンネルノード→channelノードの順に接続します。

⑥ノードのデプロイ

右上の「デプロイ」ボタンを押して、追加したノードをデプロイしましょう。

テスト

それでは、設定したノードを使ってテレビのチャンネルを変えて見ましょう。テレビの電源をつけて、NHK以外のチャンネルに変更しておきましょう。

①トリガのボタンを押す

injectノードの左に付いているボタンを押しましょう!

②テレビがパッツ!

テレビがNHK総合に変わりましたか?これで完了です。
他のチャンネルに変更するノードは、同じように作成してください。

おわりに

今回はNode-redからLG製テレビのチャンネルを変更する事をやってみました。次回は、テレビ以外のアプリを起動して操作してみることをやって見ようと思います。

連載記事
 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)をコントロールしてみる

記事が参考になったら、ブログランキングに協力(クリック)して貰えると嬉しいです。

昼間はIT企業に勤めてますが、プライベートでは「育児×家事×IoT」をテーマに家のスマートホーム化に取り組んでいます。Androidアプリも作っているので使って下さい。質問・コメントは、↓のコメント蘭でもFacebookメッセンジャーでもどちらでも大丈夫です。
E-mail:naka.kazz.d@gmail.com

naka-kazzをフォローする
スマートホーム開発者向け
スポンサーリンク
naka-kazzをフォローする
スマートホーム×DIY

コメント