Help us understand the problem. What is going on with this article?

スマート家電も赤外線家電もGoogle Homeでまとめて操作

Google Homeに声をかけるだけで、赤外線では操作できないスマート家電も、赤外線でしか操作できない赤外線家電も、まとめて操作できるシステムを開発しました。
複雑な操作も簡単に実現できるので、シンプルにスマートホームを構築できます。
(他のシステムでは、家電のON/OFFのような単純な操作しかできなかったり、複雑な操作のためには複雑怪奇な設定が必要だったりします。)
「初心者でもできた!」という報告もたくさん頂いているので、ぜひお気軽にお試しください。

できること

  • 「OK Google、行ってきます」の一言で、スマート家電も、赤外線家電も、まとめてOFFにする
  • 「OK Google、暖房 22 度」で、エアコンの設定温度を 22 度にする
  • 「OK Google、エアコンを 6時半 につけて」で、6時半 にエアコンをつける
  • 「OK Google、エアコンを 7時間後 につけて」で、7時間後 にエアコンをつける
  • 「OK Google、テレビの音量を 4 上げて」で、音量アップを 4 回繰り返す
  • Twitterの通知を、Google Homeに喋ってもらう
  • 外出先から、自宅のエアコンを、スマホで操作する

他のスマートリモコンとの比較はこちら → スマートリモコンの比較表

必要なもの

necessary.png

  • Google Home (グーグルホーム)
    • Amazon Echoでも可能ですが、IFTTT連携が使いづらい
    • IFTTTと連携できるなら、ほかのスマートスピーカーでもOK
  • スマートリモコン
    • RM Mini3
      • 格安のWiFi付き赤外線スマートリモコン(別名: 黒豆、Black Bean)
      • 海外通販なら千円強、国内通販だと3千円弱
      • ただし、RM Mini3は技適を取っていないことに注意
        • 技適のないWiFi機器でも、総務省に届け出れば、半年だけ実験的に使えるよう、電波法が改正(2019年11月20日に施行)されました
        • 半年以上、実験以外の目的で使う場合は、技適を取った同等の機種(eRemote mini、約5千円)をお使いください
    • 自作も可能
  • 自宅サーバ
    • Node.jsとRedisが動けばOK
    • Raspberry Piがお手軽
      • ラズパイZero WHなら、省エネかつ安価(1,800円)
    • Amazon Fire TV Stickもサーバ化できます!
      • 第1世代でも、第2世代でも、動作報告を頂いています

システム構成

下図のように、Google Home → Google Assistant → IFTTT → Slack → 自宅のhubotサーバ → RM Mini3を経由して、赤外線家電を操作できるようになります。
overview.png
Slackのおかげで、自宅サーバに固定グローバルIPがなくても使えます。
ngrokなどで自宅サーバをネットに晒す必要がないので、安全で簡単です。)

hubotからRM Mini3を操作するための拡張スクリプト(hubot-broadlink-rm)を私が作りました。

システムの構築方法は[こちら]で詳しく解説していますが、まずは以下の本文を読んで、雰囲気を掴むことをおすすめします。

赤外線家電の操作方法

赤外線リモコンの学習と発信
例えば、照明をつける赤外線リモコンを学習するには、
learn light:on
というメッセージを、Slack経由でhubotに送ります。
すると、RM Mini3が学習モードになるので、照明のリモコンの点灯スイッチを押すと、学習が完了します。
学習した赤外線はlight:onという名前でhubotが覚えてくれます。

学習した赤外線を発信するには、
send light:on
というメッセージをhubotに送ります。

Google Homeから家電を操作
IFTTTで、Google Homeに「OK Google、明かりをつけて」と話したら、
send light:on
をSlackに送るようにすれば、Google Homeから照明を点灯できるようになります。
(ちなみに「OK Google」と言わなくても、見つめるだけでスマートスピーカーを起こす こともできます。)

外出先からのエアコン操作
IFTTTのButtonトリガーで、
send aircon:on
をSlackに送るようにすれば、スマホのウィジェットを押すだけで、外出先からエアコンをONにできます。
また、スマホの位置情報やWiFi接続の有無をトリガーにすれば、自動でONにすることもできます。

複数の家電をまとめて操作
sendメッセージには、複数の赤外線信号を渡すこともできます。例えば、
send light:on tv:on aircon:on
とすれば、照明とテレビとエアコンを、まとめてONにできます。

発信間隔の調整
赤外線信号を発信する間隔を調整したければ、
send light:on [2s] tv:on [1500ms] aircon:on
というように微調整できます。(詳細はこちら

発信を繰り返す
赤外線を発信する回数を*3と指定すれば、
send tv:vol:up*3  ⇒  send tv:vol:up tv:vol:up tv:vol:up
というように、音量アップを3回繰り返すこともできます。
さらに、繰り返しの間隔も調整したければ、
send tv:vol:up[300ms]*3  ⇒  send tv:vol:up [300ms] tv:vol:up [300ms] tv:vol:up
というように微調整できます。(詳細はこちら

この繰り返し機能を使えば、音量アップのIFTTTアプレットを1つに集約できるので、設定が楽になります。
「OK Google、テレビの音量を # 上げて」と言ったら、
send tv:vol:up*{{NumberField}}
をSlackに送信するIFTTTアプレットを1つ用意するだけで、「音量を 3 上げて」も「音量を 10 上げて」も実現できます。

RM Mini3の使い分け
複数台のRM Mini3を所有している場合には、台所を消灯して寝室を点灯するというような、使い分けもできます。
それにはまず、個々のRM Mini3を、MACアドレスやIPアドレスで識別して、台所(@kitchen)や寝室(@bedroom)という名前を付けます。
set @kitchen aa:bb:cc:dd:ee:ff
set @bedroom 192.168.135.246
すると、sendメッセージの中で、赤外線を発信させるRM Mini3を指定できるようになります。
send light:off@kitchen light:on@bedroom

格安のRM Mini3なら、家中のすべての部屋に設置しても、財布に優しいので、家全体のスマート化に打って付けです。

きめ細かな操作も簡単
これらの機能を組み合わせれば、きめ細かな操作も、簡単に実現できます。
例えば、「OK Google、外部入力 # 番」で、テレビの表示を # 番目の外部入力に切り替えるには、
send tv:dttv [2s] tv:source[3s]*{{NumberField}}
というメッセージを送るIFTTTアプレットを用意します。

「OK Google、外部入力 2 番」と言えば、
send tv:dttv [2s] tv:source[3s]*2 ⇒ send tv:dttv [2s] tv:source [3s] tv:source
となって、地デジ切替(td:dttv)の2秒後に、入力切替(tv:source)が送信され、さらに3秒後に入力切替(tv:source)が送信されるので、テレビには2番目の外部入力が表示されます。

また、「OK Google、外部入力 0 番」と言えば、
send tv:dttv [2s] tv:source[3s]*0 ⇒ send tv:dttv
となって、地デジ切替(td:dttv)だけが送信されます。そこで、Homeアプリのショートカット機能で、「地デジ」を「外部入力 0 番」に置き換えれば、「OK Google、地デジ」と言うだけで、テレビが地デジに切り替わります。

たった1つのIFTTTアプレットだけで、複雑かつ、きめ細かな操作を、簡単に実現できました。

スマート家電の操作方法

赤外線では操作できないスマート家電も、赤外線家電と同じように、sendメッセージで操作できます。

例えば、WebAPIで操作できるスマート家電を考えてみましょう。

このスマート家電の電源をONにするWebAPIのURLが、
https://SMART.DEVICE/API/on
だとすると、以下のようなUNIXのコマンド:
curl -s https://SMART.DEVICE/API/on
を実行すれば、電源をONにできます。

このコマンドをsendメッセージで扱うには、まず、
command smart:on curl -s https://SMART.DEVICE/API/on
というメッセージを送って、smart:onという名前で、hubotにコマンドを登録します。

あとは、赤外線家電と同じように、
send smart:on()
というメッセージを送れば、hubotがコマンドを実行して、スマート家電がONになります。

間隔調整や繰り返しも、同じように指定できます。
send [7h] smart:on()[15m]*3

なお、WebAPIのないスマート家電でも、IFTTTにさえ対応していれば、IFTTT経由でWebhookを簡単に設置できます。(詳細はこちら

スマート家電と赤外線家電をまとめて操作する方法

スマート家電と赤外線家電をまとめて操作するには、単に、
send smart:on() tv:on light:on
と並べるだけです。どんな種類の家電も、分け隔てなく、同じように扱えます。

まとめ

RM Mini3hubot-broadlink-rmを使えば、たった1つのIFTTTアプレットだけで、Google Homeから、様々なデバイスを、ひとまとめに、きめ細かく操作できます。
IFTTTアプレットを無駄にたくさん作らずに済むので、スマートホームをシンプルに構築できます。

生活に直結するものなので、シンプルに、簡単に、運用できることは、このシステムの大きな強みです。
公開から2ヶ月でまだ数千ダウンロード程度ではありますが、「簡単に構築できた!」という声をたくさん頂いています。

より多くの方々に、快適なスマートホームを、手軽に、格安で体験していただければ、開発者冥利に尽きます。
まずは手始めに、赤外線家電のスマート化、スマート電球、スマートコンセントなどから、ご自宅をスマート化してみてはいかがでしょうか。
システムの構築方法は、こちらで詳しく説明しています → RM Mini3とGoogle Homeで家電を操作する方法

おまけ(Twitterの通知をGoogle Homeに喋らせる方法)

(注:Fire TV Stickでは、残念ながらGoogle Homeに喋らせられません。)

まず、「テキストをGoogle Homeに喋らせるUNIXコマンド」を用意します。
次に、このコマンドをsayという名でhubotに登録します。
すると、喋らせたいテキストをsayに与えるだけで、
send say(太郎さんからフォローされました!)
Google Homeが「太郎さんからフォローされました!」と喋ってくれます。

あとは、IFTTTで、twitterでフォローされたら、
send say({{FullName}}さんからフォローされました!)
をSlackに送るよう設定すれば、Twitterの通知をGoogle Homeが教えてくれるようになります。

takjg
スマートホームを簡単に安く作る方法を紹介しています
https://scrapbox.io/smart-home/TOP
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした