3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ESP-WROOM-02(ESP-WROOM-32)を使って、ボタンを押したらIFTTTにイベントを送信する箱を作る。

Last updated at Posted at 2020-07-24

はじめに

中国Broadlink社のRM miniという製品があります。赤外線リモコンを学習しておいて、スマホやGoogle Homeからのアクションで、リモコン操作が行えるデバイスです。

Google HomeとRM miniを組み合わせると、いままでの家電をそのままに(赤外線リモコンがついている家電に限られますが)スマートホーム化できる、ナウい仕組みが実現するのです!

「ねえグーグル、電気をつけて」で、家の中の照明を一斉に点灯・消灯するのはとても便利で未来的です。しかし…最初のうちは楽しいのですが、しばらくすると、しゃべるよりスイッチを押したほうがはるかに楽…。
そこで、IFTTTのイベントを発生させる、専用のボタンをESP-WROOM-02で作ってみました。

※(2020/08/01追記)記事はESP-WROOM-02(ESP8266)で作っていますが、ソースコードはESP32でも使えるように少し直しました(#defineだらけで見にくくなってしまいましたが…)。

RM miniはIFTTTでコントロールできる。

RM miniシリーズは、密かにクラウド側のバージョンアップを続けており、いつの間にかIFTTTにも対応するようになりました。そのためには、新しいAndroidアプリ「BroadLink - Universal Remote」に乗り換える必要があります。ihcを使っていた方は、そのまま設定も引き継がれます。
設定したら、https://ifttt.com/broadlink で使えるようになります。サンプルには、「日の出になったら実行する」などあって、これだけでも便利に活用できそうです。
このAndroidアプリで、RMminiの赤外線リモコンの設定を行います。

IFTTTのWebhookを使う。

IFTTTには、Webhook機能があります。これを使うと、httpのPOSTをイベントにすることができます。ESP-WROOM-02を使って、ボタンを押したらPOSTするようにすれば、ボタンを押したらIFTTT経由でRM miniにイベントを送ることができます。

Webhookのページで「Setting」をクリックすれば、APIキーを取得できるので、これをコピーしておきます。

ESP-WROOM-02でボタンを押したらIFTTTにイベントを送信する箱を作る。

これを読んでいる方は、引き出しの中に昔買ったESP-WROOM-02が入っていると思いますので、これを使いましょう。ボタンは、ホームセンターに売っている呼び鈴用のプッシュスイッチを使ってみました。
s_IMG_20200606_203427247_PORTRAIT.jpg

回路図は以下のような感じ。最近はお安い評価ボードが容易に手に入るので、その場合はスイッチ(SW1~SW3)と動作確認用のLEDを配線するだけです。

ESP-WROOM02-ifttt-btn.png

ソースコードを手元の環境に合わせて修正する。

ソースは https://github.com/tonasuzuki/ifttt-btn に置いておきましたので、使ってください。以下を手元の環境に合わせて修正します。
※(2020/08/01追記)記事はESP-WROOM-02(ESP8266)で作っていますが、ソースコードはESP32でも使えるように少し直しました。

  • IFTTTのWebhook maker keyを入れる
    #define IFTTT_MAKER_KEY "ここにAPI keyを入れる"

  • 家の無線LANのSSIDとパスワードを書く
    const char ssid[] = "ここにSSIDを入れる";
    const char pass[] = "ここにpasswordを入れる";

  • ボタンの数と、ボタンを接続したGPIO番号を書く(上記回路図のまま接続したならそのまま)
    #define BUTTON_NUM 3 // ←ボタンの数
    int nButtonPins[] = {14, 12, 13}; //←GPIO番号を並べる

  • 動作確認用のLEDのGPIO番号を書く。(上記回路図のまま接続したならそのまま)
    #define LED_PIN 5

  • Light sleepまでの時間を設定する。
    #define BUTTON_SLEEP_TIME (300*1000) //←5分後にLight sleep
    #define BUTTON_SLEEP_TIME 0 //←Light sleepしない場合

    • 最後にボタンを押したあと、指定ミリ秒経過後にLight sleepする時間です。Light sleep中は消費電力が1mAくらいになるらしいので、電池で駆動したい場合などは設定するといいでしょう。ただし、ボタンを押したら無線LANに接続するのに数秒かかるので、ちょっとイライラします(笑)。Light sleepしなくないならば、0を設定します。

接続したボタンを押すと、IFTTTのwebhookに「esp-buttons1」のようなイベントが送信されます。(イベント名の最後の「1」は、押したボタンによって変わります)。
なお、送信はhttpsではなくてhttpです。(httpsのお手軽な実装方法、よくわからないです…)

IFTTTでトリガーに合わせた処理内容を設定する。

あとは、IFTTTのwebhookイベントに、Broadlinkのアクションを設定します。
IFTTT_action.jpg

なお、アクションに設定できるリモコン操作は、1つだけです。ボタンを押したら、複数の照明をONにするなど、一つのイベントで、複数のアクションを実行させたい場合は、同じイベント名でアクションを複数作ります。
IFTTT_action2.jpg

最後に

ボタンを押したら、IFTTTにイベントを送信するだけの箱を作ってみました。上記事例では照明をつけたりしていますが、IFTTTのイベントを発生させるだけなので、例えば雨が降ったらLINEでメッセージを送るなど、応用が効くとか思います。みなさんも試してみてください。

3
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?