PR

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

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

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

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

姫野秀徳

組み込みエンジニアとしてメーカー勤務10年。
第二種電工事士、基本情報技術者、Code.org認定教師。
microbitを用いた電子工作&プログラミング教室を開校。
組み込み開発の実際を発信するyoutube活動も行う。

無料で学べる組み込み開発オンラインスクールはじめました!
https://kumicla.tatepro.com

姫野秀徳をフォローする

方法

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

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

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

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

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

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

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

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

LINE Notify
LINE NotifyはGitHub,IFTTT,MackerelなどのWebサービスからの通知を、LINEで受信することが出来る便利なサービスです。

画面右上のログインを押して、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
LINE Notify allows you to send web notifications from GitHub, IFTTT, Mackerel, and more directly to your LINE chats.

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

サンプルコードはこちら

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

GitHub - demes87/esp2line
Contribute to demes87/esp2line development by creating an account on GitHub.

まとめ

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

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

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

おまけ

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

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

この内容が良いと思ったら、いいね💖を押して教えてください!

組みクラ – 組み込み開発を学び、未来を創るエンジニアへ
無料で学べる!組み込み開発の基礎から応用までをマスターできるオンラインスクール「組みクラ」

組み込みエンジニアは、あらゆる産業の基盤を支える重要な職業です。
私たちタテプロは、次世代の組み込みエンジニアを育成し、業界の競争力を高めるために活動しています。
あなたも、無料で学べる「組みクラ」で、組み込み開発のスキルをしっかり身につけ、キャリアを加速させましょう!
今すぐ学び始めて、将来の自分をステップアップさせる第一歩を踏み出しませんか?

\立プロとLINEで友だちになりませんか/
立プロと友だちになる
組み込み機器
シェアしていただけると嬉しいです!

コメント

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