概要

ThingSpeakはMATLABのメーカーであるMathWorksが提供するIoTプラットフォームです。

MATLABを使用した分析機能が利用できるという強力な拡張性がありますが、以下に示すように、基本的にはIoTノードで気温や機械の回転数などの時系列データを収集してサーバーに送付蓄積し、それをグラフで可視化するといったシンプルな利用構成になっています。

  • IoTノードからのIoTサーバーへの時系列データの送信と記録
  • IoTサーバーに記録された時系列データのグラフによる可視化
  • MATLABのコードを使用しIoTサーバーに記録された時系列データの分析

Free ライセンス

ThingSpeakを使用するライセンスにはいくつかありますが、まずは無料で使用できるFreeライセンスを使用して見ましょう。

Free ライセンスでは以下のような制限があります。

  • 使用できるチャネル数: 4
  • メッセージ投稿間隔:最小で15秒
  • MATHLAB実行タイムアウト:20秒

アカウントの作成

チャネルの作成

チャネルの設定

API KEYの取得

センサーノードのスケッチ

データの可視化

グラフの設定

Arduino用ライブラリ

ライブラリマネージャで導入可能

チャネルの設定

WEBの設定ページ

データを受け取る新しいチャネルを作成し、気温、湿度、気圧の3つのフィールドを設定

スケッチ例

ESP8266-SLIMにBME280を接続し、そのデータをThingSpeakに送るスケッチ例を示します。

気温等を計測してIoTサーバーに送るIoTノードのスケッチは、以下の様にシンプルに記述することができます。

#include <BME280I2C.h>
#include <Wire.h>
#include <ESP8266WiFi.h>
#include "secrets.h"
#include "ThingSpeak.h"

BME280I2C bme;

char ssid[] = SECRET_SSID;  // your network SSID (name)
char pass[] = SECRET_PASS;  // your network password
WiFiClient client;

unsigned long myChannelNumber = SECRET_CH_ID;
const char* myWriteAPIKey = SECRET_WRITE_APIKEY;

void setup() {
  Serial.begin(115200);  // Initialize serial

  Wire.begin();
  bme.begin();

  WiFi.mode(WIFI_STA);
  if (WiFi.begin(SECRET_SSID, SECRET_PASS) != WL_DISCONNECTED) {
    ESP.restart();
  }

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
  }

  ThingSpeak.begin(client);  // Initialize ThingSpeak
}

void loop() {
  float temp, hum, pres;
  BME280::TempUnit tu(BME280::TempUnit_Celsius);
  BME280::PresUnit pu(BME280::PresUnit_hPa);

  bme.read(pres, temp, hum, tu, pu);

  ThingSpeak.setField(1, temp);
  ThingSpeak.setField(2, hum);
  ThingSpeak.setField(3, pres);

  // write to the ThingSpeak channel
  int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
  if (x == 200) {
    Serial.println("Channel update successful.");
  } else {
    Serial.println("Problem updating channel. HTTP error code " + String(x));
  }

  delay(60 * 1000);  // Wait 60 seconds to update the channel again
}