enebular editorとFirebaseで寒冷地計測をしてみよう

image

今回はちょっと実験で、先日行ってきた寒冷地計測をしてみようと思います。

実は2年前にも似たような計測を行っております。

寒冷地に行ってきたのでenebularのInfoMotionで室内と室外の温度変化を測定してみる

このときは、WEB上のenebularからのESP32 Devデバイスでの対応。今回は、enebular editorでセンサーの値を見ながら、Nefry BTでやってみることとします!

まず計測デバイス NefryBT を準備

以前の記事を参考に設定していきます。

NefryBTとenebularをFirebaseと連携しよう

温度・湿度・気圧を計測できるGROVE – 温湿度・気圧センサ(BME280)を使って対応していきます。

Nefry BTに書き込んだソースはこちらです。Nefry BTはR3を使いました。

#include <Nefry.h>
#include <NefryFireBase.h>
#include <NefryDisplay.h>
#include "Seeed_BME280.h"
#include <Wire.h>

BME280 bme280;

NefryFireBase firebase;

// Nefryメッセージ用Buffer変数
char NefryTextBuffer[50];

void setup() {
  // ボタンの有効化
  Nefry.enableSW();
  // FireBaseに接続するための設定
  firebase.begin("   ***myfirebaseID***   .firebaseio.com");  // 設定を書き換える
  // 起動時に一度データを0で送る
  DataElement elem = DataElement();
  elem.setValue("sensor", 0);
  firebase.write("Nefry", &elem);
  //
  Serial.begin(115200);
  if(!bme280.init()){
    Serial.println("Device error!");
  }
}

void loop() {
  
  // SWが押されたらダミーデータを送る
  if (Nefry.readSW()) {
    // ランダムの値を生成
    int sensorValue = random(300, 500);
    // ディスプレイ表示
    Serial.print("sensorValue:");
    Serial.println(sensorValue);
    sprintf(NefryTextBuffer,"data: %d",sensorValue);
    NefryDisplay.print(NefryTextBuffer);
    // Firebaseにデータを送る
    DataElement elem = DataElement();
    elem.setValue("sensor", sensorValue);
    firebase.write("Nefry", &elem);
    // ディスプレイ表示
    Serial.println("send ok...");
    sprintf(NefryTextBuffer,"sended...");
    NefryDisplay.print(NefryTextBuffer);
    
    Nefry.ndelay(500);
  }

  //
  float t = bme280.getTemperature();
  float h = bme280.getHumidity();
  float p = bme280.getPressure();
  float a = bme280.calcAltitude(p);

  //get and print temperatures
  Serial.print("Temp: ");
  Serial.print(t);
  Serial.println("C");//The unit for  Celsius because original arduino don't support special symbols
  
  //get and print atmospheric pressure data
  Serial.print("Pressure: ");
  Serial.print(p);
  Serial.println("Pa");

  //get and print altitude data
  Serial.print("Altitude: ");
  Serial.print(a);
  Serial.println("m");

  //get and print humidity data
  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.println("%");
  
  //
  sprintf(NefryTextBuffer,"T:%3.1fC H:%3.1f%%",t,h);
  NefryDisplay.print(NefryTextBuffer);
  sprintf(NefryTextBuffer,"A:%3.1f m",a);
  NefryDisplay.print(NefryTextBuffer);
  // Firebaseにデータを送る
  DataElement elem = DataElement();
  elem.setValue("t", t);
  elem.setValue("h", h);
  elem.setValue("a", a);
  firebase.send("enebular/NefryBT", &elem);

  delay(5000);
  
}

書き込むと、このように動作します。

image

まず、これで、Firebaseにデータが蓄積されます。

いよいよ野外を計測してみる

さて、データが蓄積できたので、いよいよ野外にデバイスを置いて動かしてみましょう。

enebular editorでローカル上でダッシュボードを試してみよう

この記事をベースにして、今回は「しっかりしたデータ可視化をINFOMOTIONで行う前に、一旦ダッシュボードでデバイスの稼働状況を見てみる」という想定で画面を作ります。

image

このように作りました。

image

外に置いて、寒いのですぐ室内に退散します!

image

enebular editorで起動してみてみましょう。

image

enebular editorを起動しておくと、

Introduction · GitBook

このように、1880ポートで見れます。具体的なURLを確認する方法は、前回の記事を参考にしてみてください。

image

さて、そんなわけで、温度が2度! 低い!!!! 寒かった!

けれど、実はこの仕組みだとマイナス 0 度以下が表示できなかったことを後から気づきましたが、うまく表示できてよかったです。

やってみて思うこと

1年前、2年前と比べてenebularも多様になってまいりました!

やはり、enebular editorはオンラインエディタと違い、制限時間を気にすることなく作業ができるのでよいですね。もちろん、しっかりとした可視化ダッシュボードはINFOMOTIONに任せますが、すぐにセンシング状況を確認するにはうってつけです。

また、もちろん、インターネットにつながる必要がありますが、Firebaseとの接続についても、以前よりドキュメントも整って扱いやすくなっており、変わってきているところです。