BOSCH製IPカメラを利用した人数カウント（Bluemix設定編）

# BOSCH製IPカメラから人数カウントデータを受け取る

[前回の投稿](http://qiita.com/c-nova/items/e02644fa436bad7db601)で行ったカメラ側の設定が完了したので、今回はBluemix側の設定を行います。

この内容は多分以下の3本立てになると思います。今回は以下の2番に該当します。

1. BOSCH製IPカメラでの人数カウントを行う設定
2. **BOSCH製IPカメラから人数カウントデータを受け取る**
3. 人数カウントデータをEagle Eye Networksに保存する

## 環境、事前確認
[前回の投稿](http://qiita.com/c-nova/items/e02644fa436bad7db601)の本項目をご参照下さい。

## Bluemix側の準備
Bluemix側ではいつもどおり？node.jsとNode-REDを使って実装します。
今回も簡易的にフローをインポートしていきたいと思います。
そのためには事前に**「環境、事前確認」**の内容を参考に、環境を整えておいてください。

## フローのインポート

以下の内容をコピーして、Node-REDにインポートを行って下さい。

```
[{"id":"3ae66bd6.8003f4","type":"http in","z":"2016f88.2cc7808","name":"18F_Enter","url":"/pcount1","method":"get","swaggerDoc":"","x":140,"y":500,"wires":[["b04e92c8.443a4","54062a58.889494"]]},{"id":"b04e92c8.443a4","type":"debug","z":"2016f88.2cc7808","name":"","active":false,"console":"false","complete":"true","x":330,"y":440,"wires":[]},{"id":"53ffe83f.913468","type":"http response","z":"2016f88.2cc7808","name":"","x":850,"y":500,"wires":[]},{"id":"54062a58.889494","type":"function","z":"2016f88.2cc7808","name":"Set Num&Ent","func":"msg.payload = 1;\nmsg.entrance = \"Enter\";\nmsg.camName = \"BOSCH_DINION_IP_ultra_8000\";\n\nreturn msg;","outputs":1,"noerr":0,"x":360,"y":500,"wires":[["1bc18353.2d640d"]]},{"id":"56fae4a1.22598c","type":"cloudant out","z":"2016f88.2cc7808","name":"","cloudant":"","database":"count","service":"count-cloudantNoSQLDB","payonly":true,"operation":"insert","x":850,"y":560,"wires":[]},{"id":"1bc18353.2d640d","type":"function","z":"2016f88.2cc7808","name":"Set time and count","func":"var dtObj = new Date();\n\nvar datetime = [dtObj.getFullYear() + '-',\n    ( '0' + (dtObj.getMonth() + 1)).slice(-2) + '-',\n    ( '0' + dtObj.getDate() ).slice(-2) + '-',\n    ( '0' + dtObj.getHours()).slice( -2 ) + '.',\n    ( '0' + dtObj.getMinutes()).slice( -2 ) + '.',\n    ( '0' + dtObj.getSeconds()).slice( -2 ) + '.000000'\n    ].join(\"\");\n\nmsg.st = [dtObj.getFullYear() + '-',\n    ( '0' + (dtObj.getMonth() + 1)).slice(-2) + '-',\n    ( '0' + dtObj.getDate() ).slice(-2) + ' ',\n    ( '0' + dtObj.getHours()).slice( -2 ) + ':',\n    ( '0' + dtObj.getMinutes()).slice( -2 ) + ':',\n    ( '0' + dtObj.getSeconds()).slice( -2 ) + '.000'\n    ].join(\"\");\n\nmsg.payload = {\n    timestamp: datetime,\n    count: msg.payload,\n    entrance: msg.entrance,\n    camera: msg.camName\n};\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":500,"wires":[["f8becca5.0c2df","56fae4a1.22598c","53ffe83f.913468","f0eced9f.99cd5"]]},{"id":"f8becca5.0c2df","type":"debug","z":"2016f88.2cc7808","name":"","active":false,"console":"false","complete":"false","x":870,"y":440,"wires":[]},{"id":"ae82aa3d.a64cd8","type":"http in","z":"2016f88.2cc7808","name":"18F_Exit","url":"/pcount2","method":"get","swaggerDoc":"","x":140,"y":560,"wires":[["b04e92c8.443a4","5b7874a0.51f5ec"]]},{"id":"5b7874a0.51f5ec","type":"function","z":"2016f88.2cc7808","name":"Set Num&Ent","func":"msg.payload = 1;\nmsg.entrance = \"Exit\";\nmsg.camName = \"BOSCH_DINION_IP_ultra_8000\";\n\nreturn msg;","outputs":1,"noerr":0,"x":360,"y":560,"wires":[["1bc18353.2d640d"]]}]
```

インポートが完了すると、以下のようなフローが表示されます。
![Flow.png](https://qiita-image-store.s3.amazonaws.com/0/106468/48f9cb8b-60ca-ae1d-bd47-5d9a23d056f2.png)


### 試してみよう！
カメラ側の設定が完了すれば、あとはテストを行うだけです。
各デバッグノードをオンにして、実際にカメラの前を横切ってみましょう。
![LineOver.png](https://qiita-image-store.s3.amazonaws.com/0/106468/af126bd6-70b8-d200-148a-a5ac64889e27.png)

上のスナップショットは便宜的に緑色の線を入れておりますが、ここではこの部分にライン超えの線があると仮定しています。

横切った際にカメラが認識し、Bluemixに情報を転送し、Bluemix側で受け取れれば、以下のようなメッセージが**「debug」**タブにJSONオブジェクトとして表示されます。

```
{ timestamp: "2017-07-25-02.43.50.000000", 
count: 1, 
entrance: "Exit", 
camera: "BOSCH_DINION_IP_ultra_8000" }
```

この情報はちゃんと設定されていれば、Cloudantにも記録されます。Cloudantに記録する際には事前に指定したデータベースを作成しておいて下さい。


## Eagle Eyeと連携してみよう

次回、**「人数カウントデータをEagle Eye Networksに保存する」**では、今回の途中で紹介したCloudantへの保存ではなく、Eagle Eyeに動画データと共にメタデータを保存する方法をご紹介します。
お楽しみに！


##ライセンス、著作権等

本スクリプト、ノード構成、エクスポート内容についてはMIT Licenseを適用します。
Eagle Eye Networksの商標およびロゴについてはEagle Eye Networks, Inc.に帰属します。
IBMおよびIBM Bluemix、Node-Redの商標およびロゴについてはInternational Business Machines Corporationに帰属します。
node.jsの商標およびロゴについてはNode.js contributorsに帰属します。
BOSCH及びBOSCHロゴは、、 Robert Bosch GbmHおよびその関連会社（以下、「ボッシュ」）の著作権として、著作権に関する各種国際条約、各国の著作権法およびその他の各種法律（以下、「法律等」）によって保護されています。