はじめに
我が家にも有機ELテレビがやってきました。国産メーカのテレビも、有機ELパネルはほとんどがLG製のパネルを利用しているらしく「同じパネルなら安い方がいいんじゃない?」という事でOLED 55C7Pを購入!
やりたいこと
最終的にやりたいのは、以下のようにAmazon Alexaとスマホを使って、テレビのチャンネルやYoutube動画を切り替える事です。
1-1.(子供が)Amazon Alexaに「テレビをプリキュアにして」という
1-2.(大人が)スマホから指定のYoutube動画のボタンを押す
2.テレビのアプリをYoutubeアプリに切り替え
3.プリキュアの動画を再生
このLG製のテレビ、内部はwebOSというOSで動作していてWeb APIが公開されているんです。そこで、今回はLG製のテレビをNode-redから操作してみたいと思います。
ちなみに、テレビをNode-redから操作するためには、テレビがLANに繋がっていることが前提となりますので、有線かWifiでLANに接続しておきましょう。
実現に向けた連載
やりたいことを実現するために、以下のように少しずつに記事を書いてきました。
1回目:Node-redからテレビの電源を消す
2回目:Node-redからテレビのチャンネルを変える
3回目:Node-redからYoutubeアプリを起動して動画を再生する
4回目:スマホからテレビを操作できるようにする
5回目:Alexaから声でテレビを操作できるようにする ←この記事
付録:Wake-On-LANでテレビの電源をつける
付録:Gravioで子供用プリキュアボタン
5回目:Alexaから声でテレビを操作できるようにする
第4回目では、簡易Webアプリを作成してスマホからテレビを操作することをやってみました。今回は、子供でも簡単にテレビを操作できるように、Amazon Alexaを使った音声コマンドによるテレビ操作をしてみたいと思います。
node-red-contrib-alexa-localのインストール
Node-redでAmazon Alexaを扱うためのパレットは複数のものがありますが、私はインターネットを介さないで利用可能なnode-red-contrib-alexa-localが気に入っています。まずは、このパレットをインストールしていきます。
①パレットの管理画面の表示
Node-redの右上の「三」のアイコンからパレットの管理画面を開きます。Node-redのインストール方法はあちこちにあると思いますので割愛します。
②node-red-contrib-alexa-localノードの検索と追加
パレットの管理画面の左の「パレット」を選択し、「ノードを追加」のタブを選択します。次に、検索欄に「alexa」と入力して、ノードを検索します。検索結果として出てきたnode-red-contrib-alexa-localにある「ノード追加」のボタンをクリックします。警告画面が出ますが、気にせずに「追加」ボタンを押しましょう。
少し待つ(私の環境では1分ほど)とalexa-localのノードが追加されます。
Alexa-localノードの追加
Alexaからの「テレビを○○して!」という音声コマンドは、alexa-localノード経由で入力されてきます。このノードを介して、テレビを操作してみましょう。
①Alexa-localノードの追加
パレットにあるAlexa-localノードをドラッグして追加します。
②Alexa-localノードの設定
追加したAlexa-localノードをダブルクリックして設定画面を開き、Name欄に「テレビ」と入力して「完了」ボタンを押します。
③switchノード1の追加
パレットにあるswitchノードをドラッグして追加します。このswitchノードで、テレビの電源操作かチャンネル操作かを判定します。
④switchノード1の設定
追加したswitchノードをダブルクリックして設定画面を開き、以下のように設定して「完了」ボタンを押します。
また、分岐条件の行を追加するためには、画面下の「+追加」ボタンを押します。
プロパティ:msg.on_off_command
分岐条件:
is true → 1
is false → 2
⑤switchノード2の追加
次に2つ目のswitchノードをドラッグして追加します。このswitchノードで、電源のオン/オフを判定します。
⑥switchノード2の設定
追加したswitchノードをダブルクリックして設定画面を開き、以下のように設定して「完了」ボタンを押します。
プロパティ:msg.on
分岐条件:
is true → 1
is false → 2
⑦switchノード3の追加
次に3つ目のswitchノードをドラッグして追加します。このswitchノードで、チャンネルを判定します。
⑧switchノード3の設定
追加したswitchノードをダブルクリックして設定画面を開き、以下のように設定して「完了」ボタンを押します。
プロパティ:msg.bri
分岐条件:
1 → 1
100 → 2
⑨ノードの接続
追加したノードを以下のように接続していきます。
テレビノード→switch1ノード
switch1ノードの上の接続子→switch2ノード
switch1ノードの下の接続子→switch3ノード
switch2ノードの下の接続子→turnOff→controlノード
switch3ノードの上の接続子→NHK→channelノード
switch3ノードの下の接続子→消防車→youtubeノード
⑩ノードのデプロイ
右上の「デプロイ」ボタンを押して、追加したノードをデプロイしましょう。
Amazon Alexaにデバイス登録
上で作成したテレビノードをAlexaに登録して音声でテレビを操作できるようにします。Amazon echoとNode-redをインストールしたraspaiを同じLANに接続してくださいね。
①デバイス画面を開く
スマートフォンからAlexaアプリを開き、右下にある「デバイス」メニューを選択し、さらに右上の「+」ボタンを押します。
②デバイスの追加
出てきたメニューから「デバイスを追加」を選択します。
③デバイスの種類の選択
セットアップするデバイスの選択画面になったら「その他」を選択します。
④デバイスの検出
デバイスの検出画面になったら「デバイスを検出」のボタンを押します。デバイスの検出には1分ぐらいかかります。
⑤デバイスのセットアップ
無事にデバイスが検出されたら「デバイスのセットアップ」のボタンを押します。ちなみに、照明として検出されてしまうのは、Alexa-localの仕様なので、気にせずに行きましょう。
⑥グループへの追加
グループへの追加は特に必要ないので「スキップ」します。必要に応じてグループへ追加しましょう。
⑦登録完了
「テレビは稼働できる状態である」と表示されれば完了です。「終了」ボタンを押しておきましょう。。
テスト
それでは、Alexaを使ってテレビが操作できるかテストしてみましょう。当然、テレビつけといてくださいね。
①テレビを消す
Amazon echoに向かって「アレクサ、テレビを消して」と言って見ましょう。
テレビが消えましたか?
②チャンネルを変える
Amazon echoに向かって「アレクサ、テレビを1にして」と言って見ましょう。
テレビが1チャンネルに変わりましたか?
おわりに
この連載では、Node-redを使ってLG製のテレビをスマホやAmazon echoから操作する事をやってみました。今回は、テレビの電源を消したり、チャンネルを変えたりと基本的な操作しかしませんでしたが、node-red-contrib-lgtvでは、この他にもボリュームを変えたり、入力をHDMIに切り替えたり、アプリを切り替えたり様々なことができますので、ぜひチャレンジしてみてください。
連載記事
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)をコントロールしてみる
コメント