ESP32で測定・感知した結果をLINEに通知させたい
こうした悩みを解決します。
方法
ESP32からLINEにメッセージを通知させるには、LINE Notifyを利用します。
WiFi環境下にいれば無料で使えます!
お手元にESP32があれば10分程度でささっと作れますよ。手順はざっとこんな感じです。
- LINEトークンを取得する(LINE側はこれだけ)
- ESP32をWiFiに接続
- HTTPクライアントでヘッダにトークン情報を入れてメッセージを送信する
本記事の内容は動画でも紹介しています。
動作は下記の感じです(M5stamp picoを使用しています)。
LINEトークンの取得(LINE側)
LINE Notifyにログインします。
※PCにて操作すること。スマホだとトークン発行できない
画面右上のログインを押して、QRコードログインする
ログインすると、画面右上の表示が”ログイン”⇒”ユーザー”名に変更されているので、ユーザー名からマイページをクリック
「トークンを発行する」ボタンを押して、トークン名を入力、トークルームを選択してトークンを発行。
あらかじめLINE Notifyを追加したトークルームしか選択できないので要注意!
ここで発行したトークンはHTTPリクエストヘッダに使用します
これだけです、簡単!
WiFi接続(ESP側)
WiFiに接続します。HTTPリクエストを送るのに、WiFiネットワークを利用するので。
以下サンプルコードです。
#include <WiFi.h>
String ssid = "*****"; // Wi-FiのSSID
String password = "*****"; // Wi-Fiのパスワード
void WIFIconnect(void){
if(WiFi.status() == WL_CONNECTED) return; //予め接続されていたら戻す
WiFi.begin(ssid.c_str(), password.c_str());
int i = 0;
while(WiFi.status() != WL_CONNECTED){
delay(100);
i++;
if(i >= 50) return; //5secで強制中断
}
}
こうしたコードは自分で作らず、サンプルプログラムからのコピペで十分です。
私がオススメなのはFreenove社のESP32WroverKitです。詳細は下記どうぞ。
HTTPリクエスト送信(ESP側)
HTTPリクエストの書き方は、まず公式(LINE Notify APIの通知系)を参照するとよいでしょう。
これに従ってヘッダ情報やボディに内容を入れていきます。
サンプルコードはこちら
void Sendmsg2LINE(String body){
httpClient.begin("https://notify-api.line.me/api/notify");
httpClient.addHeader("Content-Type", "application/x-www-form-urlencoded");
httpClient.addHeader("Authorization", "Bearer " + LINE_NOTIFY_TOKEN);
// 送信、LINE Notifyからの戻り値を変数に格納
u_int status_code = httpClient.POST("message=" + body);
//戻り値次第で何かする
if (status_code == 200){ //送信OK
//do anything
} else{ //送信NG
//do anything
}
httpClient.end();
}
はまったポイント
私はESP32Wroverで実装していますが、HTTPClient.cppがM5stack.hのインクルードを含んでいたためにエラーとなりました。
HTTPClient.cppのM5stack.hインクルードをコメントアウトして対処できました。
設計時の疑問と答え
送信間隔に制限はある?
⇒APIコールは1時間に1000回の回数上限有
トークンはいくつまで発行できる?
⇒1ユーザーあたり100
ビジネスアイデアとして
ボタンを押したら通知、加速度センサや温湿度センサなどの信号がしきい値超えたら通知とか色々できそう。
ササっと作って製品化でき次第、更新しますね。
サンプルプログラム無料公開中!
Githubに本記事のサンプルプログラムを置いてます。
main.cppをダウンロードして、置換するとすぐ試せますよ!
まとめ
WiFi環境下でESP32からLINEに通知を送る方法をまとめました。
屋外使用だとWiFiがなく携帯回線が必要になることもありますね。
そういう用途の方はこちらの記事をどうぞ。
おまけ
原理が分かれば、別の事にも応用できます。
例えばGoogleスプレッドシートのスクリプト(=プログラム)不良が起こった時にLINE通知させるとか。
コメント