LoginSignup
3
3

ESP-WROOM-02/32 で IIJ Machinist を使用する

Last updated at Posted at 2019-05-20

サービス終了のお知らせ

IIJ Machinist はサービスを終了いたしました。ご愛顧ありがとうございました。

以下の記事は過去の記録として残してありますが、現在は動作させることが出来ません。ご了承ください。

この記事について

ESP-WROOM-02(以下ESP8266), ESP-WROOM-32(以下ESP32) から、IIJ Machinist を利用して値を可視化します。

いきなりですが

以前書いた記事 にもさらっと書いたのですが、簡単に使うためのライブラリを作成してあります。
前回の記事からの変更点として、前回は ESP32 でしか動作しなかったものを、ESP8266 でも動作するようにバージョンアップしました。

使用方法

ライブラリのインストール方法

上記ページより、緑の "Clone or download" のボタンを押し、続いて "Download ZIP"のリンクをクリックして、ファイルをダウンロードしてください。
Arduino IDE より、メニューの スケッチ → ライブラリをインクルード → zip形式のライブラリをインストール を選択し、ダウンロードしたzipを選択すれば使用可能になります。

事前準備

以前書いたことのコピペですが、以下のことをやっておきます。

  • Machinist にサインアップして、アカウントを作成します(現時点では無料です)。
  • Machinistのマニュアル(Getting Started)を軽く読んでおきます。
  • Machinistにログインし、管理UIからプロフィールの画面からAPIキーを取得しておきます。
  • Machinistの管理UIから、エージェントを1つ作成しておきます。

実装

サンプルを開くと以下のようなコードが表示されます。
これは、乱数を Machinist にデータ送信するだけのプログラムです。

random_value_sender.ino
#ifdef ARDUINO_ARCH_ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include "IIJMachinistClient.h"

#define WIFI_ID "YOUR WIFI SSID HERE"
#define WIFI_PASS "YOUR WIFI PASSWORD HERE"
#define MACHINIST_API_KEY "YOUR Machinist API KEY here"

IIJMachinistClient c(MACHINIST_API_KEY);

void setup()
{
  Serial.begin(115200);
  Serial.println();
  delay(3000);

  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_ID, WIFI_PASS);

  // wait for WiFi connection
  Serial.print("\nWaiting for WiFi to connect...");
  while ((WiFi.status() != WL_CONNECTED))
  {
    Serial.print(".");
    delay(1000);
  }
  Serial.println(" connected");

  randomSeed(analogRead(0));
  c.setDebugSerial(Serial);
  c.init();
}

void loop()
{
  float value = (float)random(10000) / 100.;

  //あらかじめ Machinist の UI から "test" という名称の Agent を作成しておきます。
  int s = c.post("test", "NAME\\SPACE", "NAME", value, "KEY", "VALUE");
  if (s == 200)
    Serial.println("OK");
  else
    Serial.println("NG status=" + String(s));
  delay(60 * 1000);
}

ポイント解説

サンプルのコードはわかりにくいかもしれませんが、やるべきことは非常にシンプルです。

ライブラリのinclude

#include "IIJMachinistClient.h"

インスタンス生成 & 初期化

IIJMachinistClient のインスタンスをグローバルで生成しておきます。引数は Machinist の UIから取得したAPIキーの文字列です。
setup()関数内で、Wi-Fiに接続後、c.init() 関数で IIJMachinistClientの初期化を行います。

IIJMachinistClient c(MACHINIST_API_KEY);

void setup()
{
  // ここでWi-Fiに接続しておく
    ....
  // Machinist Clientの初期化
  c.init();
}

値の送信

c.post()関数を使用してMachinistへ値を送信します。センサなどから取得した値を送ればOKです。
post()関数は引数により何種類かありますので、詳細は githubの説明ページ をご参照ください。

void loop()
{
  ...
  // 単純な値送信
  int s = c.post("Agent文字列", "namespace文字列", "name文字列", 送信値);
  // タグ付きでの値送信
  int s = c.post("Agent文字列", "namespace文字列", "name文字列", 送信値, "Tagキー文字列", "Tag値文字列");
  // 時間を指定しての値送信
  int s = c.post("Agent文字列", "namespace文字列", "name文字列", 送信値, "Tagキー文字列", "Tag値文字列", unixtime値);
  ...
}

さいごに

このライブラリはIIJ非公式です。私が勝手に作ったものですので、ご質問・ご要望はIIJに送らないで、この記事なりgithubのページの方にいただけるとありがたいです。

3
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3