GoogleHomeとminIRumを連携
OK! Google 電気をつけて
9月19日、20日に行われたGoogle Cloud NEXT 18に参加してました。
ブレイクアウトセッションをメインに聴講してたので
すっかりGoogleHomeの魅力に憑りつかれました。
なので以前作ったminIRumをGoogleHomeと連携させてみました。
minIRumとは?
9SQさんがOSSで公開してるIRkitの機能限定版?です。
github - minIRum
ミニマルなIRKitクローンを作ってiOSから家電を制御する
元々はhomebridge + iOSを使用する想定で作られていたので
Google Assistantとの連携は色々回り道しましたのでここに残しておきます。
やったこと
結論から言えばIFTTTでwebhookを呼んでbeebotteを経由しnode-redからcurlをたたくイメージです。
node-redの環境は自宅サーバとして動いてるubuntu 16.04を使っています。
もちろんスマートにラズパイでも動くはずです。
とりあえずnode-redが動く環境があれば大丈夫です。
実行環境
// サーバ
ubuntu 16.04
// ソフト・サービス
node-red (2.2.8)
beebotte
ifttt
// デバイス
google home mini
minIRum
やり方
// サーバ
ubuntu 16.04
// ソフト・サービス
node-red (2.2.8)
beebotte
ifttt
// デバイス
google home mini
minIRum
Google Assistant → IFTTT → beebotte → node-red → minIRum
IFTTT → beebotte → node-redの道順を作る
Google AssistantとIFTTTとbeebotteの連携は前例が山ほどあったので省略します。
参考にしたのは以下の記事です。
IFTTTとBeebotteを使ってGoogleHomeからRaspberryPiを操作する
IFTTTのトリガーおよびアクションをESP8266で実行する
IFTTT から Raspberry Pi に指示を出す
とにかくGoogleHomeを声で操作してnode-redを呼び出せればあとはなんでもできそうです。
node-redでGUIプログラミング
初めて触ったnode-redでしたがGUIのおかげで覚えるのはそこまで苦労しませんでした。
とりあえず動かしたい人は以下を参考にしてもらえればと思います。
beebotteのレスポンスをmqttで受けて動作するようにin mqttを設定
IFTTTには以下のイメージの通りでjson形式のコマンドを送らせています。
dataキーに
- All lights
- Lights off
- Night light
- Favorite
- Dark
- Brightky
を渡せるようにIFTTTのレシピを分けます。
その後コマンド判定のFunctionでどの赤外線コードを呼ぶかを分岐させています
msg.headers = {"content-type":"application/json"};
switch (msg.payload.data) {
case 'All lights': // 全灯
msg.payload = {
"format": "raw",
"freq": 38,
"data": [9000, 4450, ...]
};
break;
case 'Lights off': // 消灯
msg.payload = {
"format": "raw",
"freq": 38,
"data": [9000, 4450, ...]
};
break;
case 'Night light': // 常夜灯
msg.payload = {
"format": "raw",
"freq": 38,
"data": [9000, 4450, ...]
};
break;
case 'Favorite': // お気に入り
msg.payload = {
"format": "raw",
"freq": 38,
"data": [9000, 4450, ...]
};
break;
case 'Brightly': // 明るく
msg.payload = {
"format": "raw",
"freq": 38,
"data": [9000, 4450, ...]
};
break;
case 'Dark': // 暗く
msg.payload = {
"format": "raw",
"freq": 38,
"data": [9000, 4450, ...]
};
break;
default:
msg.payload = {
"format": "raw",
"freq": 38,
"data": []
};
break;
}
return msg;
コマンドの数は各自の操作する赤外線リモコンに合わせて変更してください。
もちろん赤外線コードもです。
minIRumではpostで赤外線の操作をしているので
msg.headersにjsonのcontent-typeを渡しています。
node-redでPOST送信する時に躓きやすいポイントらしいので気を付けてください
そのあと機能にあるhttp requestのブロックをつないで
メソッドをPOST
URLにhttp://ローカルにあるminIRumのアドレス/messages
を設定します。
これで設定は完了します
まとめ
殴り書きですみません。
まとめられるほど記事がまだまとまってないので時間を見て随時更新していきます。
何かのきっかけになれば幸いです。
編集リク、コメントで間違えている個所あれば是非教えてください。
Author And Source
この問題について(GoogleHomeとminIRumを連携), 我々は、より多くの情報をここで見つけました https://qiita.com/sinkunvv/items/f54e5459ac7db830682f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .