PR

【ESP8266】LINE通知を送る実験!簡単IoT活用

arduino

はじめに

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/)でアクセストークンを取得する必要があります。

  1. LINE Notifyにログイン。
  2. 「トークンを発行する」を選択。
  3. 通知を送りたいトークルームを選択(自分のLINE、グループなど)。
  4. トークン名を入力し、「発行」をクリック。
  5. 表示されたトークンをメモしておく(再取得不可)。

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に通知を送信するには、以下の手順を実施します。

  1. Arduino IDEの準備
    • ESP8266用のボードマネージャを追加し、NodeMCUなどを選択。
    • 必要なライブラリ(WiFiClientSecure など)をインストール。
  2. Wi-Fiの接続設定
    • SSID(Wi-Fiのネットワーク名)とパスワードを設定。
  3. 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通知システムを構築できます。

今後は、センサーと組み合わせたり、スマートホームとの連携を試したりして、より便利なシステムを作成してみましょう!

コメント

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