HaLake Magazine

コワーキングスペースHaLakeの技術情報発信サイト!IoT,AR,VRなど最新技術情報をお届け!

IFTTTを使ってESP32からSlackに通知する(入門)

f:id:mischief_cat:20200223105120j:plain 今回は題名の通りIFTTTを使ってWiFi経由でESP32からSlackに通知を送るまで初心者でもわかりやすく説明していきたいと思います。

前提条件

・Slackを使っていること
前回の記事の確認

目次

1.ハードウェア構成
2.IFTTTの簡単な使い方
3.動作確認
4.まとめ

1.ハードウェア構成

1.必要なもの

  • ESP32-WROOM-32 開発ボード
  • ブレッドボードなどの配線機材
  • タクトスイッチ

ハードウェア

f:id:mischief_cat:20200220172621p:plain
ハードウェア
画像"ハードウェア"を参考に配線してください。
また、D4->タクトスイッチ ->GNDと繋げばどんな配線でも構いません。

  • 注意:4本足があるタクトスイッチは画像のように対角同士で配線するようにしてください。

2.IFTTTの簡単な使い方

1.アカウント作成

まず下のURLにアクセスしアカウントの作成をします。

ifttt.com

f:id:mischief_cat:20200216162330p:plain
アカウント作成1
今回はメールアドレスで登録をしていきます。
f:id:mischief_cat:20200216162401p:plain
アカウント作成2

画像"アカウント作成1~2"を参考にアカウント作成を行ってください。

2.レシピ作成

IFTTTIF This Then Thatのそれぞれ頭文字を取ったのが名前の由来です。
そしてこのThisとThatを記述したのがレシピと呼ばれています。
このレシピの作成を行っていきたいと思います。

f:id:mischief_cat:20200216164306p:plain
レシピ作成1
右上の①のアイコンをクリックし②のCreateを開、
次にThisを追加するために③のあたりをクリックします。
f:id:mischief_cat:20200216165320p:plain
レシピ作成2
画像"レシピ作成2"の通り①にwebhooksと打ち検索すると②が出てくるので選択して次に進みます。
f:id:mischief_cat:20200216170954p:plain
レシピ作成3
画像"レシピ作成3"を参考に進め①にはイベントの名前を入れるので各々自由に名前を決めて入力してください。今回はesp32toSlack_IFTTTとして筆者は進めていきます。
f:id:mischief_cat:20200216172235p:plain
レシピ作成4
画像"レシピ作成4"を参考にThatをクリック後、検索欄にslackと入力し出てきたアイコンをクリックして次に進む。
f:id:mischief_cat:20200216174426p:plain
レシピ作成5
画像"レシピ作成5"を参考に指示に従い操作してください。
自分のSlackでワークスペースのURLがわからない場合は下のURLを参考にしてください。

slack.com

f:id:mischief_cat:20200216175048p:plain
レシピ作成6
f:id:mischief_cat:20200216175124p:plain
レシピ作成7
f:id:mischief_cat:20200220161903p:plain
レシピ作成8
画像"レシピ作成8"の①②は画像の通りに操作してください。
③は画像の通りではなくても良いので自分が送りたいメッセージを記述してください。
(筆者は画像の通り行っていきます。)
④のOptionと書かれた機能の紹介は省きます。
最後に⑤で説明した通り下にあるCreate actionををクリックする。
f:id:mischief_cat:20200220162058p:plain
レシピ作成9
f:id:mischief_cat:20200220163109p:plain
レシピ作成10
下のFinishボタンを押し、画像"レシピ作成10"のような画面になればレシピは完成です。

3.Your keyを調べる

今回は特定のアドレスにアクセスしたら通知が届くような機能なのでアクセスするためのYour keyを調べていきます。

f:id:mischief_cat:20200220164817p:plain
Your keyを調べる1
f:id:mischief_cat:20200223094928p:plain
Your keyを調べる2
画像"Your keyを調べる2"で青で囲まれた中のYour key is:の後の赤い太線の部分を後で使うのでメモかどこかにペースト保存しておいてください。

  • 注意:環境によってYour keyは環境によって違うので各自で確認しておいてください。

3.動作確認

では、動作確認をしていきましょう。
使うものはハードウェア構成で記述したもので行います。
また、今回はesp32を使うのでプログラムの書き込み方など開発環境などがわからない場合は前回の記事を参考に行ってください。
細かい説明などは省くのでここから先わからなければ先にそちらを読んでから進めてください。

1.ソフトウェア

#include <Wifi.h>
#include <HTTPClient.h>

const char* ssid     = "WiFiのssid";
const char* password = "WiFiのパスワード";

const String maker_Event = "esp32toSlack_IFTTT"; // Maker Webhooks
const String maker_Key   = "your key"; // Maker Webhooks
String url = "https://maker.ifttt.com/trigger/" + maker_Event + "/with/key/" + maker_Key;

int i = 0;
bool current_button_state = false;
bool before_button_state = false;
unsigned long counter = 0;
int http_code;


HTTPClient http;
void setup(){
    Serial.begin(115200);
    WiFi.begin(ssid,password);
    Serial.print("connecting to WiFi.");
    while(WiFi.status() != WL_CONNECTED){
        delay(100);
        i++;
        Serial.print(".");
        if(i == 100){
            i = 0;
            return;
        }
    }
    Serial.println("Connected!!");

    http.begin(url);

    pinMode(4,INPUT_PULLUP);
}

void loop(){
    if(digitalRead(4) == LOW){
        if(current_button_state == true) return;
        Serial.println("press!");
        current_button_state = true;
        if(!(millis() - counter >= 10000)) return;
        http_code = http.GET();
        if(!(http_code > 0)){
            Serial.println("request failed!! try again");
            return;
        }
        Serial.println("Send to Slack");
        counter = millis();
    }else{
        current_button_state = false;
    }
}

上記のプログラムの一部を各自の環境に合わせて書き換える必要があります。
* 4行目、二つの””(ダブルクオーテーション)の内側に自分が使っているWiFissidを追記
* 5行目、二つの””(ダブルクオーテーション)の内側に自分が使っているWiFiのパスワードを追記
* 8行目、二つの””(ダブルクオーテーション)の内側に先ほどメモかペースト保存しておいたyour keyを入れる

追記を終えたらesp32に書き込んでください。

2.動作内容

動作内容は起動後WiFiに接続しその後、ボタンを押したら自分で選択しておいたSlackに通知が届くようになっています。
しかし、短時間のうちに何回もアクセスしようとするとサーバ側に過剰な負荷をかけてしまうのでボタンを押しても最後にアクセスしてから約10秒たたないと再アクセスできないようになっています。(起動直後も10秒程度アクセスできないようになっています。)

  • 注意:筆者は初心者なためわかりにくいプログラムになっているかもしれません。
    無駄な構造になっていることもあるので飽くまで参考程度にしてください。よってプログラムの細かい説明は省くことにします。

Slackに画像"レシピ作成8"で設定しておいたTEST_Messageと送られてくれば無事動作確認の終了です。

4.まとめ

今回はIFTTTのアカウント作成からwebhookとSlackの連携を簡単に説明しました。
だらだらと説明と写真の連続で余計な部分が多く動作確認も緩すぎたかな?と思っています。(反省)
次記事にできたらesp32でHalakeにあるセンサから取得したデータをSlackに送ったり、別のサービスを連携してみるのもいいかもしらませんね。