IoT.kyoto VIS マニュアル 2016年5月版

#事前に準備するもの
* 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デバイスの場合に必要なデータ**
 
* IoTデバイスを識別するIDとタイムスタンプは必須です 
* 下表の場合、temperatureとbrightnessはIoTデバイスから出力される計測対象の値です
* IoTデバイスで計測したこれらのデータは
 「[[1] DynamoDB構築手順](http://qiita.com/kyoso_bizdev/items/9223cb6fa125e1502183#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/9223cb6fa125e1502183#3-iotkyoto-vis-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E8%A8%AD%E5%AE%9A)」で設定することで、リアルタイムでグラフ化することが出来ます

| deviceID | time  | temperature | light |
|:--------:|:------------------:|:-------------:|:------:|
| 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を使用する場合の設定

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

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

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

```

![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)

下記エラーメッセージが表示されますので、[OK]をクリックします
![err.PNG](https://qiita-image-store.s3.amazonaws.com/0/121045/7aa3cd37-e610-9217-e199-16196759cc56.png)

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

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/6ab91086-403d-1dfa-b3c0-820220349c9f.png)
　
**3. ユーザー情報設定を変更することができます**

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

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

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/c73c0f87-39a8-12f6-dbda-0a25682bae2f.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で作成したテーブルの情報を入力します

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

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

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

**6. テーブル名を入力してください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/44201380-a084-a322-9058-6e07684e7ffe.png)


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

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/ec914376-0a78-658f-5e9a-33d276d74395.png)
　
**8. ソートキー(タイムスタンプ)を入力後、StringかNumberかを選択してください**

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


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

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


**10.グラフ表示数を選択してください。可能なグラフ表示数は最大3個までです**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/8d7f780e-5311-3b9c-c9ae-08de894a544b.png)


* グラフ表示数を3個に選択した場合


![会議室センサータグ2.PNG](https://qiita-image-store.s3.amazonaws.com/0/121045/5a6f21bc-81c5-9e09-74b3-b7d96b6c9c35.png)



**11. グラフアイコンを選択してください**

* アイコンを適用させたいグラフを選択し、アイコン選択からグラフアイコンを選んでください
* 選択したグラフはグラフ画面でグラフタイトルの横に表示されます

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/81c16db9-579c-6fc5-7d1d-8e9730214348.png)

**12. AWS IoTを使用の場合は、[AWS IoT連携]のチェックボックスにチェックを入れてください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/ed83a7de-e9cd-eda6-5fe8-7cbbb717f3e8.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/32d3e3fd-ff59-8f21-a0c1-786c2229204b.png)
　
**2. [パーティションキー]をクリックして、計測したいパーティションキーを選択してください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/4804708e-05fd-a2ad-8db7-2f90c8edc2a3.png)

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

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/e453f9c6-2601-e831-76d6-2990dd476331.png)

**4.[表示対象キー]を選択して、計測したい表示対象キーを選択してください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/b5ab3553-0b54-ebff-587b-3c33c5f2670a.png)

**5.グラフ表示させたい[表示対象キー]がない場合は、[表示対象キー手入力]をクリックしてから入力し、[追加]をクリックしてください**
追加した後、4の手順と同じように表示対象キーを選択してください。
![image](https://qiita-image-store.s3.amazonaws.com/0/121045/3d3e4cff-0da5-a417-8975-28b7d7fd70eb.png)

**6. ギアマークを選択して[グラフ設定]を表示させてください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/08639ea3-9a80-e42d-ac3d-d6a8b970d2f5.png)


**7. [グラフ設定]では、[グラフ更新間隔(1~600秒)]、[グラフ1閾値]、[グラフ2閾値]、[グラフ3閾値]、[リアルタイムグラフ描画幅]の編集が出来ます**

* 設定した閾値を超えた場合もしくは下回った場合、通知メールが送信されます
* 閾値は有効にするか無効にするかをチェックボックスをクリックして選択してください
![image](https://qiita-image-store.s3.amazonaws.com/0/121045/6df7a24d-22e3-44c1-179c-36ef5b6d94bf.png)


**8.[リアルタイムグラフ描画幅]はグラフの横軸を設定します**

* [グラフ更新間隔]に応じて選択できる[リアルタイムグラフ描画幅]が変わります

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/6aa41736-5950-773e-2341-b6547d70e0cc.png)

**9.グラフ設定の編集が終わったら、[OK]をクリックして、編集を終了してください**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/0bb3e1ae-ceb7-d1de-d685-bcf98ea86049.png)

**10. レンジ設定を自動か手動に設定するかを、チェックボックスをクリックすると、選択可能になります**

* 手動に設定する場合、グラフの縦軸の最小値と最大値を入力してレンジを設定してください
* レンジ設定を手動にすることによって、最小値と最大値が固定されたグラフが表示されます

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/ecf43b67-ddaa-c5a0-ca3c-9780dfbae4ed.png)


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

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


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

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

　
**14.リアルタイムグラフの計測中に設定した閾値を超えた場合、異常履歴に発生日時の記録が残ります。[異常履歴]をクリックすることで確認することができます**

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/a4d23b53-3443-9da5-a949-9293d5ea0c08.png)

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

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/f0942b69-1401-b22c-ea06-ebe995d44941.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/a6071be3-1c55-bd07-3ed1-99314db25411.png)

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

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

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

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

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

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

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

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

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

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

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

![image](https://qiita-image-store.s3.amazonaws.com/0/121045/0c8b2520-e4c0-c6c1-f51e-23f05682b965.png)