ESP32でLINE Notify
はじめに
この記事ではESP32開発ボードからWiFi経由でLINE Notifyを利用してメッセージを送る方法について記述しています。使用している言語はMicropythonです。
この記事ではすでにESP32開発ボードがWiFiに接続されているものとしてサンプルコードを実行します。まだWiFi接続が完了していない場合は次のリンクの記事を参照してWiFI接続を行って下さい。
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は以下のリンクを参照して下さい。
Lineトークンの取得
-
PCで次のURLにアクセスし、画面右上の「ログイン」をクリックします。
https://notify-bot.line.me/ja/ -
下の画面が表示されるので、「QRコードログイン」をクリックします。
-
次の図のようにQRコードが表示されるので、スマホのカメラでQRコードをスキャンします。
QRコードの有効期限が切れると「QRコードの有効期限が切れました」と表示されるので、やり直します。
-
上手くいくと、スマホでLINEが立ち上がり、「ログインしますか?」と表示されるので、「ログイン」をタップします。
-
次にPC画面のQRコードが表示されていたところに認証番号(4桁の数字)が表示されるので、スマホ画面に入力します。
-
PC画面のログインと表示されていたところがLINEのIDに変わるので、クリックして表示されるプルダウンメニューから「マイページ」を選択します。
-
「アクセストークンの発行(開発者向け)にある「トークンを発行する」ボタンをクリックします。
- トークン名とトークルームの選択画面が表示されるので、トークン名には、例えば、「ボットテスト」とでも入力し、トークルームは「1:1でLINE Notifyから通知を受け取る」を選択し、「発行する」ボタンをクリックします。
ここで設定したトークン名は送信されるメッセーの前に表示されます。
9.44文字のトークンが発行されるので、どこかにコピペしておく。このトークンは他人に知られないように注意する必要があります。下のサンプルコードのTOKEN変数に設定する必要があります。
表示にあるように、新しく発行されたトークンは二度と表示されないので注意が必要です。
スマホのカメラでトークンが表示された画面を撮影しておくのも一つの方法です。
micropython-linenotifyのダウンロード
下のリンクからLINE Notifyのライブラリであるlinenotify.pyをPCにダウンロードし、ESP32開発ボードへ転送します。
- linenotify.pyをPCの適当なフォルダにダウンロードする。
- ダウンロードしたファイルを一旦、Thonnyに読み込み、 名前を付けて「MicroPythonデバイス」に保存する。
サンプルコード
プログラムの中の TOKEN = 'ここに取得したトークンを貼り付ける' の部分に取得したトークンを貼り付けます。
コピペ用 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:", result2)
実行結果
テキスト送信中
result: 200
スタンプ送信中
result2: 200
Lineの画面
送信可能なスタンプリスト
送信可能なスタンプについては次のリンクを参照して下さい。
送信可能なスタンプ(sticker)は国によって異なります。 他の国のものも探してみましょう。
また、GitHubからダウンロードしたlinenotify.pyモジュールの中にnotifyImageURL(self,url,msg='\n')
という関数も定義されていて、URLで指定する画像をLINEに送ることができるので、試してみて下さい。
Discussion