AWSのIoT EnterpriseボタンでLambdaを叩くまで

はじめに

以前からオフィス内IoTに使えそう!!とTown内で話題になっていたIoT Enterpriseボタン(僕らはDashボタンって呼んでます。言いやすいので)が来ました!!!
そこで、試しにlambdaの実行ボタンとして使ってみたので紹介していきます。

さっそく紹介!…その前に

結論!躓きました!!!

通常lambdaを起動するにはトリガーとしてAPI Gatewayなどを指定する必要があります。
そのトリガーリストの中にIoTがあったのでそれを使用するのかな?と思い設定(証明書とかの)を進めていたのですが一向にうまくいかなく躓いていました。しかし、どうやらIoT Enterpriseボタンを使う場合は事前に証明書とかの細かい設定は済まされているらしく、必要ないということで下記の設定を行うだけでlambdaを叩くことができました。

では初期設定!!

アプリ

  1. まずお手持ちのスマホやタブレットへ専用のアプリをインストールします。

アプリ

リンクをここに貼っておきます =>    ios    Android

  1. アプリをインストールしたらログインします。(何度かDashボタンを押す指示がアプリからされると思います。その時はその指示に従ってください。)

すると次のような画面になるので、”Wi-Fiを設定”をタップします。

  1. すると次の様な画面になるので、スキャンをタップし、付属してきた箱のバーコードを読み取ります。

  1. この時、うまくスキャンできなければ手入力してください。ちょっと長くて文字が小さいので大変ですが…入力が終了すると次のような画面になるのでDashボタンを押してください。

  1. すると次のような画面になるので設定ボタンをタップしてください。

  1. すると、Wi-Fiの設定画面になるのでWi-Fiのネットワーク(SSID)とパスワードを入力して確認をタップしてください。

  1. そして、もう一度Dashボタンを押すと、全て設定が終了すると次のように設定完了の画面となるので、これでアプリを使った設定は終了です。

AWSコンソール

アプリを使った設定が完了したら、次はAWSコンソールで設定をしていきます。

  1. まずサービスの中のIoT 1-Clickをクリックします。

  1. すると次の画面が出てくるので、デバイスの登録をクリックします。

  1. すると次の画面が出てくるので、コードを入力します。

  1. すると次の画面が出てくるので、Dashボタンを押します。すると登録完了画面が出てきます。これでAWSでDashボタンが使えるようになりました。

実際に、管理の中のデバイスのところに追加されていることが確認できます。

lambdaとDashボタンをリンクさせる!

初期設定の終わったDashボタンと今回は事前に用意したevent情報をslackへ送信するコードの書かれたlambda関数をリンクさせて、Dashボタンを押すたびにその情報をslackへ送信するようにします。

  1. IoT 1-Clickの中の管理の中のプロジェクトをクリックし、プロジェクトの作成をします。

  1. 任意の情報を入力して次へ進みます。

  1. 次の画面のデバイステンプレートの定義をクリックし、

すべてのボタンタイプをクリックし、

任意の名前の入力と今回はlambdaを選択します。

すると、リージョンやlambdaの関数名の選択肢が出てくるので任意のものを選択します。

  1. すると次の画面が出てくるので、プレイスメントの作成をクリックします。

  1. 任意の名前を入力し、Dashボタンを選択します。

これでDashボタンの設定は完了です!!!

実際に使ってみた

これが実際にボタンを押したときにSlackへ届いたメッセージです。
“clickType”でシングルクリック、ダブルクリック、長押しを判別できます。

{
    "deviceInfo": {
        "deviceId": "G03XXXXXXXXXXXXX",
        "type": "button",
        "remainingLife": 99.9755,
        "attributes": {
            "projectRegion": "ap-northeast-1",
            "projectName": "Dash_Button",
            "placementName": "Dash_Button",
            "deviceTemplateName": "Dash_Button"
        }
    },
    "deviceEvent": {
        "buttonClicked": {
            "clickType": "SINGLE",
            "reportedTime": "2018-12-20T08:53:32.068Z"
        }
    },
    "placementInfo": {
        "projectName": "Dash_Button",
        "placementName": "Dash_Button",
        "attributes": {},
        "devices": {
            "Dash_Button": "G03XXXXXXXXXXXXX"
        }
    }
}

終わりに

これでTownのオフィス内IoTが進む!!!