はじめに
WiFi対応しているRaspberry Pi4/5やPicoWで確実に使ってほしいLINE機能の紹介です。
センサ値が閾値を超えた際にLINEが来るようにしておけば、デバイス活用の幅が広がります。
LINE notifyについて
LINEnotifyは、LINEユーザーが特定のイベントや通知を自動的に受け取るためのサービスです。
これを利用することで、様々なウェブサービスやアプリケーションから、LINEアカウントにメッセージを送信することができます。
特徴と利点
- リアルタイム通知:指定された条件に基づいて、即座に通知を受け取ることができます。例えば、天気の変化や株価の変動、サーバーの状態監視などに使用できます。
- 個人からグループまで:メッセージは、個人のLINEアカウントに送るだけでなく、グループにも送信できます。これにより、チームで情報を共有することが容易になります。
- 簡単な設定:数分で設定が完了します。APIキーを取得し、簡単なコードやツールで通知機能を実装できます。
LINEnotifyの使い方
- アカウント登録: まず、LINEnotifyのウェブサイトにアクセスし、ログインします。
- トークンの取得: 通知を送信するためには、
アクセストークン
が必要です。これは、ユーザーが通知を受け取るために認証を行うものです。
ログイン → 右上のLINE idをクリック → マイページ → 画面下の「トークンを発行する」 - 通知の設定: トークンを取得したら、それを利用して通知を送るサービスやアプリケーションを設定します。
APIとは
APIは「Application Programming Interface」の略称。アプリケーションやサービス間でデータや機能をやり取りするためのインターフェースです。ここでは、身近な郵便番号検索APIを例に説明します。
郵便番号と住所のデータベースは、日本郵便が持っており、その一部を郵便番号検索APIという形で公開しています。APIの主な機能や利点は以下です。
郵便番号から住所を検索
ユーザーが郵便番号を入力すると、その郵便番号に対応する都道府県、市区町村、町名などの住所情報を返します。100-0001
という郵便番号を送信すると、「東京都千代田区千代田」という住所が返されます。
住所から郵便番号を検索
住所の一部を入力すると、それに対応する郵便番号を返します。「東京都千代田区千代田」という住所を送信すると、100-0001
という郵便番号が返されます。
APIの利点
ユーザー体験の向上:フォームに郵便番号を入力するだけで自動的に住所が補完される為、ユーザーがフォームを埋める手間が省け、入力ミスが減少します。
データの一貫性:常に最新の郵便番号データを使用できる為、住所情報が正確で信頼性が高くなります。
開発の簡便さ:APIを利用することで、私たちが膨大な住所データを管理する必要がなくなります。
メッセージと写真をLINEへ送信するプログラム
Raspberry Pi やRaspberry Pi Picoから”test1”というメッセージとtest2.jpgという画像ファイルをLINEへ送信する。
LINEnotifyの仕様書はこちら。
Raspberry PiやPCから送信する場合
requestsライブラリを使用します。メッセージの他、画像データも送信できます。
import requests
# LINEトークン、送信メッセージ、画像データのフルパスを入力
# 画像はjpgかpngのみ対応
token = '******************'
message = {'message': "test1"}
file = {'imageFile': open(r'C:\Users\**\**\test2.jpg, "rb")}
#以下はおまじない
url = 'https://notify-api.line.me/api/notify'
headers = {'Authorization': 'Bearer ' + token}
#リクエストを送信(画像無しなら、files引数は不要)
res = requests.post(url, data=message, files=file, headers=headers)
res.close()
Raspberry Picoから送信する場合
micropythonではurequestsライブラリになります。
requestsライブラリに対し、エンコード機能などが削除されているため、自分で対応する必要があります。
画像データは送信できません。
import urequests
# LINEトークン、送信メッセージを設定
# 画像データは送信不可能
token = '******************'
message = 'message=test1' # データを文字列として準備
# LINE Notify APIのURLとヘッダーを設定
url = 'https://notify-api.line.me/api/notify'
headers = {'Authorization': 'Bearer ' + token, 'Content-Type': 'application/x-www-form-urlencoded'}
# LINE Notify APIにPOSTリクエストを送信
res = urequests.post(url, data=message, headers=headers)
# レスポンスを確認
print(res.text)
res.close()
コメント