室内の臭いを数値化し、クラウド上に蓄積する：後編

# 準備
[前編](https://qiita.com/kolinz/items/84ca7988520ecafc6ac9)の続きになります。また、IBM Cloud ライトアカウントにおける「Internet of Things Platform」について、下記の資料をもとに、「What's Next Pink」と「MiCS5524搭載 ガスセンサモジュール」がつながった「Rapsberry Pi Zero WH」を、「Internet of Things Platform」にデバイス登録します。
![本体画像](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/dc93b058-9843-b20b-5fc7-a595a98f6d9a.png)

## 資料
- [無料のIBM Cloudライトアカウントで始めるIoTのHello World](https://www.slideshare.net/kolinz/ibm-cloudiothello-world)
- [Raspberry Pi しかないときのIoTハンズオンチュートリアル](https://www.slideshare.net/kolinz/raspberry-pi-iot)

# Rapsberry Pi Zero WH側準備
Raspberry Pi Zero WH上の「Node-RED」にアクセスし、下図のようになるように、「出力」のWatson IoTノードを配置、設定します。
![Raspberry Pi側Node-RED](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F41414%2F0a99d1a1-efef-4884-a3f7-a9af0b5f487e.png?ixlib=rb-1.2.2&auto=compress%2Cformat&gif-q=60&s=cb563793c4b631ef2641330962784547)

「出力」のWatson IoTノードを配置直後は、「IBM IoT Device」と表示されていますので、「IBM IoT Device」をダブルクリックし、設定画面で、下図のように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/e7a70231-5294-613e-7b7b-7019c0b6798f.png)

Credentialsの項目は、デバイスタイプとデバイスIDが表示されますので、設定する人や組織によって異なります。
画面右上の「デプロイ」をクリックしてRaspberry Pi側のNode-REDは準備完了です。

# IBM Cloud側準備
前述の資料を読んでいればとても簡単な操作です。
IBM Cloud側のNode-REDで、Raspberry Pi側からのデータを受信し、IBM Cloudant内のデータベースに格納するだけです。IBM Cloudantは、資料で触れているように、IBM Cloud側で「Node-RED Starter」でNode-RED環境を用意する際には、一緒に用意されますので、説明は省略します。詳しくは前述の資料の[無料のIBM Cloudライトアカウントで始めるIoTのHello World](https://www.slideshare.net/kolinz/ibm-cloudiothello-world)をご確認ください。
## IBM Cloud側Node-RED
IBM Cloud側でのNode-REDでは、下図のようにフローを組みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/cd02e11b-9c78-e8e1-5d26-cd45888fec01.png)
カテゴリ「入力」の「ibmiot」、「出力」の「debug」、「ストレージ」の「cloudant(cloudant out)」を配置し、線で結びます。

１つ１つ見ていきます。
### ibmiot
「Internet of Things Platform」にデバイス登録したデバイスタイプやデバイスIDを下図のように入力し、「完了」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/df202f6b-bca0-4944-20e1-f59b8c0fc3f3.png)
### cloudant(cloudant out)
ノードの左側に線でつなぐための口があります。右ではありません。設定は3箇所です。Serviceの欄は、Node-RED環境作成ときにCloudant環境を同時に有効化していれば、自動で挿入されます。
- Database：英数字で任意のもの
- Operation：insert
- Only store msg.payload object ?：チェックを入れる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/1365a42c-37f5-a0cd-3774-fb4b2785b4e5.png)

入力後、「完了」をクリックします。
### debug
これは、「ibmiot」と線でつなぐだけです。

## デプロイ
各ノードを設定し終えたら画面右上の「デプロイ」をクリックします。Raspberry Pi側でセンサー値を取得し、IBM Cloud側のNode-REDに送信し、IBM Cloud側のNode-REDの虫型アイコンのデバッグタブで受信値を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/d0b3f857-9de0-905c-f67c-d821f00b498f.png)
また、Cloudantの管理画面にアクセスし、受信値がデータベースに格納されていることを確認します。
IBM Cloudの「リソース・リスト」>>「Services」>> Cloudantのサービス名の順にクリックし、表示される「Launch Cloudant Dashboard」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/40ff8955-5f6e-27bf-6e7e-3d4c33c2b1b5.png)
表示されるデータベース一覧から、IBM Cloud側のNode-REDで設定したデータベース名を選び、格納されているデータを表示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/cf383583-e76d-a61b-8668-90f4f436b4f1.png)

# まとめ
前編と後編に分けて、ハードウェア側とクラウド側でそれぞれ説明しました。ハードウェア側からクラウド側にデータを送る方法がわかれば応用が効くはずです。