はじめに
M5SticKCに人感センサーを取り付けます。人感センサーが反応した場合にIFTTTに通知が来る構成です。
- 必要なもの
- IFTTTの設定
- スケッチ例
- 実行
1.必要なもの
M5StickCと人感センサーが必要です。
番号 |
商品名 |
価格 |
参考販売店 |
1 |
M5StickC |
1980円(セット) 1650円(本体のみ) |
|
2 |
M5StickC PIR Hat(AS312搭載) |
363円 |
2.IFTTTの設定
IFTTTとは「if this then that」というシンプルなコンセプトに基づく「レシピ」を作成したり共有したりできるサービスです。URL:https://ifttt.com/
Apple、Google、Facebookのアカウントがあればサインインできます。
IFTTTにログインできたら左上の[Create]をクリックします。色々なアプリを組み合わせることができますが、今回はWebhookとIFTTTのNOtificationsを使用します。あるアプリから別のアプリにリアルタイムで情報を送るしくみのことをWebhookと呼びます。今回はM5SticCの情報をIFTTTのNotificationsに送るために使用します。IFTTTのNotificationsは受信があったときに通知をしてくれます。
「if this then that」のthisがWebhook、thatの部分がIFTTTのNotificationsとなります。
thisから作成します。[If This]をクリックします。
webで検索すると候補がでてきます。[Webfooks]を選択します。
真ん中の[Receive a web request]をクリックします。
Event Nameを入力する画面になります。Event Nameは何でもいいですが、ここではm5c1にしています。記入したら[Create trigger]をクリックします。
次に「if this then that」のthatを作成します。[Then That]をクリックします。
候補をしぼるために、検索にnotifiと入力します。左のベルを選択します。
中ほどの左の[Send a notification from the IFTTT app]を選択します。
次にM5StickCの人感センサーが反応したときに表示されるメッセージを[Message]に記入します。
不在時に侵入者があった場合のメッセージを記入します。完了したら[Create action]をクリックします。
thisとthatができたので[Continue]をクリックし最後に[finish]を押します。
ベルの横の三角の頂点がまるで囲まれた図をクリックします。
Webhooksが一つだけの画面になります。右上の[Settings]をクリックすると、URLが表示されるのでそれをコピーしておきます。
IFTTTはレシピを3つまで無料で作成できます。すでにあるレシピを共有する分にはいくつも利用できます。
3.スケッチ例
今回もIFTTTにアクセスするためにHTTPClient.hをインクルードします。
11行目のurlの設定は決まった形になりますので、この通りに使用します。maker_EventはIFTTTで設定したEvent Nameを記述します。make_KeyにはIFTTTのWebhooksで表示されていたURLのuse以降の文字列を記入します。(https://maker.ifttt.com/use/ここの部分)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#include <M5StickC.h> #include <WiFi.h> #include <HTTPClient.h> #define D_WIFI_SSID "SSIDを入力"<br />#define D_WIFI_PASS "WiFiのパスワードを入力" const String maker_Event = "m5c1"; const String maker_Key = "キーを入力"; String url = "https://maker.ifttt.com/trigger/" + maker_Event + "/with/key/" + maker_Key; int http_code; HTTPClient http; void setup(){ M5.begin() ; M5.Lcd.setRotation(3) ; M5.Lcd.fillScreen(BLACK); pinMode(36,INPUT_PULLUP); Serial.begin(115200); WiFi.begin(D_WIDI_SSID,D_WIFI_PASS); Serial.print("connecting to WiFi."); while(WiFi.status() != WL_CONNECTED){ Serial.print(".") ; delay(500) ; } Serial.println("Connected!!"); http.begin(url); } void loop(){ M5.update(); if(digitalRead(36)){ http_code = http.GET(); delay(20000) ; } delay(20) ; } |
4.実行
スケッチを書き込んだら、実行する前にスマホにIFTTTアプリをインストールしておきます。
センサーに反応すると、スマホに表示されます。
今回はIFTTTを使用してM5StickCの人感センサーが反応したらスマートフォンに表示するという内容でした。IFTTTのレシピはすべて「if this then that」で構成されています。[that」の部分をlineのnotifyに変更すればlineに通知が来る構成に変更できます。
レシピを作成しても、IFTTTに反映されるまで時間がかかる場合があります。
IFTTTに反映されても実行に時間がかかる(レスポンスが遅い)場合もあります。IFTTTのレシピを開いて[check now]をクリックするとすぐに反映されるので、動作しているのかしないのかを確認できます。
webhookがそもそも動作しているのかを確認したい場合はコマンドラインで確認できます。DOSプロンプトを開いて以下を実行し[Congratulations! You’ve fired the m5c1 event]と表示されれば、OKです。
1 |
$ curl -X POST https://maker.ifttt.com/trigger/m5c1/with/key/abcdefghijklmnopqrstuv |
( 上記のm5c1はイベント名です。作成したレシピの[Event Name]に置き換えて実行してください。
abcdefghijklmnopqrstuvは作成したレシピのキーに置き換えて実行してください。)
line notifyなどを使用して変数を渡したい場合はスケッチに以下を追加します。
1 |
url += "?value1=" + value1 + "&value2=" + value2 + "&value3=" + value3; |