devの忘備録

ソフト関連、raspberry piの忘備録

Raspberry Piの起動時にLINE NotifyでIPアドレスを通知する

Raspberry Pi3をIPアドレスをLineNotifyで通知しました。
Line Notifyとは、Webサービスやアプリから連携し、Lineへ通知するサービスです。
環境はRaspbian Jessie 8.0です。

1.Lineからパーソナルアクセストークンの取得

自分のLineへ通知する場合は、トークンを利用する必要があります。

以下のサイトからマイページにログインします。
notify-bot.line.me

トークンを発行する」をクリックします。
f:id:yu0123ji:20170528154701p:plain

トークン名を記述し、トークルームの選択で、
「1:1でLINE Notifyから通知を受け取る」を選択し、
「発行する」をクリック
f:id:yu0123ji:20170528160801p:plain

トークンが表示されます。
赤くモザイクになっている部分にトークンが書かれています。
このトークンを指定することで、LineNotifyに通知することが出来ます。
f:id:yu0123ji:20170528160807p:plain

2.IPを取得し、Line Notifyで通知

以下のように、message=以降に通知したい内容を入れれば、Lineに通知されます。
xxxxを取得したトークンに置き換えてください。

curl https://notify-api.line.me/api/notify -X POST -H "Authorization: Bearer xxxx" -F "message=test"
{"status":200,"message":"ok"}

以下のリンクに、APIの使い方が書かれています。
画像やスタンプも通知できるようです。
https://notify-bot.line.me/doc/ja/notify-bot.line.me

3.Raspberry Pi起動時に自動通知するように設定

Systemdで実行してもIPアドレスが取れなかったので、
rc.localを有効にしてIPアドレスを取得するようにしました。
rc.localよりもSystemdのほうが早く起動しているようですので、
そのため、IPアドレスが取れなかったのかもしれません。
Systemdでもタイミングを調整できれば、取得できるのかもしれませんが、
この辺は勉強不足です。

3.1 rc.local有効化

sudo raspi-config

Boot Optionsを選択、
f:id:yu0123ji:20170528223654p:plain

Wait for Network at Bootを選択すると、rc.localが有効になります。

3.2 起動時にIPアドレスを通知

rc.localを編集し、IPアドレスを通知するようにします。

sudo vi /etc/rc.local

以下のように編集しました。

_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  curl https://notify-api.line.me/api/notify -X POST -H "Authorization: Bearer xxxx" -F "message="$_IP
fi
exit 0

rebootすると、起動時にIPアドレスを通知するようになります。