背景など
本記事の位置づけ
以前にここで玄関2ロックのセサミを1ボタンで解錠するIFTTTボタンを作ってみた(AWS Lambda経由)という記事を書いたのですが、そのときに作ったLambda関数を応用して、こんなこともできるようにした、という感じの記事です。
先行事例
セサミの発売元であるCandyhosueさんが2018年に記事を出しており、筆者もこれを一度ハンズオンしてみました(AWS IoTボタンはその際に買ったもの)。しかしこの記事の手法だとセサミを1台しか解錠できないというものだったので、ボタン1発で2つのセサミを解錠したいなあ、と思ってこの記事の手法を作りました。
AWS IoTボタンってなに
こんなやつです。ボタン一つ押してやればAWS上にあるIoT 1-ClickとLambdaを刺激できるというボタンですね。
やったこと
1. AWS IoTボタンの登録とネットワーク接続
公式記事の
-
- 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でよいかと。
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関数の関連付け
公式記事の
-
- AWSでプロジェクトを作成する
-
- AWS IoT ボタンをリンクさせる
の手順を踏んで、IoTボタンとLambda関数の関連付けを行う。ボタンを押してセサミ2台が解錠すれば成功!!!