AWS
IoT
awsIoT
iot-1-click

AWS IoT 1-Click と IoT エンタープライズボタンのセットアップ&動作確認

AWS IoT 1-Clickとは

Lambda 関数を対応デバイスからトリガーできるサービスです。
昨年の AWS re:Invent 2017 で発表されていました。
https://aws.amazon.com/jp/iot-1-click/

現状の対応デバイスとして AWS IoT Enterprise Button と AT&T LTE-M Buttonがあるようですが
AWS IoT Enterprise Button が Amazon.co.jp で購入できるようになりました。

準備の準備

AWS IoT エンタープライズボタン

Amazon.co.jpから購入します。
AWS IoT エンタープライズボタン
http://amzn.asia/cZPbDnF

1つあたり、2,500円です。
ちなみに AWS IoT 1-Click の利用料はアクティブなデバイス数で課金されます。
1,000台までは1台あたりの月額料金が$0.25 です。
https://aws.amazon.com/jp/iot-1-click/pricing/

AWS IoT 1-Click モバイルアプリ

お使いのスマートフォンにインストールします。
https://itunes.apple.com/app/id1315204832
https://play.google.com/store/apps/details?id=com.amazonaws.oneclick

デバイスの登録

モバイルアプリを起動し、AWSアカウントにログインします。
IAMユーザでログインするには、アカウントIDまたはIDに設定しているエイリアスを入力します。

ログインできたら必要に応じてリージョンを変更し、
デバイスIDで登録 からデバイスIDのスキャンを行います。
カメラが起動したらQRコードまたはバーコードを読み込ませます。
ボタンの裏に記載されているQRコードがとても小さいので、届いた際の段ボールケースに貼られている
バーコードをスキャンする方が楽でした。

続いてWi-Fiの設定を行います。

Bluetoothを有効にしてWi-Fiの接続情報を入力したら、ボタンを長押ししてデバイスを設定します。

最後にもう一度ボタンを押せば、登録完了です。
残りのライフ・・・。寿命は約2000回とのこと。電池持ちの問題でしょうか。

AWS側の設定

モバイルアプリからも設定が行えますが、ここではマネジメントコンソールで操作を行います。
マネジメントコンソールからAWS IoT 1-Clickにアクセスします。

image.png

管理→デバイスから登録したデバイスを確認できます。
デバイスのリージョンがus-west-2になってますが、これは問題ないようです。
https://docs.aws.amazon.com/iot-1-click/latest/developerguide/1click-appendix.html

image.png

続いてプロジェクトの作成を行います。

image.png

プロジェクト名、説明(省略可)を入力し、

image.png

デバイステンプレートの定義の開始を選択します。

image.png

さらにすべてのボタンタイプを選択すると、

image.png

テンプレート名とアクションを設定できます。
「SMS を送信する」と「Eメールの送信」がサンプルとして用意されていますが、
ここでLambda 関数の選択 を選ぶと任意のファンクションを実行できるようですね。

image.png

まずは試しに「SMS を送信する」を試してみます。
プレイスメントの属性に電話番号とメッセージを入力し、プロジェクトの作成を選択します。

image.png

プロジェクトの作成が成功したら、プレイスメントの作成を行います。

image.png

プレイスメント名を入力し、さらに登録済みのデバイスを選択します。

image.png

プレイスメントの属性は先ほど設定したものが入力されているはずですので、
ここではそのまま「プレイスメントの作成」を選択します。

作成できました。

image.png

プロジェクトには複数のプレイスメントとデバイスを登録できるようです。

image.png

デバイスの状態も更新されています。

image.png

準備ができました!
ボタンを押してみます!!

届きました!簡単ですね。

プロジェクトのレポートからLambda 関数の実行状況が確認できます。
image.png

Lambda のコンソールを確認するとSMSを送信するファンクションが自動で登録されていました。

image.png

2018/5/18 追記
上記Lambda関数について、東京リージョンにデプロイしていても、自動作成される実行ロールについてはCloudWatch Logsに対するResource条件がオレゴンリージョンになってしまうようです。
そのままでは実行ログの出力に失敗するので、インラインポリシーのResource条件を書き換える必要があります。
image.png

追記終わり

ちなみにもう一つのサンプルアクション「Eメールの送信」も簡単に設定することができますが、
メールの送信にはオレゴンリージョン(us-west-2)のSESが使用されます。
必要に応じて送信制限の解除等、事前の設定が必要です。
送信処理を行うLambda関数もオレゴンで登録されています。

一通り動作確認できたので、次はカスタムのLambda関数で
もう少し使える IoT ボタンを目指したいと思います!

参考になれば幸いです。