前回は、M5StickCでAmbientからデータを取得するプログラムを作りました。
今回は、見守りセンサが反応した時に、状況をツイートするプログラムを作りたいと思います。
IFTTTを使う
M5Stickから直接ツイート出来ればいいのですが、よくわからないのでIFTTT(イフト)というサービスを利用します。
IFTTTは、「何か」をきっかけとして、「何か」をしてくれるというクラウドサービスです。この「何か」にはたくさんの何かがあり、その中で今回は、IFTTTの「Webにアクセス」したら、「ツイート」するという組み合わせを構築したいと思います。「ツイート」だけでなく「Lineする」というのもあります。今回は複数人で見守りができるようツイートにしてみました。
IFTTTのセットアップ
IFTTTはメールアカウントだけでユーザー登録ができます。まずはIFTTTのサイトへ行きます。
右上の[Sign Up]をクリック
GoogleかFacebookのアカウントを持っている方は、それらを使ってユーザー登録ができます。私はメールで登録したいので、その下の「sing up」をクリック。
メールアドレスと、設定したいパスワードを入力して「Sign up」をクリック。これで登録完了。
設定する
右上の[explore]の左の丸いアイコンをクリックすると、中に「Create」があります。ここをクリックすると、設定が作れます。
まず「+This」をクリックしてトリガを設定します。
「webにアクセスされたら」は「webhook」という機能で実現します。「webhook」と入力して残ったアイコンをクリックします。
「Receive a web request」のアイコンをクリック。
イベントの名前を設定します。IFFFTのwebにアクセスする時に、このイベント名も一緒に入れておきます。こうすることで、複数の異なるイベントを設定することができるようになります。今回は「ChangeWeight」にしました。
以上で「条件」の設定は終わり、次に「動作」を指定します。[+Taht]をクリックします。
ツイートしたいので「twitter」と検索して、ツイッターのアイコンをクリックします。
「post a tweet」をクリック。
どのような文面のツイートをするか指定します。「Add ingredient」をクリックすると、変数を追加できます。
こんな感じに編集してみました。「Create action」をクリックします。
「Finish」で完成。
これで、webにアクセスすると、ツイートする設定が完了しました。
動作テスト
実際に動作するかテストできます。ついでに、どのようなURLにアクセスするかも、ここでわかります。
左上の[Home]をクリック。
「Webhook」をクリック。
右上の[Documentation]をクリック。
上のURLがアクセスするURLです。{event}は、webhookで設定した「ChangeWeight」を入れます。中段のValue1:の後に、送りたいパラメータを入力。試しに12.3としておきます。
これで「test It」をクリックします。正しく設定されていれば、ツイートされます。下段のURLが、マイコンからアクセスするURLになります。このURLにアクセスすることがトリガーとなり、ツイートが発生します。
ツイートするアカウントをフォローしていれば、通知が届きます。
これで、IFTTTの設定が完了し動作を確認したので、次はマイコンから、先ほどのURLをアクセスしたいと思います。
M5StackCのプログラム
M5StackCのプログラムを作ります。と言っても、特定のURLにアクセスするだけです。以下のようになりました。
... #include <HTTPClient.h> #include <WiFiClientSecure.h> #include "certificate.h" // IFTTT String makerEvent = "xxxxxxxxx"; // Maker Webhooks String makerKey = "xxxxxxxxxxxxxxxxx"; // Maker Webhooks ... void setup() { //WiFi接続 ... } void loop() { //Aボタンを押すとIFTTTにアクセス ... String response = sendToIFTTT(12.3); ... } //IFTTTにパラメータを送信 String sendToIFTTT(float value) { const char* server = "maker.ifttt.com"; // Server URL String url = "/trigger/" + makerEvent + "/with/key/" + makerKey; url += "?value1="; url += value; HTTPClient httpClient; bool ok = httpClient.begin( server, 443, url, IFTTT_ca_cert); Serial.printf("httpClient.begin %d\n",ok); int httpCode = httpClient.GET(); String httpResponse = httpClient.getString(); httpClient.end(); Serial.printf("httpCode:%d\n",httpCode); Serial.println(httpResponse); return httpResponse; }
makerEventには、今回は[ChangeWeight]が入ります。makerKeyは、Documentationのページの上部にでかでかと表示されていたキー↓↓です。
certificate.hはIFTTTのCA証明書が入っています。
sendToIFTTT()が、IFTTTにアクセスする関数となります。今回は引数が1つしかありませんが、IFTTTは最大3つまで対応しているので、必要であればご自身で拡張してください。
このプログラムを実行してボタンAを押すと、IFTTTにアクセスします。シリアルモニターは以下のようになります。
と表示されれば、正しくアクセスができています。
M5StackCの液晶にも、同じ文面が表示されます。
iPhoneにもツイートが届きました。これで、M5SticCからIFTTT経由でツイートできるようになりました。
M5StackCのプログラム全体はこちら→「m5stick_IFTTT」からダウンロードできます。
必要な部品たちができました
さて、これまでAmbientへのデータのアップロード、Ambientからデータの取得、IFTTT経由のTwitterの投稿ができるようになりました。これらを組み合わせて、見守り離床センサのプログラムを作っていきたいと思います。
つづく
2019.10.18 追加 ついに完成です
追加終わり
コメント
こんにちはいつも読ん勉強してます。
先生に質問出来る方法はありませんか。
こんにちは
市村様宛にメール送っております。何かございましたら、メール頂ければと思います。
もし、届いていなければ再送いたしますので、ご連絡下さい。
よろしくお願いします。