概要

ESP-WROOM-32からデータをAmbientに送信して可視化することができた。


背景と目的

先日、ESP-WROOM-32にDHT22を接続して温度、湿度を計測することができた。そこで、計測データをWeb上に送信して可視化してみたい。


詳細

1.可視化手段=Ambient

可視化するには、有料、無料含めて様々なものがあるが、今回は無料で使えるAmbientというサービスを使ってみる。私は初めて使うのだが、Web上に情報がさまざまあるため、始めやすそうだ。


2.Ambientのユーザー登録

こちらから、メールアドレスとパスワードだけで登録ができた。ログインすると、コンソール画面になるので、Myチャネルから、チャネルの作成をしておく。そうすると、チャネルID、リードキー、ライトキーなどがもらえる。


3.ESP-WROOM-32のコーディング

3.1 ライブラリの準備

[[サンプル>]]などを参考に、進めてみた。まず、Ambient接続用のArudinoライブラリがあるので、こちらダウンロード。表示がESP8266とあるが、気にしない。Arduinoのライブラリフォルダに置く。


3.2 コーディング

こちらなどを参考に、書いてみた。1分間隔で、DHT22の計測値を送信している。また、注意が必要なのは、WiFiClientSecureは使えない。(Ambientのエンドポイントが、HTTPだからか?)

#include 
#include "Ambient.h"
#include "DHTesp.h"

unsigned int channelId = 数字;
const char* writeKey = "Ambientのコンソールで確認";
const int GPIO_DHT22 = 33;

WiFiClient client; // WiFiClientSecureではだめ
Ambient ambient; // Ambient
DHTesp dht; // DHT22

void setup() {
  
  Serial.begin(115200);
  
  Serial.println("Attempting to connect to SSID: " + String(YOUR_SSID));
  WiFi.begin(YOUR_SSID, PASSWORD); // Wi-Fiモジュールの初期化
  while (WiFi.status() != WL_CONNECTED) {
      Serial.print(".");
      delay(1000); // 1秒ずつ待つ
  }
  Serial.println("Connected to " + String(YOUR_SSID)); // 接続成功通知
  
  // Ambientの初期化
  bool tf = ambient.begin(channelId, writeKey, &client);
  if (!tf) {
    Serial.println("ambient.begin failed.");
  }

  // DHT22初期化
  dht.setup(GPIO_DHT22, DHTesp::DHT22);

}

void loop() {

  // 計測
  TempAndHumidity newValues = dht.getTempAndHumidity();

  // 結果表示
  Serial.println(" T:" + String(newValues.temperature) + " H:" + String(newValues.humidity));

  // データのセット
  ambient.set(1, newValues.temperature); // 温度
  ambient.set(2, newValues.humidity); // 湿度
  
  // 送信
  Serial.println("send...");
  bool tf = ambient.send();
  if (!tf) {
    Serial.println("ambient.send failed.");
  }
  delay(60 * 1000);

}


4.動作確認

コンソールで、送信先チャネルを選び、グラフを作成。今回は、湿度と温度それぞれを時系列で表示してみた。グラフの設定も、送信したデータが表示されている。※なお、途中から大きく数字が変わっているが、前半はダミーのいい加減な数値を送信したためで、後半は本物のセンサ計測値。

(どうでもいいけど、コンソールのデザインのBootstrap感がすごい。まあ、嫌いじゃないけど。)

20180712221733


まとめ

ESP-WROOM-32からデータをAmbientに送信して可視化することができた。非常に簡単なので、ぜひ今後も利用していきたい。