デバイスもクラウドもNode-REDを使ってIoTしてみる



Raspberry PiとクラウドのNode-REDを利用して、
簡単なIoTプロトタイピングを楽にやってみよう、というコンセプトの記事です。

# 概要

家に置いたRaspberry Piに繋いだ人感センサーで検知したデータを、
外にいながらウォッチするというシステムを作りました。

Watson IoT Platformを間に挟んで、
デバイス側とクラウド側の両方をNode-REDで構成します。

![image2.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/c54f6164-c3e4-823e-6203-632e63f667d6.png)


デバイスはこちら。

![DSC_1707.jpg](https://qiita-image-store.s3.amazonaws.com/0/60109/88a9ef2d-3439-729d-e9d2-a0db682397b3.jpeg)



Raspberry Pi Zeroに人感センサーを接続しています。
USBハブの先についているドングルは、WiFi子機です。
自宅の無線LANに繋がっています。




## メリット

* プログラミング（コーディング）はゼロあるいは最小限で実現できる
* 短時間で設定して試して遊べる


## 使用したもの

* Raspberry Pi
* センサー類
* Bluemix(IBM Cloud)のアカウント


## なんでIBM Cloud(Bluemix)?

他のクラウドでも同様の環境を構築できますが、
Node-REDをワンボタンでデプロイできることや、
Raspberry Piから、Watson IoTに接続するノードを
すぐ使うことができるので、一番楽だという理由です。


# つくってみよう

## クラウド側の準備

IBM Cloudから、Watson IoT Platformと
Node-REDを利用開始します。

まず、Node-REDをデプロイします。ここでつけた名前がURLになります。

![02_LI.jpg](https://qiita-image-store.s3.amazonaws.com/0/60109/1375eb16-f025-a742-b3d0-5e69c714a9af.jpeg)


Watson IoT Platformでは、
デバイスを登録して、認証情報を取得します。
はじめて利用する場合は、
デバイスタイプの作成⇒デバイスの登録
という順で実施します。

IoTサービスの開始。

![06.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/22333c46-aef8-7885-5bd9-6ac7c52dcc76.png)

新しいデバイスタイプを設定します。

![101.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/3771c1f9-f6db-fe7f-94f3-6d7097af62e8.png)

Raspberry Piというデバイスタイプを作りました。

![102.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/2914b037-05f6-2515-a575-6f9cc981e056.png)


続いて、デバイスの登録をします。

![104.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/31b70586-16e5-ed0f-d388-a282833733d9.png)

先ほどのデバイスタイプを選択し、デバイスを登録

![105.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/c767d4d3-c22c-fa0f-1b1a-cf05d2b07d4b.png)

自動生成トークンで発行します。

![107.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/91073385-2d21-ffab-87f0-390ec9b58315.png)

自動生成された認証情報が表示されます。
この認証情報は、Raspberry Pi側のNode-REDの設定を行う場合に利用します。

![110.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/d58b042d-61ae-de7a-759e-7230d793ac86.png)

これで、Raspberry PiとWatson IoT Platformの
接続準備はできました。
次に、Watson IoT Platformとクラウド側のNode-REDを
連携する設定を行います。

IoTの画面の接続から、
クラウド側のNode-REDと「接続」を設定します。

![114.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/17aec8cb-26c6-c3ae-88ec-bf46d12b92fc.png)

これだけです。Watson IoT Platformの設定はできました。


## クラウド側のNode-REDの設定

Node-REDのアプリURLにアクセスします。

![00.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/ecd521df-3d6d-1831-5ff4-df500ed7d093.png)


Raspberry Piから飛ばしたデータを、Web画面で表示するため、
データのビジュアライゼーションとして
Dashboardノードを使用します。
（Dashboardノードは、@dz_さんから教えてもらいました！）

Dashboardノードは、ノードを追加する設定を行う必要があります。
Node-RED右上のメニューからパレットの管理で、dashboardノードを検索します。

![17.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/d65898f7-1897-1101-d9de-0a5613111fb0.png)


今回、時刻処理をするため、momentノードも一緒に追加しました。

![17.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/a4c5cdb2-a89b-587c-5bdf-5c9a5b28f24e.png)


Raspberry Piからきた情報を処理するため、IBM IoTノードを設定します。

![120.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/3ba45ebc-c0c3-66c7-c37b-5980efb06313.png)



できたフローはこのようになりました。


![19.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/b9c0dbbc-0cf3-9ead-31c9-1a65ad82cb49.png)

途中で行っているデータ型の変換は
IBM IoTから引っ張ってきたデータの構成をそのまま画面に流しこんでも
うまく動作しなかったため、いれています。
処理としては、JSONデータであがってきたデータを、payload直下に配置しなおしています。

audio outは生成したメッセージを再生するのに使っているのですが、
今回の用途では不要でした。。。

これでクラウド側の設定も完了です。


## デバイス側のNode-REDの設定

最後にデバイスを設定します。
Raspberry PiにNode-REDがプリインストールされているので、起動します。

今回、人感センサーを接続し、それをインプット情報として
Watson IoT Platformに送ります。

![14.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/1e5fa907-af39-4d3f-2d7e-f9daa5f8f45d.png)


Watson IoT Platformへの接続は、
1でメモした認証情報を設定します。

![13.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/cfc16ede-f677-6580-ee34-a96fb8a688e6.png)

最終的にできたフローはこのようになりました。
switchでは、pin40が1（人感センサー）が検知したときだけ、
クラウドに情報を送信するという設定をしています。

![21.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/b7d92cea-c3e8-bae5-890a-696b5507bcdd.png)

あとは、これを自宅の玄関に設置して、完成です！

## できたもの

玄関の出入りの時間を、記録します。
ダッシュボードのURLにアクセスすれば、
外出先からも参照可能です。

![20.PNG](https://qiita-image-store.s3.amazonaws.com/0/60109/c0d4e46a-bf3c-86c9-7dd4-5434402506b1.png)


**Node-REDたーのしー！**

なお、1週間ほど設置していたのですが、
自分以外のタイムスタンプが記録されていたらどうしようかと
ドキドキしていたことを付け加え、締めさせていただきます。