IoT.kyoto VIS マニュアル

#事前に準備するもの
* IoTデバイス（計測する値を出力します）
* AWSアカウント

# [0] 事前説明

## [0-1] IoT.kyoto VIS 構築例

* IoTデバイスで計測した値を出力させ、データをAPIでDynamoDB(AWSが提供するNoSQLデータベース)に送信させるためにIAM Access KeyをIAM(AWSが提供するアイデンティティ管理・アクセス管理)で取得します

* IoT.kyoto VISは、DynamoDBからIoTデバイスで計測したデータを取得し、リアルタイムでグラフ化することができます

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/0398d29f-f46c-81f6-e236-a6f487af5aeb.png)


## [0-2] IoT.kyoto VIS を使用するために必要なデータ

**たとえば、温度と照度を出力するIoTデバイスの場合に必要なデータ**
 
 * 値（下図では例としてtemperatureとbrightness）はIoTデバイスから出力される計測対象の値です
 * IoTデバイスで計測したこれらのデータは
 「[[1] DynamoDB構築手順](http://qiita.com/kyoso_bizdev/items/23b0b6355544109ab8b4#1-dynamodb%E6%A7%8B%E7%AF%89%E6%89%8B%E9%A0%86)」でDynamoDBのテーブルを作成後、なんらかの手段で、テーブルに書き込みます。<br>
更に、「[[3] IoT.kyoto VIS ユーザー設定](http://qiita.com/kyoso_bizdev/items/23b0b6355544109ab8b4#3-iotkyoto-vis-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E8%A8%AD%E5%AE%9A)」で設定することで、リアルタイムでグラフ化することが出来ます

| deviceID | time  | temperature |brightness|
|:--------:|:------------------:|:-------------:|:------:|
| 01       |2016-03-04 10:17:44 |  25.6         |103|
| 02       |2016-03-04 10:17:44 |  22.1         |216|
| 01       |2016-03-04 10:17:45 |  25.8         |98|
| 02       |2016-03-04 10:17:45 |  21.9         |210|
タイムスタンプは下記6種類のうちのどれかをお使い下さい。画面表示時にUTCはJSTに自動変換されます。
[JST]
　YYYY-MM-DD hh:mm:ss
　YYYY/MM/DD hh:mm:ss
　YYYY-MM-DDThh:mm:ss.sss+0900
[UTC]
　YYYY-MM-DDThh:mm:ssZ
　UNIXタイムスタンプ(整数10桁)
　UNIXタイムスタンプ(整数13桁)

##[0-3] AWS IoTを使用する場合の設定

データフォーマット(例)

```
{
  "thingName": "device001",
  "timestamp": "1450505098624",
  "payload": {
    "humidity": 40.64,
    "light": 487.52,
    "temperature": 29.9,
    "thingName": " device001"
  }
}

```

* AWS IoTからDynamoDBにデータを書き込む場合、標準では下図のように「payload」キーにネストされて計測値が記録されます
* 下図のデータは「[[3] IoT.kyoto VIS ユーザー設定](http://qiita.com/kyoso_bizdev/items/23b0b6355544109ab8b4#3-iotkyoto-vis-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E8%A8%AD%E5%AE%9A)」で設定することで、リアルタイムでグラフ化することができます

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/dda09487-bd26-637c-845c-6d9e28288174.png)



------------------------------------------------------------------------------------
# [1] DynamoDB構築手順

**1. AWSにサインインします**

* 左上のオレンジの立方体のアイコンをクリックしてください

* [DynamoDB]のコンソールをクリックして開いてください


![image](https://qiita-image-store.s3.amazonaws.com/0/121045/5d959268-0757-eceb-0c61-56d8bdad50b3.png)



**2. リージョンを確認します**

 * 特に他のリージョンを選ぶ理由がない場合は[アジアパシフィック(東京)]を選択してください


![image](https://qiita-image-store.s3.amazonaws.com/0/121045/98f28e1e-2e05-6c81-9fd7-0eb0aa5cc3c2.png)

 
**3. DynamoDB のコンソール画面で[デーブルの作成] をクリックしてください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/a6b61af3-1fbf-0a24-943c-145d36e9b7d0.png)


 
**4. テーブル名に任意の名前をつけてください**


![image](https://qiita-image-store.s3.amazonaws.com/0/121045/cd4b0857-6267-b75f-2e48-035e4c07389b.png)


　
**5. プライマリキーのパーティションキーに任意の名前をつけてください**

 * データ型はIoTデバイスが出力する値に合わせて「文字列」または「数値」を選んでください

 * IoTデバイスの特定に分かりやすい名前を付けてください

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/68bc33c8-3b9d-bcb6-68b3-a95319babac5.png)


 
**6. [ソートキーの追加]のチェックボックスをクリックしてチェックを入れてください**


![image](https://qiita-image-store.s3.amazonaws.com/0/121045/23f46a73-6179-7fa6-5ea1-ab9fdb2d9527.png)


**7. プライマリキーのソートキーに任意の名前をつけてください**

 * 時間の特定に分かりやすい名前を付けてください

 * データ型はIoTデバイスが出力する値に合わせて「文字列」または「数値」を選んでください
 

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/08c5c8bf-0233-0166-58f0-3f8740408a86.png)


**8. テーブル設定の[デフォルト設定の使用]のチェックボックスをクリックしてチェックを外します**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/1a22a16e-7ad0-9384-5fc1-b4a5fd4cc2ea.png)


**9. プロビジョニングされたキャパシティの[読み込み容量ユニット]と[書き込み容量ユニット]のテーブル数を設定してください**

 * IoTデバイス2～3個までなら「読み込み容量ユニット」が5テーブル、「書き込み容量ユニット」が5テーブルで足ります
 
![image](https://qiita-image-store.s3.amazonaws.com/0/121045/08824943-6a3c-792c-bc35-b9c9926fdb4b.png)


**10. [作成]をクリックしてテーブル作成は完了です**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/eca006c6-d035-f0ca-d601-4bf76c935c88.png)

# [2] IAM Access Keyを取得する

**1. Identity and Access Management(IAM)コンソールを開いてください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/bd46b23e-ee11-ca05-80ba-b16bd0b95166.png)


**2. [ユーザー]をクリックして開き、[新規ユーザーの作成]をクリックし、任意の名前でユーザーを作成します**

* [ユーザーごとにアクセスキーを生成]のチェックボックスにチェックが入っているかどうかを確認してください
* [作成]をクリックしてユーザーを作成します

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/57619f43-9fe6-b149-29f1-9bb2178a49f6.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/121045/7c32ab9a-6ecb-0d26-9b0b-4349e5ca11c9.png)


**3. [ユーザーのセキュリティ認証情報を非表示]をクリックして ID と Key を表示させます**

* 表示されたアクセスキーID とシークレットアクセスキーを控えておいてください([認証情報のダウンロード]をクリックして保存してもよい)

* [閉じる]をクリックして終了します


![image](https://qiita-image-store.s3.amazonaws.com/0/121045/07e2be5a-d55c-28b0-820d-e6d68ee4a9ae.png)



**4. ユーザーの中から、作成したユーザー名をクリックします**


![image](https://qiita-image-store.s3.amazonaws.com/0/121045/894d0bd8-af79-fadb-043f-94ea95a7d6e7.png)


**5. [アクセス許可]をクリックして開き、[ポリシーのアタッチ]をクリックします**


![image](https://qiita-image-store.s3.amazonaws.com/0/121045/e2d13f93-301d-afa6-3a51-e8537332b27c.png)


**6. [AmazonDynamoDBReadOnlyAccess]のチェックボックスにチェックをいれ、[ポリシーのアタッチ]をクリックして、IAM の登録は完了です**

* IAMでReadOnlyAccessに設定することで、DynamoDBからデータを取得することが許可されます


![image](https://qiita-image-store.s3.amazonaws.com/0/121045/8bae8936-7506-0e1b-ebc0-a4fa96fef07a.png)


# [3] IoT.kyoto VIS ユーザー設定

**1. メールアドレスとパスワードを入力し、[ログイン]をクリックしてください**


![image](https://qiita-image-store.s3.amazonaws.com/0/121045/7af267e2-54fe-5828-c2f5-10a2de1781ef.png)


**2. [ユーザー設定]をクリックします**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/5aa9835b-af7d-e06b-9902-650a382a517c.png)

　
**3. ユーザー情報設定を変更することができます**

* メールアドレスには、IoTデバイスから取得した計測値が閾値を超えた場合に通知メールが届きます

* 通知用メールアドレス欄が空欄の場合、ログインIDのメールアドレスに通知されます

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/809dc29f-c466-c8eb-ed5b-b0b10f869a52.png)

　
**4. AWSアクセス設定をします**

* AWSのアクセスキーIDとシークレットアクセスキーとリージョンのコードを入力してください

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/f7e291bf-d4f7-9e07-f3a9-e33f02279f3c.png)

　
リージョンのコードは下図を参照にしてください。（2016/03/10時点）
最新のリージョンは[リージョンとアベイラビリティーゾーン](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)をご確認ください。

|リージョンコード|リージョン名|
|:----:|:----:|
|us-east-1|US East (N. Virginia)|
|us-west-2|米国西部（オレゴン）|
|us-west-1|米国西部（北カリフォルニア）|
|eu-west-1|欧州（アイルランド）|
|eu-central-1|欧州（フランクフルト）|
|ap-southeast-1|アジアパシフィック（シンガポール）|
|ap-northeast-1|アジアパシフィック（東京）|
|ap-southeast-2|アジアパシフィック（シドニー）|
|ap-northeast-2|アジアパシフィック (ソウル)|
|sa-east-1|南米（サンパウロ）|


**5. dynamoDBテーブル設定をします**

* AWSのDynamoDBで作成したテーブルの情報を入力します

* テーブル名、パーティションキー、ソートキー、日時フォーマット、計測対象項目、閾値を入力してください

* 計測対象の値が閾値を超えた場合、設定しているメールアドレスに通知メールが届きます

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/7688959e-45b0-2219-1800-dc71c60ad93c.png)


**[AWS>DynamoDB>テーブル]**

* DynamoDBのテーブル設定は、AWSにログイン→DynamoDBのコンソール画面からテーブルを開く→[項目]から確認できます

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/2212868c-d2d7-a6f6-a932-9917b1c86e28.png)


**6. パーティションキーを入力後、StringかNumberかを選択してください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/ec914376-0a78-658f-5e9a-33d276d74395.png)

　
**7. ソートキー(タイムスタンプ)を入力後、StringかNumberかを選択してください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/a56f003e-02ab-d002-5208-3ea1adca68d1.png)

　
**8. グラフ更新間隔では、DBからデータを取得する間隔を1～600秒の間から任意で選択できます**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/8b97c237-8809-b269-040a-ddf4f7422917.png)

　
**9. タイムスタンプのフォーマットは下図6種類があります(UTCはJSTに自動変換されます)。
ソートキーに合わせて設定してください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/88a59e36-e4b6-bfc8-d205-d3ef3150bd15.png)


　
**10. グラフ表示対象キーはNumberかAWS IoTを選択してください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/9f9eaa98-5ccc-0758-a3d2-98ba27827ff2.png)

 * AWS IoTの場合はPayloadから計測対象の値を入力し、AWS IoTをドロップダウンリストから選択してください

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/8d08708b-1f96-9d47-41aa-f2afc80fba93.png)


**11. 計測対象の値が閾値を超えた場合、設定しているメールアドレスに通知メールが届きます**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/4089ef19-1e92-afcb-8449-35141f0f75ec.png)

　
**12. リアルタイムグラフ描写幅はグラフの横軸の幅を設定します**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/b6a59d10-2bac-e940-ae35-7e98b6562c4e.png)

　
**13. [更新]をクリックしてユーザー設定を完了させてください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/c4fa8538-55f6-7867-6444-4b10f064ed5b.png)

#[4] IoT.kyoto VIS グラフ設定

**1. [グラフ]をクリックしてください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/3ed13c77-4b04-f8ae-6a11-469a0c9aa536.png)

　
**2. [パーティションキー]をクリックして、計測したいパーティションキーを選択してください**


![image](https://qiita-image-store.s3.amazonaws.com/0/121045/17e047e9-6de7-1bb8-d4ba-c455df084638.png)

　
**3. DynamoDBにパーティションキーを追加した場合は、反映されるまでに10～15分程かかるので、早く表示したい場合はパーティションキーを直接入力して[追加]をクリックしてください**
追加した後、2の手順と同じようにパーティションキーを選択してください。

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/b34e7dde-feb5-8417-5d77-ad8698a0064e.png)

　
**4. レンジ設定を自動か手動に設定するかを、チェックボックスをクリックすると、選択可能になります**
手動に設定する場合、グラフの縦軸の最小値と最大値を入力してレンジを設定してください。

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/82f938b7-3549-51ba-d32b-da9bd35f03d8.png)

　
**5. レンジ設定を手動にすることによって、最小値と最大値が固定されたグラフが表示されます**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/b47bc4a4-ba89-ab86-d3d9-ee22570c15a1.png)

　
**6. レンジ設定を自動に設定した場合、最小値と最大値が取得した計測値の大きさによって変動します**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/cf1f3b78-0cdd-1ae3-f035-c21e663fc445.png)

　
**7. グラフタイトルを記入し[保存]をクリックすることで、複数のパーティションキーを区別しやすくすることが出来ます**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/772059b9-61cf-4129-57c0-d2d2c1ebf255.png)

　
**8. 取得した値がユーザー設定で登録した閾値を超えた場合の発生日時と、画面左側の異常履歴に表示されます**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/aa88f9a2-a476-a6ad-2fb8-ca193ace5bfc.png)

　
**9. 異常履歴の[発生日時]をクリックすると、画面をスクロールした右下のグラフに異常が発生した日時前後のグラフが表示されます**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/64dc4f31-8bef-1b95-3aa7-21cc0e1f8036.png)


　
**10. 日時指定を入力することで、指定した範囲のグラフを表示することができます**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/8e4917ea-68c0-5068-841b-368ebc95ce1b.png)

　
**11. [日付]の入力欄をクリックするとカレンダーが表示されますので、指定したい日付を選択してください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/4a31b384-0f29-2fde-e489-6d5dedc57866.png)

 
**12.時刻の書式は、ユーザー設定に登録した通りの書式で入力してください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/9a7f7013-2e73-b4bb-0900-1c1ec341226f.png)

 
**13.設定した日付・時刻の以前、以降か前後かを選択してください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/96774b64-65ab-26b7-a0e8-8d984045a8c9.png)

 
**14.日時設定に間違いがなければ、[送信]をクリックしてください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/ecfc1234-ecb4-b574-4758-fa3ebbbc5dbf.png)

 
**15.右側に指定した範囲のグラフが表示されます**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/a7a0273e-a58f-c467-3859-d1e9d8cb0dee.png)