【ESP32でAmazon自動注文ボタン】自作ボタンをクリックしたら、Lambda関数が実行されるようにする

DIY
スポンサーリンク

Amazon自動注文ボタンをESP32で作ろうとしています。
前回の記事でAWS IoT Coreと自作ボタンを接続できたので、本記事では自作ボタンをクリックしたらAWS IoT CoreからLambda関数を実行できるようにします。

●開発環境
(自作ボタンへのプログラム書込み、TeraTermでプログラムの画面出力)
・Windows 10 Home Ver.21H1
・Arduino IDE 1.8.12
・Tera Term Version 4.104(SVN# 8043)
●自作ボタン
・ESP32-DevKitC ESP-WROOM-32開発ボード
・MQTT by Joel Gsewiler バージョン 2.5.0
・ArduinoJson by Benoit Blanchon バージョン 6.18.3
●AWS Lambda
・Python 3.7

 

目次

 


 

はじめに

本記事は「ESP32でAmazon自動注文ボタン」の作成手順をまとめた連載記事の1つです。

前の手順

【ESP32でAmazon自動注文ボタン】AWS IoT Coreと自作ボタンを接続する
Amazon自動注文ボタンをESP32で作ろうとしています。 本記事はAWS IoT Coreと自作ボタンを接続する手順をまとめました。

 

次の手順

【ESP32でAmazon自動注文ボタン】自動購入スクリプトを作成する(ローカル環境で)
Amazon自動注文ボタンをESP32で作ろうとしています。 本記事はローカル環境で自動購入スクリプトを作成する手順をまとめました。

 

手順全体や関連情報まとめ

 

 

 

Lambda関数を作成する

まずは、AWS IoT Coreから実行されるLambda関数を作成します。
Lambda関数を作成する手順を以下に記載します。

  1. AWSマネージメントコンソールにログインする。
  2. AWS Lambda」にアクセスする。
  3. 左側のメニューから「関数」を選択し、「関数の作成」をクリックする。

 

  1. 「関数の作成」の画面で、「一から作成」のラジオボタンをクリックする。
  2. 「基本的な情報」を以下のように入力したら、右下の「関数の作成」をクリックする。
  • 関数名: 任意の関数名
  • ランタイム: Python 3.7
    • ※この後の手順で出てくるchromedriverが動作実績あるPythonバージョンに固定するため、あえて古いバージョンのものを選択しています。
  • アーキテクチャ: x86_64
  • [アクセス権限 > デフォルトの実行ロールの変更 > 実行ロール]: 「AWSポリシーテンプレートから新しいロールを作成」
  • [アクセス権限 > デフォルトの実行ロールの変更 > ロール名]: 任意のロール名
  • [アクセス権限 > デフォルトの実行ロールの変更 > ポリシーテンプレート - オプション]: 空欄

 

  1. Lambda関数のコードソースやテストが実行できる画面が開くので、以下記載のコードソースをコピペし、「Deploy」をクリックする。

【コードソース サンプル】

import json

def lambda_handler(event, context):
    print(event)

 

  1. 「関数xxxを正常に作成しました。」と表示されればOK。

 

 

 

AWS IoT Coreで特定のトピックを受信したら、Lambda関数を実行するようにします。
手順を以下に記載します。

  1. AWS IoT Core」にアクセスする。
  2. 左側のメニューから[ACT > ルール]をクリックし、「ルールの作成」をクリックする。
  3. 「ルールの作成」画面が開いたら、以下の情報を入力する。
  • 名前: 任意のルール名(例: pushButtonActionRule)
  • 説明: 任意の説明文
  • [ルールクエリステートメント > SQLバージョン]: 2016-03-23(変更なし)
  • [ルールクエリステートメント > ルールクエリステートメント]: 「SELECT * FROM '<ESP32がPublishするトピック名>'」(例: 「SELECT * FROM 'esp32/pub'」)

 

  1. 「1つ以上のアクションを設定する」の「アクションを追加」ボタンをリックする。
  2. 「アクションを選択してください」画面が開くので、「メッセージデータを渡すLambda関数を呼び出す」を選択し、「アクションの設定」ボタンをクリックする。
  3. 「アクションの設定」画面が開くので、「Lambda関数を作成する」で作成したLambda関数を選択して、「アクションの設定」をクリックする。
  4. 「ルールの作成」画面に戻るので、下部にある「ルールの作成」ボタンをクリックする。
  5. 「ルールは正常に作成されました。」と表示されればOK。

 

 

 

自作ボタンをクリックしたらLambda関数が実行されるか? 検証する

すでに前記事「【ESP32でAmazon自動注文ボタン】AWS IoT Coreと自作ボタンを接続する」で自作ボタンクリック⇒AWS IoT Coreで検知までは確認できているので、
ここではそのままLambda関数が実行されるかを確認します。

動作検証の手順は以下です。

  1. PCから自作ボタンにUSB接続し、Teraterm等でシリアル通信接続する。
  2. 自作ボタンの電源ONし、Teratermに「AWS IoT Connected!」と表示されるまで待つ。
  3. 自作ボタンをクリックする。(Teratermに「Button ON!!!」と表示されるはず)
  4. AWS CloudWatch」にアクセスする。
  5. 左のメニューから[ログ > ロググループ]を選択し、「ロググループ」内にある「/aws/lambda/関数名」のログループをクリックする。

 

  1. ログストリーム内にクリックした時刻付近のものがあるはずなので、それをクリックする。

 

  1. 自作ボタンからPublishされたデータが表示されていればOK!

 

 

もしうまく動作しなかった場合、、、

以下についてご確認ください。

  • Lambda関数のコードソースに誤りがないか?
  • AWS IoT Coreのルールクエリステートメントに誤りがないか?
  • ボタンクリックして、AWS IoT CoreではPublishが検出できているか?

 

 

 

さいごに

「ESP32でAmazon自動注文ボタン」に向けて、AWS IoT CoreからLambda関数が実行できるように設定しました。
引き続き、「ESP32でAmazon自動注文ボタン」の作成手順をまとめています。

前の手順

【ESP32でAmazon自動注文ボタン】AWS IoT Coreと自作ボタンを接続する
Amazon自動注文ボタンをESP32で作ろうとしています。 本記事はAWS IoT Coreと自作ボタンを接続する手順をまとめました。

 

次の手順

【ESP32でAmazon自動注文ボタン】自動購入スクリプトを作成する(ローカル環境で)
Amazon自動注文ボタンをESP32で作ろうとしています。 本記事はローカル環境で自動購入スクリプトを作成する手順をまとめました。

 

手順全体や関連情報まとめ

 

 

 

参考情報

 

以上!

コメント

タイトルとURLをコピーしました