このページの目次
概要
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
}