はじめに
IoTデバイスからの通知を受け取る方法として、LINEにメッセージを送信するのは非常に便利です。ESP8266を使えば、温度センサーの異常検知やドアの開閉通知などをLINEに送るシステムを簡単に作成できます。本記事では、ESP8266を使ってLINEに通知を送る方法を詳しく解説します。
必要なもの
ESP8266を使ってLINEに通知を送るために、以下のものを準備します。
- ESP8266開発ボード(NodeMCUやWemos D1 miniなど)
- USBケーブル(ESP8266とPCを接続)
- Wi-Fi環境
- LINE Notifyのアクセストークン(通知を送信するために必要)
- Arduino IDE(ESP8266の開発環境)
LINE Notifyのセットアップ
1. LINE Notifyのアクセストークンを取得する
LINE Notifyを使用するには、LINE Notifyの公式サイト(https://notify-bot.line.me/)でアクセストークンを取得する必要があります。
- LINE Notifyにログイン。
- 「トークンを発行する」を選択。
- 通知を送りたいトークルームを選択(自分のLINE、グループなど)。
- トークン名を入力し、「発行」をクリック。
- 表示されたトークンをメモしておく(再取得不可)。
2. LINE Notify APIの仕様
LINE NotifyのAPIは、https://notify-api.line.me/api/notify
に対してHTTP POSTリクエストを送信することで動作します。リクエストには以下のヘッダーを設定します。
Authorization: Bearer <アクセストークン>
Content-Type: application/x-www-form-urlencoded
ESP8266のセットアップと接続
ESP8266をWi-Fiに接続し、LINEに通知を送信するには、以下の手順を実施します。
- Arduino IDEの準備
- ESP8266用のボードマネージャを追加し、NodeMCUなどを選択。
- 必要なライブラリ(
WiFiClientSecure
など)をインストール。
- Wi-Fiの接続設定
- SSID(Wi-Fiのネットワーク名)とパスワードを設定。
- HTTPリクエストを送信
- LINE Notify APIにPOSTリクエストを送る。
ESP8266のコード(LINE通知の送信)
以下のコードをESP8266に書き込むことで、LINEに通知を送信できます。
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
const char* lineToken = "your_LINE_TOKEN";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi Connected");
sendLineNotification("ESP8266からの通知です!");
}
void sendLineNotification(String message) {
WiFiClientSecure client;
client.setInsecure();
if (!client.connect("notify-api.line.me", 443)) {
Serial.println("Connection failed");
return;
}
String query = "message=" + message;
client.print("POST /api/notify HTTP/1.1\r\n");
client.print("Host: notify-api.line.me\r\n");
client.print("Authorization: Bearer " + String(lineToken) + "\r\n");
client.print("Content-Type: application/x-www-form-urlencoded\r\n");
client.print("Content-Length: " + String(query.length()) + "\r\n\r\n");
client.print(query);
Serial.println("Message sent to LINE!");
}
void loop() {
}
応用例
ESP8266を使ってLINE通知を活用することで、さまざまな応用が可能です。
1. 温度・湿度センサーとの組み合わせ
DHT11やDHT22と組み合わせることで、温度が設定値を超えたときにLINEで警告を送ることができます。
2. ドアの開閉通知
マグネットセンサーを使って、ドアが開いたときにLINE通知を送るシステムを作成できます。
3. 水位センサーを使った警報システム
水漏れを検知した際に即座にLINEへ通知し、迅速な対応が可能になります。
よくあるトラブルと解決策
1. LINE通知が送られない
原因と対策
- Wi-Fiの接続を確認:ESP8266が正しくネットワークに接続されているか確認。
- トークンの誤り:アクセストークンが正しく入力されているか再確認。
- LINE Notifyの仕様変更:公式サイトで最新のAPI仕様を確認。
2. ESP8266がWi-Fiに接続できない
原因と対策
- SSIDやパスワードの誤入力:大文字小文字を含め正しく入力。
- Wi-Fiの2.4GHz帯を使用:ESP8266は5GHzには対応していない。
3. HTTPSリクエストが失敗する
原因と対策
client.setInsecure();
を設定し、証明書の検証を無効化する。WiFiClientSecure
の最新バージョンを使用する。
まとめ
本記事では、ESP8266を使ってLINEに通知を送る方法を解説しました。これを応用すれば、温度監視システム、ドア開閉検知、異常警報システムなど、さまざまなIoT通知システムを構築できます。
今後は、センサーと組み合わせたり、スマートホームとの連携を試したりして、より便利なシステムを作成してみましょう!
コメント