google スマートホーム スマホ

自宅に着いたらスマホ(Android)のWiFi接続を検知して自動で家電や音楽をつける

投稿日:

スポンサードリンク

はじめに

これまでで自宅のスマートホーム化についていくつかご紹介してきたと思いますが、これまではGoogle Home経由で何かさせるというものがほとんどで自動で何かさせるというのがありませんでした。

たぶん冷房を自動で入り切りするというのが唯一自動ものだと思います。

できれば自分が外に出たら自動ですべての電源をOFFにして、逆に帰宅したら自動ですべての電源をONにしてほしいなぁと思います。今回はそんなことにチャレンジしてみました。

実施内容

外出時は常に持ち歩いているアンドロイドのスマホの自宅WifiのON/OFFのトリガーを利用して自宅家電のON/OFFを制御しようと思います。


画像はON時の挙動です。

今回用意したものは次のものです

  • Androidスマホ
  • 自宅Windows10 PC
  • スマートリモコン(SwitchBot Hub Plus)
  • Google Home(BGM再生用)

自宅に常に動いているPCを用意します。これはSlackの応答用として使っており、SlackはIFTTTから受け取った投稿をもとにHubotがスクリプトを動かすという仕組みにしています。

そして、このHubotがWebHooksで家電を操作するためのトリガを起動して、さらにGoogle HomeにBGMを再生させます。

IFTTTのAndroid Wifi ON/OFF設定

IFTTTのアプレット作成でAndroid Deviceを選びます。自分のAndroidスマホにIFTTTが入っていなければダウンロードしてください。

まずはIFTTTのトリガー一覧の「Connects to a specific WiFi network」を選びます。「DisConnects to a specific WiFi network」は文字通り切断時の挙動なので接続時の挙動を作り終えたら作成してください。

そして、自宅のSSID(WiFiネットワーク名)を入力します。

アクションにはSlackを選んで自分のHubotが動くチャンネルとメッセージを記します。次項で説明しますが、Hubotの名前がmyhubotなので"myhubot allon"ですべてONにするようにしました。

ここのIFTTTとSlack+Hubotのセットアップは「IFTTT+Slack+HubotでGoogle Homeとおしゃべりができるようにする[Windows10]」をご参照ください。申し訳ないのですがここは多少面倒です。

そして、さらにこれを作り終えたら、Disconnect時の挙動も作りました。Slackのメッセージは"myhubot alloff"としました。

Slackを利用した複数WebHooksリクエスト

IFTTTで複数処理を走らせる方法については「[Google Home]IFTTTで複数処理などの複雑な処理を実行する(IFTTT+Slack+Hubot)」を参照してください。

今回は常に動いている自宅PC内のSlackとHubotを利用して複数WebHooksを動かしました
以下サンプルプログラムです。キーやパスは自分のものに書き換えてください。

example.coffee

module.exports = (robot) ->
  robot.respond /allon/i, (res) ->
    request = robot.http("https://maker.ifttt.com/trigger/lighton/with/key/{{ 自分のキー }}").get()
    request (err, msg, body) ->
      res.send "light on"        
    request = robot.http("https://maker.ifttt.com/trigger/cooleron/with/key/{{ 自分のキー }}").get()
    request (err, msg, body) ->
      res.send "cooler on"    
    child_process = require('child_process')
    child_process.exec 'C:\\Users\\{{ ユーザ }}\\google-home-notifier\\bat\\mybgm.bat', (error, stdout, stderr) ->   
  robot.respond /alloff/i, (res) ->
    request = robot.http("https://maker.ifttt.com/trigger/lightoff/with/key/{{ 自分のキー }}").get()
    request (err, msg, body) ->
      res.send "light off"        
    request = robot.http("https://maker.ifttt.com/trigger/cooleroff/with/key/{{ 自分のキー }}").get()
    request (err, msg, body) ->
      res.send "cooler off"

"allon"というメッセージを受け取ったらすべての家電をONにして、BGMを流します。Google Homeに任意のBGMを流すためのバッチファイルを途中で叩いていますがそれは後述します。
そして、逆に"alloff"というメッセージを受け取ったら照明とエアコンをOFFにします

slackに書き込むときは自分のHubotの名前を付けて投稿してください。私のHubotは"myhubot"という名前なので、例えば、"allon"するときは"myhubot allon"とSlackに投稿するようにします。

WebHooksとSwitchBot Hub Plusでエアコン・照明をつける

IFTTTのWebHooks経由で家電を操作するには「IFTTT+SwitchBot Hub Plusで自宅をスマートホーム化 第1弾(照明の自動ON/OFF)」に記してあるのでそちらを参考にしてください。

私はSwitchBot Hub Plusを使っていますが、他のIFTTT対応のスマートリモコンでも実現できるので好きなものを用意してください。

WebHooksでGoogle Homeに音楽をかける

先ほどのスクリプトで音楽を再生するバッチファイルを叩いている処理がありましたが、このバッチファイルはGoogle HomeにPC内の音楽を連続再生させるスクリプトを起動しています。

詳細は以前の「[Windows10]Google Homeに音楽(mp3)を連続再生させる」でご紹介してるのでそちらを参照してください。基本的にgoogle-home-notifierというGoogle Home用の公式スクリプトを連続再生できるよう改変したものの紹介になっています。

ちなみに自分は癒し系のBGMを流してリラックスできるようにしてみました。

動作確認

AndroidのWiFiを恣意的にON/OFFにして想定通り動くか確認します。Android画面のWiFiマークをタップすると自動でON・OFFが切り替わるのでそれを使いました。

WiFiをOFFにしたらIFTTTからDisconnectメッセージが届きました。しばらくして照明とエアコンがOFFになりました。

そして、逆にWiFiをONにしたらIFTTTからConnectメッセージが届き、照明とエアコンとBGMがONになりました。

さらに、試しに外出して帰宅してみましたが、上記と同じようにメッセージが飛んできて、自宅に入ったらすべてONになったのでうまくいきました。

しかし、自宅に入ってからすべてつくまで数秒~十秒程度のラグがあったのが多少残念なポイントでした。WiFiの接続までの時間とIFTTTからすべてONにするまでの経路で改善の余地があると思いました。特にWiFi接続に多少時間がかかっていたため、端末の性能の問題なのかなと睨んでいます。

まとめ

AndroidスマホのWiFi接続トリガで自宅の家電のON/OFFを一斉操作してみました。これでやっとスマートホームっぽくなったのではないかと思います。

(追記)
サムネ画像はDAZ Studioで作ってみました。

スポンサードリンク

-google, スマートホーム, スマホ

Copyright© めめんと , 2019 All Rights Reserved Powered by AFFINGER5.