目的:自宅のRaspberry Piからスマホへプッシュ通知を行う。
プッシュ通知サービスはPushbulletをはじめ多々ありますが、スマホ側で専用アプリをインストールする必要があり、グループ内で通知を受けたい場合など煩わしい思いをいていました。どうせならプッシュの受け取りをLINEへ統合したいと考えたので実践してみました。
WebサービスやSNSを連携させることができるIFTTT(イフト)が、LINEと連携できるようになったので、これを仲介させてもらいます。
まずはIFTTTのユーザ登録から
次の下準備が必要です。
- IFTTTのユーザ登録
- LINEのメールアドレス・パスワード登録
IFTTT〜LINEの連携
まず、IFTTTのLINE連携ページで自分のLINEを登録します。
https://ifttt.com/line
LINEのメールアドレスとパスワードを入力して「同意して連携」するを選択。簡単ですね。
連携されると、LINEへ通知が来ます。
Raspberry Pi→IFTTTへの通知
こちらの連携にはIFTTTのWebhooksを利用します。
https://ifttt.com/maker_webhooks
Webhooksと接続したのち、Settingを開きます。
通知先のURLを確認します。Raspberry Piからこのアドレスへメッセージを送信すれば、IFTTTがLINEへ投げてくれるという仕組みです。ここで大切なのは/use/のあとの英数文字列(Your Key)です。後から使うのでメモしてくださいね。
さて、WebhooksとLINEを結びつけることも必要です。My Appletsのページで新しいAppletを作成します。
https://ifttt.com/my_applets
if this then that と出てきます。「もし~なら、こうする」ってやつですね。まずはトリガーとなる「this」を選択します。
サービス一覧が表示されます。この中からWebhooksを選べばよいのですが、数が多いので、検索したほうが楽です。
トリガーの選択画面になりますが、1つしかありませんので、コレを選択します。URLへのWebリクエストがトリガーとなります。
リクエスト先のURLへ付加するイベントネームを記入します。Raspberry Piからのリクエストだよという感じで、名前は「raspberry_pi」にしておきました。
これで「もし~なら、こうする」のifの部分が完成。次はthatの部分を選びましょう。
また、サービス一覧が表示されます。LINEへメッセージを送りたいので、アクションサービスは「LINE」を選びます。これも検索で見つけましょう。
アクションは、これも1つしかないですね。
LINEへどんなメッセージを送るか編集できます。Recipientをデフォルトから変更すれば、グループLINEへメッセージを送ることができます。家族グループにすれば用途によっては便利ですね。
これで完成です。IFTTTではこのWebサービスを連携させたものをレシピと呼びます。今回は「もしWebhooksのURLにリクエストが来たら、LINEへメッセージを送信する」を作成しました。
Raspberry Pi からIFTTTへリクエストを送信する
Webhooksの指定URLへリクエストを送信すれば、自分のLINEへメッセージが届くはずです。まずはRasbperry Piのコンソールを立ち上げましょう(それかSSHでログインします)。
以下のシェルスクリプト(post.sh)を作成します。
#!/bin/bash
URL="https://maker.ifttt.com/trigger"
EVENTNAME="raspberry_pi"
YOUR_KEY="ここにYour keyを入力"
WEBHOOKSURL="${URL}/${EVENTNAME}/with/key/${YOUR_KEY}"
curl -X POST -H "Content-Type: application/json" -d \
'{"value1":"'$1'","value2":"'$2'","value3":"'$3'"}' \
${WEBHOOKSURL}
echo
exit 0
内容は、シェルスクリプト実行時の引数で受けたメッセージ(最大3つまで)をWebhooksのURLへcurlでポストします。
※スクリプト中の「EVENTNAME」は先ほどレシピ作成時に指定したもの(raspberry_pi)、「YOUR_KEY」は自分のものを入力します。
このスクリプトへ実行権限をつけます。
$ chmod 755 post.sh
Raspberry Pi(Raspbian)にはデフォルトでcurlが入っていないためインストールします。
$ sudo apt-get install curl
そして、いざ送信
post.shを実行するだけ。引数でLINEへ送信するメッセージを渡します。最大3つまでです。
$ ./post.sh aaa bbb ccc
うまくいけば、コンソール上へ「Congratulations!」と表示される。もちろんLINEにも
おわり