Home AssistantからLine Messaging APIを実行する
Line Notifyがサービス終了するということで、代替として推奨されているMessaging APIでメッセージをポストするように設定していきます。
LINE Botの設定
まず、LINE Botを作成し、チャネルアクセストークンを取得します。
手順については、以下の記事などを参考にしてください。
(参考: LINE公式アカウントの作成 / LINE Botの初め方 2025年更新)
同じ画面にあるQRコードを使ってBotを友達登録しておきます。
また、「チャネル基本設定」にある「あなたのユーザーID」を控えておきます。
Home Assistantの設定
Home Assistant用のカスタムコンポーネントもありますが、LINE Messaging APIの仕様を確認したところ、メッセージ送信は単純なREST APIのようです。
そこで、Home Assistantにデフォルトで備わっているRESTful Notificationsを使ってAPIを呼び出すことにします。
メッセージの仕様はいくつかありますが、特定のユーザーにメッセージを送信するプッシュメッセージを使います。
まず、これを使って自分にメッセージを送信できるようにします。(メッセージを送信するには、あらかじめ友達登録が必要です)
私の環境ではHome Assistantの設定を別ファイルに分割しているため、それぞれのファイルに設定を記述します。通常はconfiguration.yaml
に記述すれば問題ありません。
secret.yaml
line_channel_access_token: 'Bearer <上で確認したチャネルアクセストークン>'
notify.yaml
- name: LINE_me
platform: rest
resource: https://api.line.me/v2/bot/message/push
method: POST_JSON
headers:
Authorization: !secret line_channel_access_token
Content-Type: application/json
data:
to: <上で確認した自分のユーザーID>
messages:
- type: text
text: "{{ message }}"
グループLINEへの投稿
私は家族でLINEグループへLINE Notifyも追加して各種通知を送信していました。次はBotからこのグループに投稿するための設定も行っていきます。
まずはあらかじめグループにBotを追加しておきます。
特定のグループにメッセージを送信するには、ユーザーIDの代わりに「グループID」を指定する必要があります。
ですがこのグループID、GUIから確認する手段が用意されていません(少なくとも私は見つけられなかった)
私はLINEのWebhook機能とHome AssistantのWebhook Triggerを使って取得しました。この方法を使うには、Home Assistantがインターネットに公開されている必要があります。
グループID取得方法
-
LINE Botの設定画面でWebhookを有効にします
Webhook URLは「https://<Home Assistant公開ホスト名>/api/webhook/<Webhook Trigger名>」です。
Webhook Trigger名は任意の文字列です。このTrigger名をHome Assistantでも使います。 -
Home Assistantに以下のAutomationを作成します
alias: Get LINE group ID triggers: - webhook_id: <上で設定したWebhook Trigger名> allowed_methods: - POST local_only: false trigger: webhook actions: - action: notify.line_me data: message: 'User ID: {{ trigger.json.events[0].source.userId }}' - action: notify.line_me data: message: 'Group ID: {{ trigger.json.events[0].source.groupId }}'
-
グループ内で発言します
-
Botから自分宛にグループIDと発言した人のユーザーIDが投稿されてきます
グループ投稿用Notifyサービスの設定
取得したグループIDを使って、グループ投稿用のNotifyサービスを設定します。
ID以外は上記の設定と同じです。
notify.yaml
- name: LINE_family
platform: rest
resource: https://api.line.me/v2/bot/message/push
method: POST_JSON
headers:
Authorization: !secret line_channel_access_token
Content-Type: application/json
data:
to: <グループID>
messages:
- type: text
text: "{{ message }}"
以上で設定は完了です。
LINE Notifyを使っていたAutomationを修正し、動作確認後、LINE Notify関連の設定を削除します。
以前使用していたカスタムコンポーネントを削除し、Home Assistantを再起動します。 各種設定ファイルからLINE Notifyに関する記述を削除すれば、置き換えは完了です。
以上です。
参考資料
関連記事
- Home AssistantのデプロイをHass.ioにした
- ホームオートメーションの現状まとめ@2017
- Home AssistantとAmazon Dash Buttonを連携させる
- Home Assistantで人感センサーを使って照明を自動点灯する
- Home Assistantでつくるホームオートメーション(導入編)