I'm going home button

I'm going home button

毎日仕事が終わった際に、これから帰るよ〜的なメッセージを LINE で送っているのですが、この作業をボタンにしてみたら便利かと思ってやってみました。

勉強のために勢いで買った AWS IoT エンタープライズボタンの使い道として手頃だったというのが本音…!

使うボタン

AWS IoT エンタープライズボタンを使います。

仕組み

AWS IoT 1-Click に AWS IoT エンタープライズボタンを登録し、ボタンの押下をトリガーに LINE へメッセージを送る Lambda 関数を実行しています。

Product-page-diagram_IoT-1-Click.7545a3853b28080b009d6f1ef89d968c78f4d64e

AWS IoT 1-Click

手順

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 へメッセージを飛ばせるようになっているはず。

動作イメージ

こんな感じです。

設置

会社の自席に設置した!!

IMG_3890

感想

楽しい。

helck

Helck 1 (1) (裏少年サンデーコミックス) | 七尾 ナナキ |本 | 通販 | Amazon

位置情報から IFTTT で同様のことを完全自動で出来ますが、誤発や発動しない時があるのでその点でボタンで行うメリットがあるのかなと思っています。

今後は人間味を出すためにセリフをランダムで変えたりしていく!

面白かったので家でいじる用にもう一個買ってみようかな〜。