玄関2ロックのセサミをAWS IoTボタン1回押しで解錠できるようにしてみた


背景など

本記事の位置づけ

以前にここで玄関2ロックのセサミを1ボタンで解錠するIFTTTボタンを作ってみた(AWS Lambda経由)という記事を書いたのですが、そのときに作ったLambda関数を応用して、こんなこともできるようにした、という感じの記事です。

先行事例

セサミの発売元であるCandyhosueさんが2018年に記事を出しており、筆者もこれを一度ハンズオンしてみました(AWS IoTボタンはその際に買ったもの)。しかしこの記事の手法だとセサミを1台しか解錠できないというものだったので、ボタン1発で2つのセサミを解錠したいなあ、と思ってこの記事の手法を作りました。

AWS IoTボタンってなに

こんなやつです。ボタン一つ押してやればAWS上にあるIoT 1-ClickとLambdaを刺激できるというボタンですね。

やったこと

1. AWS IoTボタンの登録とネットワーク接続

公式記事

  • 2. AWS lot 1 clickのアプリを設定する

の手順を踏むだけでOK。

2. APIキーと2台ぶんのセサミIDの取得

以下の記事の 1. の記述の要領で、APIキーとセサミIDを得ておく。

3. Lambda関数の準備

3-1. 関数の立ち上げと pysesame2 のアップロード

以下の記事の 2-1.2-2. 記述の要領で、AWS Lambdaから関数を立ち上げて外部モジュール pysesame2 を上げておく。

3-2. Pythonコードの記述

次のようなコードを記述。なおPythonのバージョンですが3.8でよいかと。

lambda_function.py
from uuid import UUID
from pysesame2 import Sesame
import os

device_id_1 = UUID(os.environ['DEVICE_ID_1'])
device_id_2 = UUID(os.environ['DEVICE_ID_2'])
APIKey = os.environ['APIKEY']
sesame_1 = Sesame(device_id_1, APIKey)
sesame_2 = Sesame(device_id_2, APIKey)

def lambda_handler(event, context):
    sesame_1.async_unlock()
    sesame_2.async_unlock()

コードが書けたらその下の「環境変数」に、手順 1. で得たAPIキーと2台のセサミIDを1つずつ書いて保存する。

3-3. テスト

以上までできたら画面右上の「テスト」から、関数のテストを実行する。流し込むJSONはhello worldでもなんでもOK。セサミ2台が解錠すれば成功。

4. IoT 1-Clickプロジェクトの作成と、ボタンとLambda関数の関連付け

公式記事

  • 4. AWSでプロジェクトを作成する
  • 5. AWS IoT ボタンをリンクさせる

の手順を踏んで、IoTボタンとLambda関数の関連付けを行う。ボタンを押してセサミ2台が解錠すれば成功!!!