I'm going home button
毎日仕事が終わった際に、これから帰るよ〜的なメッセージを LINE で送っているのですが、この作業をボタンにしてみたら便利かと思ってやってみました。
勉強のために勢いで買った AWS IoT エンタープライズボタンの使い道として手頃だったというのが本音…!
使うボタン
AWS IoT エンタープライズボタンを使います。
仕組み
AWS IoT 1-Click に AWS IoT エンタープライズボタンを登録し、ボタンの押下をトリガーに LINE へメッセージを送る Lambda 関数を実行しています。
手順
AWS IoT 1-Click への登録とボタンのインターネット接続設定
AWS IoT 1-Click アプリを使って設定できます。特に迷うことなく設定できました。
※ デバイスの ID を QR コードで入力できるのですが、カメラの距離感が割とシビアなのでそこだけ頑張る。
LINE Notify のトークンを発行する
LINE Notify のトークンは、マイページの「アクセストークンの発行(開発者向け)」以下の「トークンを発行する」ボタンから発行できます。
※ トークン発行後、設定したルームに LINE notify を招待するのを忘れずに…。
トークンを発行したら、 curl コマンドで動作確認できます。
curl -X POST -H "Authorization: Bearer <発行したトークン>" -F "message=test from curl" https://notify-api.line.me/api/notify
Lambda 関数の作成
LINE にメッセージを送る Lambda 関数を作成します。今回は Python を使って雰囲気で作成。
import os
import urllib.parse
import urllib.request
def lambda_handler(event, context):
LINE_TOKEN = os.environ.get("LINE_TOKEN")
LINE_NOTIFY_URL = "https://notify-api.line.me/api/notify"
msg = "おつにゃんです。今から帰ります〜。"
method = "POST"
headers = {"Authorization": "Bearer %s" % LINE_TOKEN}
payload = {"message": msg}
payload = urllib.parse.urlencode(payload).encode("utf-8")
req = urllib.request.Request(
url=LINE_NOTIFY_URL, data=payload, method=method, headers=headers)
urllib.request.urlopen(req)
※ トークンは環境変数に入れています。
Lambda 関数のトリガーに AWS IoT を追加します。
- トリガータイプは IoT ボタンを選択。
- 証明書とキーの生成、デバイスとインターネットとの接続設定項目があるが AWS IoT 1-Click アプリで既に行なっているので無視。
- トリガーを有効化する。
デバイスと Lambda 関数を紐付ける
AWS IoT1-Click コンソールから行います。
管理 > プロジェクト から作成ボタンを押し、以下の設定を行います。
- プロジェクト名、説明を入力して次へ。
- デバイステンプレートに全てのボタンタイプを選択、テンプレート名を入力し、アクションで「Lambda 関数の選択」を選択。
- Lambda 関数を作成したリージョンを選択すると候補の関数が表示されるので選択する。
- 最後にプロジェクトの作成ボタンを押す。
ここまででボタンを押せば LINE へメッセージを飛ばせるようになっているはず。
動作イメージ
こんな感じです。
今から帰るボタンできた。思ったよりあっさり出来て嬉しい。もう一個買っちゃおうかな😃 pic.twitter.com/IG6MU1ZvXp
— †鮮血の預言者† (@lorentzca) 2019年1月17日
設置
会社の自席に設置した!!
感想
楽しい。
Helck 1 (1) (裏少年サンデーコミックス) | 七尾 ナナキ |本 | 通販 | Amazon
位置情報から IFTTT で同様のことを完全自動で出来ますが、誤発や発動しない時があるのでその点でボタンで行うメリットがあるのかなと思っています。
今後は人間味を出すためにセリフをランダムで変えたりしていく!
面白かったので家でいじる用にもう一個買ってみようかな〜。