AWS IoT エンタープライズボタンでLambda実行するまで

AWS IoT エンタープライズボタン（プログラミングできるDash Button）を購入してみたので、AWS IoT 1-Clickを利用したLamda実行までの手順をまとめておく。

* [AWS IoT エンタープライズボタン](https://www.amazon.co.jp/dp/B075FPHHGG)
* [AWS 1-Click](https://aws.amazon.com/jp/iot-1-click/)

<img width="600" src="https://qiita-image-store.s3.amazonaws.com/0/1403/64bc5235-40bc-09f7-af5a-3fe18b062069.jpeg" title="button" />

## Lambda関数の準備

https://ap-northeast-1.console.aws.amazon.com/lambda/home

より、ボタン押下で実行するためのLambda関数を用意しておきます。

今回はSlackのIncoming Webhookを用いて投稿をおこなう関数「testFunction」を作成。

```js
exports.handler = function (event, context, callback) {  
  const request = require('request');
  var options = {
    uri: 'https://hooks.slack.com/services/XXXX/XXXX/XXXX',
    headers: { 'Content-Type': 'application/json' },
    json: {
      text: 'ZZZ…'
    }
  };
  
  request.post(options, function(error, response, body){
    if (!error && response.statusCode == 200) {
      console.log(body);
    } else {
      console.log('error: '+ response.statusCode + '\n' + response.body);
    }
  });
};

```
※ `node_modules` 群も合わせてアップロード済み


## ボタンのセットアップ
### スマホアプリからデバイスを追加
* [iOS版](https://itunes.apple.com/app/id1315204832)
* [Android版](https://play.google.com/store/apps/details?id=com.amazonaws.oneclick)

Iotボタンのセットアップには、購入時の箱に記載されているDSNコードが必要になる。

https://ap-northeast-1.console.aws.amazon.com/iot1click/home
から進めていると、スマホアプリからの利用を促すメッセージがあったのでデバイスの追加はそちらで進める。

* DNSコードの登録（箱のバーコードをスキャン）
* Wi-Fiを設定

の流れだが、アプリの案内に従って設定するだけなので詳細は割愛。

完了すると、デバイス一覧にボタンが追加される。

<img width="320" alt="device" src="https://qiita-image-store.s3.amazonaws.com/0/1403/7e0750f8-45ce-ecd1-8ef2-4d86e47cbe23.png">


### ボタンの有効化
https://ap-northeast-1.console.aws.amazon.com/iot1click/home

ここからはPC側の画面にて。

管理 > デバイス から追加されているデバイスを確認し、ボタンを有効化する。

右端の「…」から、「デバイスの有効化」を選択。

<img width="1295" alt="AWS_IoT_1-Click.png" src="https://qiita-image-store.s3.amazonaws.com/0/1403/60c1256c-4877-6b63-c61f-76bdd9f104ed.png">

有効化されたことを確認。

<img width="1292" alt="68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f313430332f38643836356139632d376562352d306134342d366464332d6435303439396665373763652e706e67.png" src="https://qiita-image-store.s3.amazonaws.com/0/1403/b1e76c8b-6bed-f6d1-eb6b-c19378051a8f.png">



### プロジェクトの作成

管理 > プロジェクト から、プロジェクトの作成をおこなう。

プロジェクト名を入力し、

<img width="956" alt="AWS_IoT_1-Click.png" src="https://qiita-image-store.s3.amazonaws.com/0/1403/26e9d274-6fec-31ca-9660-4541592bcd3e.png">

デバイステンプレートの定義へ。

<img width="953" alt="AWS_IoT_1-Click.png" src="https://qiita-image-store.s3.amazonaws.com/0/1403/6c7a29ef-86c2-6205-c842-bcb976b521ee.png">

「すべてのボタンタイプ」から、

<img width="973" alt="AWS_IoT_1-Click.png" src="https://qiita-image-store.s3.amazonaws.com/0/1403/0a96865e-50cb-7703-6aa2-0407bb8ce23d.png">


あらかじめつくっておいたLambda関数を指定。

![AWS_IoT_1-Click.png](https://qiita-image-store.s3.amazonaws.com/0/1403/21587bcd-5dc4-b7c5-eda2-2b89c20a0fb0.png)

### プレイスメントの作成

プロジェクトが作成できたら、ボタンとプロジェクトを紐付けるプレイスメントを作成する。
プロジェクトの完了画面から、作成に進む。

![AWS_IoT_1-Click.png](https://qiita-image-store.s3.amazonaws.com/0/1403/552b0cea-ac72-2274-8944-9f7d007d8222.png)

プレイスメント名を入力し、デバイスを選択。

![AWS_IoT_1-Click.png](https://qiita-image-store.s3.amazonaws.com/0/1403/1c68a9d5-4768-0627-d1ee-acd38523ab0c.png)

これで設定はすべて完了！

### 動作確認

ボタンクリックすると・・・ランプが点滅して・・・

![slack.png](https://qiita-image-store.s3.amazonaws.com/0/1403/6377f3c1-5d7d-8920-c8a2-428472a8c4dc.png)

slackにメッセージが投稿されました！（押した分だけ投稿されます）

要はボタン押下でLambdaを呼び出すだけの単純な仕組みですが、やり方次第でいろいろ楽しめそうです。