カテゴリー
python requests

pythonからスマホのiftttに通知を送る

電子工作をしていて、スマホに通知を送りたいときがあります。(センサーに何かが反応したときなど)

簡単に送る方法としてはlineがあると思います。
教室でもよくline notifyをつかって通知を送っていますが、今回はiftttを使った方法を紹介したいと思います。

まず、iftttのアカウントを作り、スマホにiftttのアプリをいれます。ログインしてcreateをクリックします。

この画面でトリガーとなる「If This」をクリック

検索窓に「web」など入力してWebhooksを選択します。

今回は「Choose a trigger」で「Raceive a web request」を選択します。左のJSON payloadは、postしたJSONを加工して使う場合に選択するっぽいです。

次に「Event Name」をつけます。今回はnotificationにしました。そして「Create trigger」をクリックすればトリガーは完成です。

イベントとなる「Then That」をクリックします。

先ほどと同様にして「Notifications」を選択します。

左の「Send a notification from the IFTTT app」を選択します。中央のrichのほうはurlなども送信したりできますが、今回は簡単なほうを選択しました。

Message部分を自分の好きに変更します。
「add ingredient」を押すと、先ほど入力したEventName(今回はnotification)とvalue1~3(後述),OccurredAt(時刻)をメッセージに挿入できます。

今回は上のようなメッセージにしました。create acitonの後に名前を付けてfinishします。

そしての下のサイトの「documentation」をクリックします

https://ifttt.com/maker_webhooks

リンク先のページの中段の「To trigger an Event with 3 JSON values」の赤丸部分を入力します。EventNameは今回はnotificationです。黒塗りの部分は自分のapi keyです。
value1~3に好きな文字を入力しましょう。

水色の「Test it」を押すとスマホアプリに通知が来ます。

こんな感じで通知が来ればテスト成功です。
文章はしっかり間違ってました(笑)テストは重要です。

import requests

# 自分のapi key
api_key = "****************"
url_data = {"event":"notification","key_str":api_key}
url = "https://maker.ifttt.com/trigger/{event}/with/key/{key_str}".format(**url_data)
data = {"value1":"例の件", "value2":"状況が変わったので実行", "value3":"明日23時ハチ公"}

try:
    r = requests.post(url, data=data)
except requests.exceptions.RequestException as e:
    print(e)

pythonのrequestsで通知を送るコードを書いてみました。
api keyは先ほどの黒塗りの部分になります。
dictのキーをvalue1~3にして、バリューを送信したい文字列にしましょう。

下のような通知がスマホに届きました。

iftttは以前は非常に広く使われていましたが、有料版開始の際に無料版の機能がかなり制限されました。しかし、現在でも気軽に使えるツールだと思います。
通常、webhookを使用するには自分でサーバーを立てるか、サーバレスならAmazon API Gateway+AWS lambdaなどを使うことになるので。