Gigabits IoT Platform(ベータ版)にESP32でデータ送信してみた

概要

Gigabitsという新しいIoTプラットフォームができていたので、ベータ版を触ってみました。

ESP32の開発元であるEspressifと共同でリリースを出していました。

gitabits.ioの基本機能

ざっくりいうとMQTTでデータを投げるとグラフ化してくれるサービスです。kibanaっぽいグラフィックなので、きれいなダッシュボードができそうです。

ただし、まだまだ作り途中って感じですし、データのフィルタリングもそれほどできません。

gitabits.io社とは?

ここを見ると2019年に設立したばかりの会社で、スタートアップみたいですね。

gitabits.ioの参加方法

上記のページから参加申し込みをすると、翌日ぐらいのメールが届きます。その中に書いてあるキーを使ってアカウント登録をします。

使い方

メインページの下の方に、PDFで使い方が書いてありました。サンプルはセンサーモジュールを使っていますが、とりあえず外部センサーを使わないで動かしてみました。

プロジェクト作成

ログインした直後の画面からProjectを追加します。プラスボタンを押すと問答無用でNew Projectが増えます。

メニューからEdit Projectを選びます。

プロジェクト名を適当につけます。Zip Codeは入れなくても大丈夫です。ただし、アメリカの郵便番号なので、実質日本では利用できません。Saveで保存します。

デバイス追加

右側にあるAdd Devicesボタンを押します。

追加するデバイス一覧がでるので、ESP32を選びます。

画面下にAddedと表示されるだけで、この画面から変わりません。一つ前の画面に戻ってくれたほうがわかりやすいと思います。。。

左上のパンくずリストから、Editを押して一つ前の画面に戻るとデバイスが追加されています。Device KeyとSecretをこのあと使うので確認しましょう。本当はデバイス名とかを編集したほうがいいです。

保存するデータの設定もこのデバイスで行いますが、いまのところ設定しなくても保存はされるみたいです。

環境構築

  • Arduino IDE
  • Gigabitsライブラリ
  • ArduinoJson(Gigabitsライブラリを入れると依存として一緒に入る)

上記で動くと思います。標準ライブラリマネージャでGigabitsライブラリを入れれば、依存も含めて一緒に入るようになっています。

Wi-Fi設定

#include <WiFi.h>

void setup() {
  WiFi.begin("SSID", "PASSWORD");
}

void loop() {
}

ESP32は最後に接続したWi-Fi情報を覚えています。そのため、このブロクでは各スケッチでSSIDとパスワードを記述するのを非推奨としています。

上記のようなスケッチで一度接続を試しておくと、以後はWiFi.begin()のように引数を省略することで、Wi-Fi接続ができるようになります。

M5StickCの人は上記のような設定初期化スケッチを利用してもよいと思います。

最小スケッチ

/*
 *  This sketch demonstrates using the Gigabits device library 
 *  with an ESP32 using an unencrypted connection
 */

#include <WiFi.h>
#include <Gigabits.h>

WiFiClient net;
Gigabits gigabits;

unsigned long lastMillis = 0;

void setup() {
  Serial.begin(115200);
  
  WiFi.begin();

  // Add a listener to call when commands are received over Sensor Index 3
  gigabits.addCommandListener(3, [](int32_t *data, size_t sz) {
    for (size_t i = 0; i < sz; i++) {
      int32_t command = data[i];
      Serial.print("Received a: ");Serial.println(command);
      // Do something with the command
    }
  });
  Serial.println("Connecting..");
  
  // Start gigabits with the device key and a Client type object
  gigabits.begin("yourdevicekey", "yoursecret", net, "mqtt.gigabits.io", 1883);
}

void loop() {
  // Call this frequently
  gigabits.run();

  if (millis() - lastMillis > 10000) {
    lastMillis = millis();
    Serial.println("Sending data...");
    // Send data to Sensor Index 1
    gigabits.sendRecord(1, (uint32_t)10);
    // Send data to Sensor Index 2
    gigabits.sendRecord(2, (uint32_t)(millis() % 100));
  }
}

上記はGigabitsライブラリに入っていたESP32Exampleスケッチです。WiFi.begin()のところだけ引数をなくしてあります。

“yourdevicekey”, “yoursecret”のところをプロジェクトのデバイスで割り当てられた文字列に置換してあげてください。

このスケッチだとデータを2個転送しています。

    gigabits.sendRecord(1, (uint32_t)10);
    gigabits.sendRecord(2, (uint32_t)(millis() % 100));

一個目が固定値の10で、二個目が起動経過ミリ秒の100で割ったあまりですね。

デバイスにセンサー追加

アップするデータの個数が確定したので、センサーを追加します。このセンサーってのが実質データみたいですね。

この画面でAddを押すと、押した回数分センサーが追加されます。今回は2回押します。例によって画面は変わらないのでわかりにくいです。

パンくずリストから「My New Device」を選んで元の画面に戻ってください。

増えました。デバイスの名前も本当は変えたほうがわかりやすいですね。センサーの情報をEditを押して編集画面を開いてみましょう。

現在は整数型のGeneral Sensorしかないようです。グラフで表示するようの名前と色はここで変更可能です。

ダッシュボード編集

プロジェクトトップまでパンくずリストで戻ると、ものすごく寂しい画面が開くと思います。左からNew Chartを選んでグラフを追加します。

右下の角で大きさを変更できます。右上のメニューから編集ができます。

グラフの設定をします。変更するのは名前だけかな?

描画するセンサーのデータを選びます。Lineで既存のグラフかNew Lineを選択できます。追加なのでCreate New Lineを選び、デバイスとセンサーを選択します。

ここでデバイスやセンサーに名前をつけていないと上記のように非常にわかりにくいですが、データの並びで区別はできます。

さすがにわかりにくかったので、センサー1と2と名前をつけてきてから、Create New Lineを2度繰り返してみました。2個のグラフが描画されているのがわかるのでしょうか?

特徴的な機能として、外部データも一緒に描画することができます。この例だと設定した郵便番号の場所の気温を描画する設定になります。

数分待つと追加されます。華氏53.01度だから摂氏12度ぐらい?

予想としては過去データも表示してくれるのかと思ったら、画面上のリアルタイム取得で描画していて、どこにも保存していないっぽいですね。ちょっと予想と違う動きだったので、グラフ描画できていないと思ってしまいました。

リアリタイムデータ確認

100ミリ秒間隔で送信してみました。グラフの横1マスが1秒なので、10ポイント近くデータはありそうです。

ただこのデータエクスポートできないんですよね。。。

長時間データ

昨晩から接続していたプロジェクトのグラフです。M5StickCのCPU温度とバッテリー温度を保存しています。途中でバッテリー充電をやめたので下がっていって、データがなくなっています。その後充電したので復活していますが、あいだのデータはなんとなくのグラフで補間されていますね。

Live Dataのチェックを外すと、範囲指定を自由に変更できるのですが、現状は3時間ぐらいのデータしか保存していないみたいです。

Liveと同じ範囲しか見えません。。。

まとめ

これから面白くなりそうなプラットフォームですが、現状はまだまだ荒削りです。標準的な機能と料金体系や、保存されるデータ期間や最小間隔が気になります。

コメントする

メールアドレスが公開されることはありません。

管理者承認後にページに追加されます。公開されたくない相談はその旨本文に記載するかTwitterなどでDM投げてください。またスパム対策として、日本語が含まれない投稿は無視されますのでご注意ください。