LINE Notifyがサービス終了するので、LINE公式アカウントに置き換える

簡単にLINEに通知が送れるLINE Notifyが、2025年3月31日にサービス終了するというアナウンスが出ています。

https://notify-bot.line.me/closing-announce

個人的にLINE Notifyを使って、マイコンやクラウドから自分のLINEに通知したりと使用していたので、他のサービスを使って置き換えてみました。

今回は、お試し的に[ATOMS3 Lite](https://www.switch-science.com/products/8778?_pos=46&_sid=dad346ad7&_ss=r)からのLINE通知を試します。
Arduino IDEのコードを紹介するので、Raspberry Pi Pico Wや他のマイコンでもOKだと思います。

![IMG_4352.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/697b3cd4-1c72-2a31-ef16-f8c1a9ac5926.jpeg)


## 置き換え先はLINE公式アカウント
アナウンスを見るとLINE公式アカウントのMessaging APIの利用を検討下さいと書いてあったので、LINE公式アカウントに置き換えたいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/f9e89178-41c0-49bd-01d4-54c01d86da42.png)

LINE公式アカウント自体は、以前に試した「[花粉のピークは過ぎたかもしれないけど、enebularで花粉bot作ってみた](https://qiita.com/jksoft/items/e05392bff71b7f153cdc)」でも扱ってました。
(アカウントの作り方などは、この記事も参考にして下さい)

## LINE公式アカウントの設定
### アカウントを作る
LINE Business IDでLINE Offical Account Managerにログインしたらアカウントタブから「作成」をクリックしてアカウントを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/1e147eb0-e505-bf03-089a-03448748072d.png)

各項目を入力します。今回は個人的に使うだけなので、業種は個人としてます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/0f50a71b-f52a-a4a1-8ea8-11d523bee951.png)

運用目的や主な使い方は次のように設定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/37055fe4-6758-7b4d-f8d5-c6d67a8ee3d6.png)

各同意確認の画面が表示されるので、同意します。

アカウントの作成はこれでOK

### アカウントの設定
アカウントを作ったらアカウントの設定画面が表示されます。
最初にアナウンスが表示されますが、メールアドレスでアカウントを作成した場合は、友だち追加のQRコードが表示されるので、このタイミングで通知をしたいLINEで友だち追加を行います。

最初にLINE Messaging APIを使って通知を行うには、チャンネルアクセストークンを発行する必要があります。
次の手順で発行します。

1. 「設定」を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/75a017db-30eb-7430-02c8-4a9f22ba71a7.png)
1. 「Messaging API」を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/ea1aa794-d2b1-4b3f-0e53-353bd0d2fa41.png)
1. 「Messaging API」を利用する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/0bec9d1f-1ade-a584-f898-6b3f5e4eda49.png)
1. プロバイダー名を入力し、「同意する」をクリックしてプロバイダーを作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/ee9884ad-3388-c9cb-39fb-bdeefb40d33f.png)
1. 個人的に利用する場合は、プライバシーポリシーと利用規約の登録は、空欄のままでOK。そのまま「OK」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/7bb6312b-5c23-599f-0a73-f75a6655e749.png)
1. LINE Developersを開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/74cb208d-3cba-7c11-fe19-ac83f1950351.png)
1. LINE Developersのコンソールを開く（通常、LINE Offical Account Managerでサインインしてる場合は、同じアカウントなのでそのまま開けます）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/59c51504-f10d-e530-b92e-aec5981f7477.png)
1. 作成したプロバイダー、チャンネルを開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/b1169ab0-bfe6-9a5a-ef07-4119e6b71c03.png)
1. 「Messaging API設定」を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/0655fd9a-f7ab-4223-4596-26522564ac11.png)
1. 下の方にあるチャンネルアクセストークンの発行をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/35d9a329-c658-4b2e-4951-bee04dfd5431.png)

チャンネルアクセストークンの発行はこれでOKです。
あとで、コピーボタンからコピーして、コードに貼ります。

## マイコン側のスケッチ
今回は、ATOM S3 Liteのボタンを押すと通知するようにスケッチを書いてます。
Arduino対応のマイコンであれば、一部を書き換えれば使用できると思います。

LINEのMessaging APIとしては、[ブロードキャストメッセージ](https://developers.line.biz/ja/reference/messaging-api/#send-broadcast-message)を使用しています。
このAPIは、友達全員にメッセージを送るためのAPIです。今回は個人的に使用するので問題ないですが、LINE公式アカウントを複数の人で使っている場合は、全員に同じメッセージが送信されます。

スケッチを使用する場合は、以下の部分を環境に合わせて書き換えて下さい

* `チャンネルアクセストークンを入力して下さい`　⇒　LINE Developersのコンソールで発行したチャンネルアクセストークン
* `Wi-FiのSSID`　⇒　接続するWi-FiのSSID
* `Wi-Fiのパスワード`　⇒　接続するWi-Fiのパスワード

```c++
#define CHANNEL_ACCSESS_TOKEN "チャネルアクセストークンを入力して下さい"

#include "M5AtomS3.h"
#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid = "Wi-FiのSSID";
const char* password = "Wi-Fiのパスワード";
const char* authorization ="Bearer " CHANNEL_ACCSESS_TOKEN;

// LINE Messaging API ブロードキャストメッセージで通知
void notify(char* message) {
  HTTPClient http;
  http.begin("https://api.line.me/v2/bot/message/broadcast");
  http.addHeader("Content-Type", "application/json");
  http.addHeader("authorization", authorization);
  char body[256];
  sprintf(body,"{\"messages\":[{\"type\": \"text\",\"text\":\"%s\"}]}",message);
  http.POST(body);
  Serial.println(http.getString());
  http.end();
}

void setup() {
  // M5ATOMS3 Lite用の初期設定
  auto cfg = M5.config();
  AtomS3.begin(cfg);
  // シリアルポート設定
  Serial.begin(115200);
  // Wi-Fi接続
  Serial.print("WiFi connecting.");
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(100);
  }

}

void loop() {
  AtomS3.update();
  // ボタンが押されているか判断
  if (AtomS3.BtnA.wasPressed()) {
    // ボタンが押された
    notify("ボタンが押されたよ");
  }
  delay(100);
}
```

## 動作確認
M5ATOM S3 Liteのボタンを押すと無事LINEに通知が飛びました。

![Screenshot_2024-11-11-15-10-59-667_jp.naver.line.android.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/d3eacae4-4be5-046a-e967-854f57bae5dc.jpeg)

## LINE NotifyとLINE公式アカウントとの違い
LINE Notifyは、LINEアカウントへの通知を簡単な設定で手軽に行えるサービスでしたが、LINE公式アカウントは、たくさんの機能があり、ビジネス向けにも利用されるサービスです。
最近、よく飲食店などでもLINEで、登録するとスマホで注文ができるようになったり、オトクな情報やクーポンなどの配信されていることがあると思います。そこに使用されているのがLINE公式アカウントです。

LINE Notifyはほぼ制限無し、無料で利用できましたが、LINE公式アカウントは無料で利用できる範囲に制限があります。（アカウントを有料プランで設定しなければ、利用できなくなるだけで請求されることはありません）

今回使用したブロードキャストメッセージのAPIも無料のプランだと月に200メッセージまでという制限があります。
メッセージ数ということで、友達が複数いる場合は、マイコンからの1メッセージにつき、送信先の友達分メッセージ数を消費します。また、他のAPIでも送信した先の分だけメッセージ数を消費します。

あと、基本的にLINEアプリから送ったメッセージに対するレスポンスのメッセージには制限がなく、使い放題です。なので、[以前の記事](https://qiita.com/jksoft/items/e05392bff71b7f153cdc)で紹介した様にLINE Botとして使用する分には無制限です。

料金プランや制限のあるAPIについては、以下を参照して下さい

https://www.lycbiz.com/jp/service/line-official-account/plan/

LINE公式アカウントでは、LINE Notifyの様に無料で利用しようとすると1日あたりだいたい6メッセージなので、頻繁に通知する用途には向かないと思います。

以上、LINE Notifyの置き換えとして参考にしてもらえればと思います。