先日はArduinoとGroveのセンサで部屋の温度と湿度を測定して、Arduino IDEのシリアルモニタに表示させるところまでご紹介させていただきました。

・ArduinoとGroveのセンサで部屋の温度・湿度を測定してみた!

今回は、さらに受信した温度と湿度のデータをNoSQLのmonoDBに保存する方法をご紹介させていただきたいと思います。

Arduinoから送信する温度・湿度のデータをJSON形式にする

まず、Arduinoから送信する温度・湿度のデータをJSON形式で送信するようにします。

Arduino IDEのスケッチの内容を以下のソースに変更します。
もともと「Serial.print()」で送信していたデータの部分を、aJSONモジュールを使用してJSON形式のデータで送信するように変更します。

❏関連資料・記事
AWS IoTでArduinoからのセンサのデータをメールで通知する方法
Rubyの「arduino_firmata」を使ってArduinoのLチカをやってみた!
ArduinoとXBeeとNode.jsを使用してWeb画面からラジコンを操作できるようにしてみた!

サーバ側のNode.jsで温度・湿度のJSON形式のデータをmongoDBに保存する

Node.jsのサーバ側のソース(app.js)を以下のように変更します。
①「var a = JSON.parse(d).Humidity;」で受信した湿度のデータを変数aに格納します。
②「var b = JSON.parse(d).Temperature;」で受信した温度のデータを変数bに格納します。
③「collection.insertOne({ “Humidity”: a,”Temperature”: b }」でコレクションに湿度と温度のデータを入れます。

Node.jsのサーバを起動してデータを受信する

以下の手順でNode.jsのサーバを起動してArduinoから送信されてきた温度と湿度のデータが受信できることを確認します。

[前提] ・上記の手順でArduino IDEのシリアルモニタに温度と湿度が表示されること

①コマンドプロンプトを起動して「app.js」があるところまで移動します。
②「node app.js」でNode.jsのサーバを起動します。
③以下のようにコマンドプロンプトに温度と湿度のデータが表示されることを確認します。

mongoDBに温度と湿度のデータが保存されたことを確認する

以下の記事と同様にして、mongoDBを起動してデータが保存されたことを確認します。

・ArduinoとNode.jsで測定したセンサからの値をmongoDBに保存してみたよ!【#IoTっぽいこと】

①コマンドプロンプトを起動してmongoDBをインストールしたフォルダに移動します
②「mongo」と入力して実行します
③「use mydb」と入力して使用するDBを指定します
④「db.products.find()」と入力し、以下のようにデータベースのコレクション「products」に温度と湿度のデータを保存できたことを確認します

今回は以上の手順で、ArduinoとGroveのセンサで測定した温度と湿度のデータをmongoDBに保存することができました。今回のデータは2種類でしたが、今回と同じ様にしてJSONデータのソースを追記することでもっと複数のデータをやりとりできるようになるかと思います。

今後はこのDBに保存したデータをブラウザで表示したり、解析したりして利用できたらいいかなと思っています!