LoginSignup
3
3

More than 5 years have passed since last update.

google homeでテレビをつける(普通の家電版)

Last updated at Posted at 2018-09-16

概要

raspiに赤外線学習リモコンirMagicianを繋げて, スマート家電ではないテレビの電源を操作するプログラムをgoogle homeから実行させてみました
かなり殴り書きです。ごめんなさい。。。

ゴール

google homeに話しかけて普通のテレビの電源を制御します
 


用意するもの

システム構成図

今回のシステムの流れを簡単な図にすると
スクリーンショット 2018-09-16 17.56.22.png

  1. 「OK,google テレビつけて」でgoogle assistantからIFTTTのApplet起動
  2. webhookからMQTTのbrokerへpulishする
  3. brokerにsubscribeしているraspiのNode-redがメッセージを受け取りプログラムを実行
  4. irMagicianから赤外線を照射してテレビをつける

参考:IFTTT から Raspberry Pi に指示を出す

ステップ

  1. irMagicianの使い方
  2. irMagicianでテレビの電源を操作
  3. Beebotteの登録&設定
  4. IFTTTの登録&設定
  5. raspiにNode-REDをインストール&起動

irMagician

スマート家電ではないテレビをつけるために赤外線学習モジュールである、「irMagician」を使います
(赤外線で操作できる家電は基本的に操作可能。今回はテレビにしたがエアコンでも動作した)

Amazon:https://www.amazon.co.jp/%E5%A4%A7%E5%AE%AE%E6%8A%80%E7%A0%94-irMagician-%E9%AB%98%E6%80%A7%E8%83%BD-%E4%BD%8E%E4%BE%A1%E6%A0%BC-%E8%B5%A4%E5%A4%96%E7%B7%9A%E3%83%AA%E3%83%A2%E3%82%B3%E3%83%B3/dp/B074Z3TZ1R/ref=sr_1_1?s=industrial&ie=UTF8&qid=1537088718&sr=1-1&keywords=irmagician

使い方

設定はこちらを参考:Raspberry Pi と irMagician(赤外線モジュール)で家電を操作する
raspiでirMagicianが使用可能になったらgithubから以下のリポジトリをclone
https://github.com/netbuffalo/irmcli

$ git clone https://github.com/netbuffalo/irmcli

pipがなければinstall
pipで必要なパッケージをinstall

$ sudo apt-get install python-pip
$ sudo pip install pyserial

赤外線の保存と実行

以下のようにプログラムを実行して照射した赤外線をファイルに保存します
実行中にテレビのリモコンをirMagicianに向けて電源ボタンを押します

$ python irmcli.py -s  -f tv.json
Saving IR data to tv.json ...
Done !

これでテレビの電源を制御する赤外線をファイルに保存することができたはず

保存ができたら実行して照射してみます

$ python irmcli.py -p -f tv.json
Playing IR with tv.json ...
... Done !

テレビの電源が切り替われば成功
テレビの電源はトグルのため、ついていれば消え、消えていればつくはず
一方、エアコンは電源入、電源切で異なる赤外線を発しているためそれぞれ保存する必要があります

Beebotte

今回は、「OK,google.テレビつけて」の命令をraspiに送るためにMQTTを使います
そしてMQTTのbroker(データを受け取るところ?)としてbeebotteを使います
参考:MQTT入門(導入編)

設定

こちらは、ほとんど参考記事と同じことをしています
が、channel名などが異なるものを使用しているので載せさせていただきます

channelの作成

[Create New]を押して新しいチャンネルを作成します
スクリーンショット 2018-09-16 18.27.47.png

画像のように入力して[Create channel]を押してチャンネル作成を完了します

作成したチャンネルを選択しTokenを確認します
スクリーンショット 2018-09-16 18.28.29.png
紫色で隠れているとこをコピーしておきましょう

参考:IFTTT から Raspberry Pi に指示を出す

IFTTT

google assistantで認識した結果からBeebotteにデータを送るためにIFTTTを使います
IFTTTはさまざまなサービスを簡単につなぎ合わせることができます
LINEやTwitter,SlackなどのSNSツールからSpotifyなど非常にたくさんのサービスをつなぎ合わせることができます
今回はIFTTTを使って[google assistant]と[[webhook]を繋げたいと思います

Appletの作成

IFTTTを使用するにあたり[Applet]と呼ばれるものを作成します
[New Applet]を押して作成を開始します
thisにはgoogle assistantを設定します

スクリーンショット 2018-09-16 18.44.40.png

Say a phrase with a text ingredientを選択します
($で文字列パターンを使用できます)
スクリーンショット 2018-09-16 18.44.52.png
今回は「テレビつけて」と「テレビ消して」に対応させるため以下のように設定します
これでgoogle homeが「しゃーなし消してやるで」とか返してくれるようになります
スクリーンショット 2018-09-16 18.45.42.png
thisの設定は終わりです
thatには以下のようにwebhookを使います
スクリーンショット 2018-09-16 18.45.58.png
以下のように設定してください
「先ほどコピーしたToken」のところには先ほどコピーしたBeebotteのChannel Tokenを入力してください
スクリーンショット 2018-09-16 18.47.24.png

これで、「OK,google テレビつけて」と言ったら
Beebotteに

{
  "message": "つけて"
}

というjsonがpublish(送信)されます

Node-RED

以上までの手順でpublishされたjsonを読み取れるように今回はNode-redを使います
最新のOS(raspbian)にはすでにNode-redがインストールされているみたいなのでインストール手順は割愛させていただきます

起動

sshでraspiにログインして以下のコマンドでNode-redを起動します

$ node-red-start
Once Node-RED has started, point a browser at http://192.168.xx.xx:1880
On Pi Node-RED works better with the Firefox or Chrome browser

Use   sudo systemctl enable nodered.service  to autostart Node-RED at every boot
Use   sudo systemctl disable nodered.service to disable autostart on boot

To find more nodes and example flows - go to http://flows.nodered.org
16 Sep 10:03:55 - [info]

Welcome to Node-RED
===================

16 Sep 10:03:55 - [info] Node-RED version: v0.18.7
16 Sep 10:03:55 - [info] Node.js  version: v6.14.3
16 Sep 10:03:55 - [info] Linux 4.14.34-v7+ arm LE

http://192.168.xx.xx:1880 をブラウザで開きます

フローの作成

  1. 入力からmqttを選択して配置します
    スクリーンショット 2018-09-16 19.09.00.png

  2. ダブルクリックで設定を開き
    以下のように設定します
    スクリーンショット 2018-09-16 19.08.51.png
    (tv/tvのところはBeebotteで設定した[channel名]/[action名]になっています)

  3. 画像の赤いところをクリックして詳細設定をします
    スクリーンショット 2018-09-16 19.12.56.png
    スクリーンショット 2018-09-16 19.15.58.png
    紫のところに先ほどと同じようにchannel tokenを入力します

  4. jsonとfunctionの配置
    画像のようにjsonとfuncを配置してください
    jsonは何も変更しなくてOKです
    functionでは画像のように設定して完了してください
    スクリーンショット 2018-09-16 19.41.07.png

  5. 分岐をさせるSwitchの追加
    「つけて」と「けして」だけに反応するように画像のように設定して完了します
    スクリーンショット 2018-09-16 19.22.59.png

  6. プログラムを実行させるexecの追加
    execノードに実行させたいコマンドを入力してプログラムを実行させます
    スクリーンショット 2018-09-16 19.26.57.png
    このときコマンドは、できるだけ絶対パスで入力してください

/usr/bin/python /root/IFTTT/irmcli/irmcli.py -p -f /root/IFTTT/irmcli/tv.json
# python irmcli.py -p -f tv.json

以上で設定が完了です

うまくいけば以下の動画のように動いてくれるはずです
動画では「仕方ないのでつけてあげます」と言わせています
 


是非 Google Home × IFTTT × irMagician で普通の家電をスマート家電に変身させちゃいましょう!

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3