【myThingsハンズオン】IDCFクラウドをセットアップしよう

この記事は[myThingsハンズオンの参考資料](http://qiita.com/yamamotomanabu/items/4812d5a5574219eb03af)の一部です。

## IDCFクラウドの役割
自作デバイス-myThings間でメッセージをやり取りするための中継装置としての役割を果たします。IDCFクラウドではIoT向けメッセージングプラットフォームであるMeshbluというOSSを採用しています。

myThingsはユーザーが作成した組み合わせを元に、定期的にトリガーの確認を行います。トリガーが設定された条件を満たしている状態であれば、組み合わされているアクションを実行します。
例えば「Twitterに特定のハッシュタグがついたツイートがあったら、Facebookに投稿する」という組み合わせの場合は下図のように動作します。
![myThings説明1.png](https://qiita-image-store.s3.amazonaws.com/0/51093/c5261305-3ec7-53b6-bacf-5d5e0c6016bb.png)
　
ただ自作デバイスの場合は直接myThingsからトリガーの確認を行うことができません。そこで登場するのがIDCFクラウドです。

例えば『特定のハッシュタグがついたツイートがあったら、RaspberryPiのLEDを点滅させる』デバイスを自作する場合は、「特定のハッシュタグがついたツイートがあったら、IDCFのアクションに通知する」という組み合わせをmyThingsアプリで作成してください。そうすると下図の①と②の動作が自動化されます。あとはRaspberryPi上で、③とLEDを点滅させるプログラムを実行すれば、『特定のハッシュタグがついたツイートがあったら、RaspberryPiのLEDを点滅させる』デバイスの完成です。またIDCFクラウドのactionはaction-1〜5の5つあるため、Twitterとの連携にはaction-1を使い、action-2には別のサービスと連携させるといった使い方が可能です。
![myThings説明2.png](https://qiita-image-store.s3.amazonaws.com/0/51093/c9f9916d-5dbb-56c4-2951-d68ee00e235f.png)
　
『温度が27℃を超えたらFacebookに投稿する』デバイスを自作する場合は、「IDCFのトリガーが条件を満たしたら、Facebookに投稿する」という組み合わせをmyThingsアプリで作成してください。そうすると下図の②と③の動作が自動化されます。あとはRaspberryPi上で、温度をセンシングして27℃以上であれば①を行うプログラムを実行すれば、『温度が27℃を超えたらFacebookに投稿する』デバイスの完成です。またIDCFクラウドのtriggerはtrigger-1〜5の5つあるため、温度のセンシング結果にはtrigger-1を使い、trigger-2には別のセンシング結果を送るといった使い方が可能です。
![myThings説明3.png](https://qiita-image-store.s3.amazonaws.com/0/51093/ba5228f7-ddab-0c9f-7aca-1a2a9951fa9c.png)

## IDCFクラウドをセットアップする
こちらの[手順](http://www.idcf.jp/cloud/iot/detail01.html#post02)のPart1をすすめてください。

セットアップを行うことで、myThingsと連携するために必要な以下の情報を取得することができます。

- IPアドレス
- meshblu_auth_token
- trigger-1〜5、action-1〜5のtokenとuuid

IPアドレスとmeshblu_auth_token（認証token）はmyThingsアプリ上でIDCFチャンネルを認証する際に利用します。
![IDCFチャンネル.png](https://qiita-image-store.s3.amazonaws.com/0/51093/72161063-7a85-c2e8-9049-a93f0502d414.png)

trigger-1〜5、action-1〜5のtokenとuuidはRaspberryPi上でプログラムを書く際に利用します。

## 各種情報の確認方法
IPアドレスはIDCFクラウドのWebコンソールで確認してください
![idcf.png](https://qiita-image-store.s3.amazonaws.com/0/51093/993abfd6-7079-fe8a-46aa-4d58bf97ad75.png)

meshblu_auth_tokenはセットアップ時のコマンド実行結果で確認してください

```text:meshblu_auth_tokenの取得例
┌─────────┬────────────────────┬──────────────────────────────────────┐
│ keyword │ meshblu_auth_token │ meshblu_auth_uuid                    │
├─────────┼────────────────────┼──────────────────────────────────────┤
│ owner   │ 61ab8b5c           │ a5cb0696-c1e3-4044-ba40-7fc9a948a7d9 │
└─────────┴────────────────────┴──────────────────────────────────────┘
```

trigger-1〜5、action-1〜5のtokenとuuidもセットアップ時のコマンド実行結果で確認してください

```text:trigger-1〜5、action-1〜5のtokenとuuidの取得例
┌───────────┬──────────┬──────────────────────────────────────┐
│ keyword   │ token    │ uuid                                 │
├───────────┼──────────┼──────────────────────────────────────┤
│ trigger-1 │ 8c7bb81f │ 090ac71d-9432-4caa-9d84-d7c7ad76fdc8 │
├───────────┼──────────┼──────────────────────────────────────┤
│ trigger-2 │ az5dd3cc │ 6bbf2618-bad1-46dc-84d1-014933cbcd17 │
├───────────┼──────────┼──────────────────────────────────────┤
│ trigger-3 │ 305bb94e │ a811ce9a-88b0-4250-be31-da4d4ea26aa8 │
├───────────┼──────────┼──────────────────────────────────────┤
│ trigger-4 │ 0dbc1cwd │ 2732a872-8d1d-4d22-94d3-82e23ae2a8d1 │
├───────────┼──────────┼──────────────────────────────────────┤
│ trigger-5 │ aac9967f │ b134d59f-01e4-47f2-b15e-239aa8e069b0 │
├───────────┼──────────┼──────────────────────────────────────┤
│ action-1  │ b1b09074 │ 62a252ef-edf8-4f07-9a7c-68237b23df0e │
├───────────┼──────────┼──────────────────────────────────────┤
│ action-2  │ 325dd92a │ a2dfb479-c499-4f50-b1eb-75efe2ef1261 │
├───────────┼──────────┼──────────────────────────────────────┤
│ action-3  │ bd6c1391 │ 33dc5d6f-0880-4db4-b093-b287e9267033 │
├───────────┼──────────┼──────────────────────────────────────┤
│ action-4  │ m5ac43cb │ 641075b9-f78e-4b70-8edc-3d4faf9ed0ac │
├───────────┼──────────┼──────────────────────────────────────┤
│ action-5  │ b425cbf0 │ e215f0d8-3533-4b15-8925-27fe22a4e6e6 │
└───────────┴──────────┴──────────────────────────────────────┘
```