4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Node-REDAdvent Calendar 2020

Day 21

Node-REDでconect+ Studioにデータを送信してみる

Last updated at Posted at 2020-12-20

#概要
当社が運営する「にじいろのはな保育園」では、
保育室の温湿度モニタリングにconect.plus社の「conect+ Studio」を使用していますが、
先日、conect.plusの中の人から、conect+ Studio用のNode-REDノードがあると聞き、
HACCP向けシステムで使ってみたお話。

#システム構成
こんな感じです。
温度センサーにはInkbird IBS-TH1を使用しています。
温度、湿度が取得できます。
データはBluetoothのアドバタイズメッセージで送信してきます。
conect+ Studioにデータを送信するために、Raspberry Pi Zero WH(OSはRaspbian)を使用します。
image.png

実物を並べてみるとこんな感じ。
Raspberry Pi Zero WHより温度センサーの方が大きい感じ(笑)。
image.png

#conect+ Studio
conect+ Studio側の設定を行います。
conect+ Studioにログイン後、左側メニューから「データアダプター」を選択します。

以下のような画面が表示されるので、「データアダプターを追加」をクリックします。
image.png

以下のような画面が表示されるので「Web API」を選択します。
image.png

データアダプター名を入力して、「保存する」を選択してください。
image.png

データアダプターの一覧に戻ります。
先ほど追加したデータアダプターが追加されていることが確認できます。
追加したデータアダプターの「?」アイコン(リファレンス)をクリックします。
image.png

以下のような画面が表示されるので、ワークスペースIDとWebAPIキーをコピーしておいてください。
image.png

#Node-RED側の設定
###conect+ Studio用ノードの追加
表示された「node-red-contrib-conect-plus」の「ノードを追加」をクリックします。
image.png

以下のようなメッセージが表示されるので、「追加」をクリックします。
image.png

追加が完了すると、パレットにconect plusグループが追加され、conect+ Studioのデータ送受信できるノードが表示されます。
image.png

###Inkbird IBS-TH1用の設定
今回使用する温度センサーは、BLEのアドバタイズメッセージで温湿度データを送信してきます。
Node-REDでのデータを受信するために、node-red-contrib-blebeacon-scannerノードを使用します。
yossihard/node-red-contrib-blebeacon-scanner

このノードが必要なライブラリ等をインストールするために、
ラズパイのコンソールで以下のコマンドを実行してください。

> sudo apt-get install libbluetooth-dev libudev-dev pi-bluetooth
> npm install @abandonware/noble

conect+ Studio用ノードの追加と同じ手順で、node-red-contrib-blebeacon-scannerノードを追加してください。
追加するとパレットに以下のようなノードが表示されます。
image.png

###フローの作成
フローを作成していきます。
以前に書いた記事「SORACOM Harvest Dataを使ってHACCP向けPoCシステムを作る」と、
ほぼ同じフローです(笑)。
⇒SORACOM Harvest Data用のHTTP requestノードが、conect+ Studio用のノードに変わっただけ。

image.png

上側のフローの「データ変換・保存」と書かれたノードで、
送信データを作成してグローバル変数に保存しています。
処理はこんな感じ。

var globalVal = global.get('SensorData');
if (!globalVal) {
  globalVal = {};
} 

var date = new Date();
var now = date.getFullYear()+"-"+(("0"+(date.getMonth()+1)).slice(-2))+"-"+(("0"+date.getDate()).slice(-2)) +
"T"+(("0"+date.getHours()).slice(-2))+":"+(("0"+date.getMinutes()).slice(-2))+":"+(("0"+date.getSeconds()).slice(-2))+"+09:00";

var buf = msg.payload.other

var temp = buf.readInt16LE(0) / 100;
var rssi = msg.payload.rssi;
var payload =  { sensingAt:now, value01:temp};
var newmsg = { payload:payload };

globalVal[msg.payload.id] = payload;
global.set('SensorData',globalVal);

return newmsg;

conect+ Studioへのデータ送信には、studio-sendノードを使用します。
Workspace IDとWebAPI Keyには、conect+ Studioのデータアダプターのリファレンス画面に記載されていたものを使用します。
Device IDとSensor IDには任意の値を入力してください。
ここではDeviceIDにRoom1、Sensor IDにSensor1を設定しています。
image.png

データが送信されたら、conect+ Studio側で確認してみます。
左側のメニューから「データ」を選択し、データアダプター・デバイス・センサーを選択して、
「検索」ボタンをクリックしてください。
受信されたデータが表示されます。
image.png

#見える化
conect+ Studioでは、受信したデータをスタイリッシュに表示できます。
画面はドラッグ&ドロップで作っていけるので、
フロントエンドエンジニアではなくても簡単に作成できます。

以下は当社の保育園の室温モニタリング画面です。
image.png

#まとめ?
今回はconect+ Studioのノードを使ってみました。
他にもNode-RED向けに様々なサービスのノードがリリースされているので、
システム構築が本当に楽に早くできますねー!

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?