【ESP32】ESP WROOM 32をIFTTT連携する:LINE

⑴MacOSでESP-IDF環境を整える

⑵RN4020をESP32と通信させる準備

⑶ESP32とRN4020をBLEで通信させる

⑷ESP32からIFTTTを使ってLINEにメッセージを送る(イマココ!)

 

ESP32をIFTTTを連携させてLINEにメッセージを送ります。

開発環境はESP-IDF@MacOSです。

ヨメガンバッテルボタンでは、トリガー(頑張ってるボタンが10回押される)をきっかけに、

ESP32からIFTTTを利用してLINEメッセージが送られるような仕組みにしています。

今回はその例を紹介します。

 

仕組みとしては、IFTTTの設定で、あるURLにHTTP のGETリクエストを送ると、LINEへメッセージを送るようにします。

今回はGETリクエストとLINEを連携させているレシピを作っていますが、

その他にも色々使用できるサービスがあるので試してみると楽しいと思います。

 

【IFTTTの設定】

アカウントは適宜作成してください。

ログインしたら自分のアカウント名をクリック→New Appletと進みます。

 

if this then that でレシピが作成できるのでまずは、thisの設定をします。

thisをクリック→Search Serviceに “Webhooks” を入力します。

connetをクリック→Receive a web requestをクリック→Event nameを入力

 

 

 

次、thenを設定します。

上記同様、Search serviceに “LINE” を入力します。

 

 

connect→自分のLineのアカウント名とパスワードを入力→同意して連携する

 

 

レシピは適当にしてください。 create action をクリック。確認画面が出てくるので finishをクリック。

 

 

 

ESP32からGETリクエストを送る先のURLを調べます。

IFTTTにて自分のアカウント名をクリックしてServiceをクリック

先ほど登録した”Webhooks”があるのでクリック

WebhooksのDocumentationをクリック

 

 

KeyとGET先のURLが表示されます。コピペしておきます。

{event}となっているとことに、先ほど設定したEvent nameを入力します。

 

 

【ESP32のプログラム】

せっせとプログラムしていきます。

基本はESP-IDFのコピペで済ませます。https_requestのサンプルプログラムをちょこっと変えるだけでOK。

Wifiの設定などはこのページを参考にして設定。

GETリクエストを作成していきます。

 

#define WEB_SERVER "maker.ifttt.com"
#define WEB_PORT "443"
#define WEB_URL "https://maker.ifttt.com/trigger/SampleEvent/with/key/自分のKeyを入力"

static const char *REQUEST = "GET " WEB_URL " HTTP/1.0\r\n"
    "Host: "WEB_SERVER"\r\n"
    "User-Agent: esp-idf/1.0 esp32\r\n"
    "\r\n";

 

HTTPSリクエスト担っているので、pemはサンプルプロジェクトからコピーして使う。

xTaskCreateでタスクが作られて実行されますが、https_get_task関数で10秒に一回タスクが繰り返される処理になっています。

あるトリガーをきっかけにタスクを実行するような処理に書き換えます。

例としては下記のような感じ?

フラグがたったら処理されるようにして、一度リクエストが送られたらまたフラグを下げるような感じです。

exit:
        mbedtls_ssl_session_reset(&ssl);
        mbedtls_net_free(&server_fd);

        if(ret != 0)
        {
            mbedtls_strerror(ret, buf, 100);
            ESP_LOGE(TAG, "Last error was: -0x%x - %s", -ret, buf);
        }

        /*for(int countdown = 30; countdown >= 0; countdown--) {
            ESP_LOGI(TAG, "%d...", countdown);
            vTaskDelay(1000 / portTICK_PERIOD_MS);
        }*/
        while(buttonFlag){
            vTaskDelay(1000 / portTICK_PERIOD_MS);
        }
        
        ESP_LOGI(TAG, "Starting again!");

コメントを残す

メールアドレスが公開されることはありません。