ろきメモ【ROKI MEMO】- ろきsanの備忘録 -

ろきさんの備忘録。プログラミング学習記録や開発記録、および学んだ知識等のアウトプットとシェアを目的に書いています。たまに普通のことも書きます。

【AWS IoT ボタンでメッセージ送信3】赤ちゃん記録でおしっこ・うんち・○っぱいをSlackへ送信

スポンサーリンク

赤ちゃんの記録を付けるためにAWS IoT ボタンを使い、おしっことうんちと○っぱいの度にボタンを押して、Slackに送信することで記録する。というのを作成した。
その備忘録をつける。


これは以前のAWS IoT 1-ClickでSMS送信のやつと、PythonでSlack送信していたやつを組み合わせると割と簡単にできた。
blog.rokisan.com
blog.rokisan.com


[前提]

  • 上記のリンクでAWS IoT 1-ClickでIoTボタンを押してSMS送信できていること

スポンサーリンク



1. Lambda関数作成

AWSコンソールでLambda関数をつくる。(デプロイツールとかめんどうなのでブラウザでやっちゃう)

Lambda > 関数 > 関数の作成
「一から作成」
f:id:ahrk-izo:20191231000702p:plain:w500

基本情報として、
関数名 : slack_notification(すきな関数名でよい)
ランタイム : Python 3.7
「関数の作成」
f:id:ahrk-izo:20191231000732p:plain:w500


そしてこの部分にコードを書く。
f:id:ahrk-izo:20191231001822p:plain:w500


コードは以下の通り。

from datetime import datetime, timezone, timedelta
import json
import os
import urllib.request


def lambda_handler(event, context):
    
    click_type = event['deviceEvent']['buttonClicked']['clickType']
    message = ''
    color = '#00bfff'
    if click_type == 'SINGLE':
        message = 'おしっこ!'
    elif click_type == 'DOUBLE':
        message = 'うんち!!'
        color = '#ffa500'
    elif click_type == 'LONG':
        message = 'おっぱい!'
        color = '#ffc0cb'

    dt_now_jst = datetime.now(timezone(timedelta(hours=9)))
    message += '({})'.format(dt_now_jst.strftime('%Y年%m月%d日 %H:%M:%S'))

    slack_message = {
        'attachments': [
            {
                'text': message,
                'color': color,
            }
        ]
    }

    url = os.environ['URL']
    method = 'POST'
    headers = {'Content-Type': "application/json"}
    json_data = json.dumps(slack_message).encode("utf-8")

    try:
        request = urllib.request.Request(url, data=json_data, method=method, headers=headers)
        with urllib.request.urlopen(request) as response:
            response_body = response.read().decode('utf-8')
            return response_body
    except Exception as e:
        raise e


環境設定も作成(必須ではないがテストで切り替えるときとか便利)
f:id:ahrk-izo:20191231001727p:plain:w500

残りはデフォルトのまま、右上の保存。
f:id:ahrk-izo:20191231002149p:plain:w500

これでLambda関数は完成。あとはAWS IoT 1-Clickサービスで作成したプロジェクトにこのLambda関数を設定するだけ(冒頭のSMS送信したリンクで作ったやつ)


2. AWS IoT 1-Clickのプロジェクトに作成したLambda関数を設定

AWS IoT 1-Click > 管理 > プロジェクト > 作成したプロジェクトを選択(SMS送信のやつ)
f:id:ahrk-izo:20191231002702p:plain:w500

テンプレートのアクション > 編集
f:id:ahrk-izo:20191231002910p:plain:w500

自分の電話番号でSMS送信する設定になっているから、これを編集する。
f:id:ahrk-izo:20191231003035p:plain:w500

アクションを「SMSを送信する」から「Lambda関数の選択」に変更
f:id:ahrk-izo:20191231003203p:plain:w300

リージョンを選んで、作成したLambda関数を選択する。
f:id:ahrk-izo:20191231003308p:plain:w300


これで完了。「プロジェクトの更新」をすればOK。