PR

【プログラム無料公開中!】ESP32でLINEにメッセージを送る方法と手順

ESP32でLINEにメッセージを送る方法と手順 組み込み機器

ESP32で測定・感知した結果をLINEに通知させたい

こうした悩みを解決します。

立プロ

新卒でメーカーに入り、10年間組み込みの現場で設計を行う。
今は個人事業主として自作の組み込み機器開発や、エージェント様に紹介いただき業務委託を行っています。
C,C#,JavaScript, Vue, PHP, VBA, GAS, Kotlinなど、扱う言語が増えゆく日々。

立プロをフォローする

方法

ESP32からLINEにメッセージを通知させるには、LINE Notifyを利用します。

WiFi環境下にいれば無料で使えます!

お手元にESP32があれば10分程度でささっと作れますよ。手順はざっとこんな感じです。

  • LINEトークンを取得する(LINE側はこれだけ)
  • ESP32をWiFiに接続
  • HTTPクライアントでヘッダにトークン情報を入れてメッセージを送信する

本記事の内容は動画でも紹介しています。

動作は下記の感じです(M5stamp picoを使用しています)。

LINEトークンの取得(LINE側)

LINE Notifyにログインします。
※PCにて操作すること。スマホだとトークン発行できない

LINE Notify
...

画面右上のログインを押して、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の通知系)を参照するとよいでしょう。

LINE Notify
...

これに従ってヘッダ情報やボディに内容を入れていきます。

サンプルコードはこちら

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をダウンロードして、置換するとすぐ試せますよ!

Build software better, together
...

まとめ

WiFi環境下でESP32からLINEに通知を送る方法をまとめました。

屋外使用だとWiFiがなく携帯回線が必要になることもありますね。

そういう用途の方はこちらの記事をどうぞ。

おまけ

原理が分かれば、別の事にも応用できます。

例えばGoogleスプレッドシートのスクリプト(=プログラム)不良が起こった時にLINE通知させるとか。

コメント

タイトルとURLをコピーしました