ラズパイデータをNode-Red使ってIBM Cloud IoTにアップしてみる（初心者向け）

　IBM CLoudのIoTサービス(Internet of Things Platform)は無料で使えるIoTのサービスです。なのでラズパイからデータをクラウドに上げてみるのを試してみるのに良いかと思いやってみました。なおラズパイ側のプログラムはNode-Redを使っているのでコーディングができなくても試せます。
手順は
1. IBM CLoud上にInternet Things of Platformのサービスを作成、デバイスを追加
　　（ここで組織ID,デバイスタイプ、デバイスID、認証トークンの値を設定）
2. ラズパイにNode-redをインストールしてフローを書いてみる。
　　（上記の組織ID,デバイスタイプ、デバイスID、認証トークンの情報が必要になります。
3. フローを実行してIBM Cloudで確認

　上げるデータは今回はラズパイのCPUの温度を送ってみます。
CPUの温度はラズパイ上で以下のコマンドで得ることができます。
% vcgencmd measure_temp

1. IBM CLoud上にInternet Things of Platformのサービスを作成
 IBM Cloudにログインしたら検索でIoTと入れると"Internet of Things Platform"が出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/09869e70-606f-7289-68ed-5c6ca7cfb3f9.png)
無料のライトプランが選ばれているのを確認して作成しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/0be6804e-dc27-7ceb-8b6b-26aa0df74da3.png)
作成できたら”起動”をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/c11cd314-2d30-5c98-26fd-bf73515cb0bf.png)
右上のサインインをクリックしてサインインを進める。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/fe648011-ca3c-4cdc-3ae1-630c10510bf1.png)
続いて右上をクリックして自分のアカウントを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/f81efb16-a175-89e5-8b1d-a1b6826bb48a.png)
接続するライズパイを登録しましょう。まずは”デバイスを追加”をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/968951c9-2d6c-de6e-e0f7-adc76842f99a.png)
任意のデバイスタイプ、デバイスIDを入力します。そして次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/d503ee45-51de-62b2-dfc9-2782144aa400.png)
ここは何も入力しないで次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/6a6fd9d8-7364-e0d6-9735-ef7b272b9868.png)
認証トークンを入れてください。パスワードみたいなものです、後で使うので忘れないようにしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/4df003fa-3dbc-088f-e7c7-c02e12ed91f3.png)
一旦終了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/3693fad3-f137-b7e3-dc07-9a40a7b859dd.png)
ラズパイの方で必要となってくる情報は組織ID,デバイスタイプ、デバイスID、認証トークンです。
デバイスタイプ、デバイスID

2. ラズパイにNode-redをインストールしてフローを書いてみる。
　まずはラズパイにNode-Redをインストールして立ち上げてください。
インストールはこれを参照するといいと思います。
（ただ私のケースでは最初に入っていたNodejsのバージョンが１２でこれだとできなくて最初にNodejsを最新版にしました）
https://nodered.jp/docs/getting-started/raspberrypi
次にWatson IoT PlatformのノードをNode-Redに追加しましょう。パレットの管理を右上のメニューで選んで、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/b6898077-989d-b5e0-3475-7a60cc9a5ff4.png)
検索で Watson-iot と入れると出てくるので”ノードを追加”をクリック
下のようなノードが追加されるでしょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/e2fe24ee-a83c-76e3-1879-0964a7dfdce7.png)
次にこのブログの一番下にあるjsonを読み込んでください。
読み込み方は右のメニューで”読み込み”を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/29b806e4-5c62-5b86-7f25-80912bb25bc0.png)
JSONの中身を貼り付けて”読み込み”
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/620ee629-6747-ae24-bc24-c00ea1f8a9c6.png)
このようなフローができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/eb680c99-132a-58cf-40ad-57749f2c102f.png)
トリガーになる　タイムスタンプ、CPUの温度を測る”vcgencmd measure_temp”ノード、IBM Watson IoTに値を送る”Event"ノードそしてデバック情報を表示するデバックノード(msg.payload)です。
Eventノードに手順１で入れた情報を入力します。
Credentialの右側のペンのアイコンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/a723cb63-88a9-ea0a-2168-b850986db139.png)
組織ID(Organization), デバイスタイプ、デバイスID、認証トークンを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/eee0b9d7-9254-e1d6-70a9-206119e1a065.png)

3. フローを実行してIBM Cloudで確認
入力後デプロイしてタイムスタンプの左側をクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/5d6a569d-0b9a-838f-42d7-5aa8077c7483.png)

右側のデバッグノードに温度が出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/7b3e2ece-8cd0-d18e-f2c2-ec99f8b1e809.png)
同じようにIBM CLoudの方にもデータが入ってます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/b008c9cd-f359-bb96-5ac6-9bc2da943b2d.png)



Node-redフロー

https://github.com/osonoi/raspi_IBM_IoT

[{"id":"36224d1903273e67","type":"tab","label":"フロー 1","disabled":false,"info":"","env":[]},{"id":"70078d30b8fbc447","type":"exec","z":"36224d1903273e67","command":"vcgencmd measure_temp","addpay":"","append":"","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"","x":170,"y":280,"wires":[["e2fa6cc95e70d348","81bff437469350e1"],[],[]]},{"id":"52c1f243a70921e2","type":"inject","z":"36224d1903273e67","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":120,"wires":[["70078d30b8fbc447"]]},{"id":"e2fa6cc95e70d348","type":"debug","z":"36224d1903273e67","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":390,"y":360,"wires":[]},{"id":"81bff437469350e1","type":"wiotp out","z":"36224d1903273e67","authType":"d","qs":"false","qsDeviceId":"","deviceKey":"3527d6833daa93e1","deviceType":"","deviceId":"","event":"event","format":"json","qos":"","name":"","x":410,"y":140,"wires":[]},{"id":"3527d6833daa93e1","type":"wiotp-credentials","name":"","org":"","serverName":"","devType":"","devId":"","keepalive":"60","cleansession":true,"tls":"","usetls":false,"credentials":{"authToken":""}}]