M5StackCからIFTTT経由でツイートするArduinoのプログラムを作ってみた

前回は、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にアクセスします。シリアルモニターは以下のようになります。

Congratulations! You’ve fired the ChangeWeight event

と表示されれば、正しくアクセスができています。

M5StackCの液晶にも、同じ文面が表示されます。

iPhoneにもツイートが届きました。これで、M5SticCからIFTTT経由でツイートできるようになりました。

もう一度ボタンAを押すと、シリアルモニタには「Congratulations! You’ve fired the ChangeWeight event」と表示されますが、Twitterの通知は届きません。どうも同じ文面だと、スパム扱いされて消去され届かないようです。

M5StackCのプログラム全体はこちら→「m5stick_IFTTT」からダウンロードできます。

必要な部品たちができました

さて、これまでAmbientへのデータのアップロード、Ambientからデータの取得、IFTTT経由のTwitterの投稿ができるようになりました。これらを組み合わせて、見守り離床センサのプログラムを作っていきたいと思います。

つづく

電子工作

関連記事

kohacraftのblog

コメント