🐝

ESP32でLINE Notify

2023/05/16に公開


はじめに

この記事ではESP32開発ボードからWiFi経由でLINE Notifyを利用してメッセージを送る方法について記述しています。使用している言語はMicropythonです。
この記事ではすでにESP32開発ボードがWiFiに接続されているものとしてサンプルコードを実行します。まだWiFi接続が完了していない場合は次のリンクの記事を参照してWiFI接続を行って下さい。
https://zenn.dev/iot101/articles/28dc7fac20aa64

In English

This article describes how to send line notify using ESP32 development board and Micropython in Japanese.

基礎知識

LINEではMessaging APIと公開しています。
Messaging APIはWebサービスなどとLINEユーザの双方向のコミュニケーションを可能にする機能です。

この記事ではLINE Messaging APIのLINE Notifyを使用してメッセージを送信します。
LINE Notifyの特徴は次の通りです。

  • 自分や自分の含まれるグループへメッセージを送れる。
  • テキストだけでなく、スタンプも送れる。

LINE Notify API Documentは以下のリンクを参照して下さい。
https://notify-bot.line.me/doc/ja/

Lineトークンの取得

  1. PCで次のURLにアクセスし、画面右上の「ログイン」をクリックします。
    https://notify-bot.line.me/ja/

  2. 下の画面が表示されるので、「QRコードログイン」をクリックします。
    altトークン取得画面

  3. 次の図のようにQRコードが表示されるので、スマホのカメラでQRコードをスキャンします。
    QRコードの有効期限が切れると「QRコードの有効期限が切れました」と表示されるので、やり直します。
    altQRコードのスキャン

  4. 上手くいくと、スマホでLINEが立ち上がり、「ログインしますか?」と表示されるので、「ログイン」をタップします。

  5. 次にPC画面のQRコードが表示されていたところに認証番号(4桁の数字)が表示されるので、スマホ画面に入力します。

  6. PC画面のログインと表示されていたところがLINEのIDに変わるので、クリックして表示されるプルダウンメニューから「マイページ」を選択します。

  7. 「アクセストークンの発行(開発者向け)にある「トークンを発行する」ボタンをクリックします。
    altトークン発行画面

  8. トークン名とトークルームの選択画面が表示されるので、トークン名には、例えば、「ボットテスト」とでも入力し、トークルームは「1:1でLINE Notifyから通知を受け取る」を選択し、「発行する」ボタンをクリックします。
    ここで設定したトークン名は送信されるメッセーの前に表示されます。

9.44文字のトークンが発行されるので、どこかにコピペしておく。このトークンは他人に知られないように注意する必要があります。下のサンプルコードのTOKEN変数に設定する必要があります。
表示にあるように、新しく発行されたトークンは二度と表示されないので注意が必要です。
スマホのカメラでトークンが表示された画面を撮影しておくのも一つの方法です。

micropython-linenotifyのダウンロード

下のリンクからLINE Notifyのライブラリであるlinenotify.pyをPCにダウンロードし、ESP32開発ボードへ転送します。

https://github.com/PerfecXX/micropython-linenotify

  1. linenotify.pyをPCの適当なフォルダにダウンロードする。
  2. ダウンロードしたファイルを一旦、Thonnyに読み込み、 名前を付けて「MicroPythonデバイス」に保存する。

サンプルコード

altlinebot1.py

コピペ用 linebot1.py
linebot1.py
# Line Bot test program
# Apr.14th 2023
# https://github.com/PerfecXX/micropython-linenotify

from linenotify import LineNotify

# Line token
TOKEN = 'ここに取得したトークンを貼り付ける'

# Make instance
line = LineNotify(TOKEN)

# Send text message
print("テキスト送信中")
result = line.notify('こんにちは。Line Botです。')
print("result:", result)

# Show sticker/stamp
print("スタンプ送信中")
result2 = line.notifySticker(3,230,'これはスタンプです。')
print("result2:", result)

実行結果

テキスト送信中
result: 200
スタンプ送信中
result2: 200

Lineの画面
altLineの画面

送信可能なスタンプリスト

送信可能なスタンプについては次のリンクを参照して下さい。

https://developers.line.biz/ja/docs/messaging-api/sticker-list/

Discussion