VitconIOT

HOME

VitconIOTはArduinoのデバイスとVitcon IoTサービスを接続するためのライブラリで
す。
VitconIOTのすべてのclassはvitconネームスペースに属します。
これはVitconCommonだけでなく、Vitconで製作した大半のライブラリも同様です。
このライブラリが動作するためにはVitconCommonライブラリが必要です。

VitconIOTライブラリ関連モジュール
VitconBrokerComm
VitconIOTItem

Compatiblity

AVR MCUを使用するArduino機器でのみ正常に動作します。他の機器や他のMCUを使
用する場合の動作は保証できません。

Installing

VitconCommonライブラリとVitconIOTライブラリから圧縮ファイルをダウンロードし、Arduino libraryフォルダに解凍することでライブラリのインストールが完了します。

一般的なArudino libraryフォルダの場所は、

C:\Users\(ユーザーID名)\Documents\Arduino\libraries\

gitコマンドを使用する場合

git clone https://github.com/vitcon-iot/VitconIOT.git

から、VitconIOT保存場所全体を読み込むことができます。

Arduino sketchが実行されている状態でライブラリをインストールした場合、
Arduino sketchを再起動するか、Library Managerを一度実行すれば正常に使用することができます。

Modules

一般的なArudino libraryフォルダの場所は、

C:\Users\(ユーザーID名)\Documents\Arduino\libraries\

gitコマンドを使用する場合

git clone https://github.com/vitcon-iot/VitconIOT.git

から、VitconIOT保存場所全体を読み込むことができます。

Arduino sketchが実行されている状態でライブラリをインストールした場合、
Arduino sketchを再起動するか、Library Managerを一度実行すれば正常に使用することができます。

vitconIOTは2つのモジュールで構成されています。

VitconBrokerComm
VitconIOTItem

VitconIOTItemモジュールはVitcon IoTサーバーとの通信に使用されるIoTアイテムの定義です。
VitconBrokerCommモジュールは、IoTサーバーとの通信を担当するモジュールです。

How to use

Arduino sketchからVitcon IoTサーバーとの通信を行うためには、まずVitconBrokerCommヘッダをincludeしてvitcon namespaceを使用するように宣言します。

#include
using namespace vitcon;

次は、defineでアイテム数を宣言します。

#define ITEM_COUNT 2

あるいはconstでも可能です。

const int ITEM_COUNT = 2;

アイテム数の指定が終わったら、実際のアイテムを宣言します。アイテムは
binary、integer、float、Stringの4つの形態で指定することができます。

・IOTItemBin
・IOTItemInt
・IOTItemFlo
・IOTItemStr

また、各形態は、コンストラクタによって、データの転送方向がDevice->Server、Server-> Deviceに分けられます。
例えば、binaryデータをサーバーに送信するアイテムを宣言する場合は下記のように入力したとします。

IOTItemBin item1;

サーバーからデータを持ってくるアイテムを生成したい場合には、引数としてcallback関数を一つ入力します。
サーバーからbinary形態のデータを受けて、デジタルポートを制御したい場合は、下記のような形態で入力します。

void callback_function(bool);
IOTItemBin item2(callback_function);
.
.
.
void callback_function(bool val) { digitalWrite(2, val); }

または関数のプロトタイプ宣言をせずに定義することも可能です。
この場合には、callback関数の定義が常にアイテムより上に位置しなければなりません。

void callback_function(bool val) { digitalWrite(2, val); }
IOTItemBin item2(callback_function);

すべてのアイテムの宣言が終わったらアイテムの配列を宣言し、アイテムを一つの配列で管理します。
配列に加えたアイテムは、加えた順番で0番から始まるitem indexを持つようになります。

IOTItem *items[ITEM_COUNT] = { &item1, &item2 };

Vitcon IOT Serverに接続してアカウント作成とDevice IDの割当を行います。

(Will be added later)

割り当てられたDevice IDと、生成したアイテムでBrokerCommクラスを宣言します。
BrokerCommは、上記情報以外に、1つのSerial portを必要とし、入力した情報をもとに、IoTサーバーとの通信を行うことになります。
該当するSerial portは、WIFI-LINKのようにシリアルデータをVitcon serverのTCPで送信可能な機器が接続されていなければなりません。

const char device_id[] = “12345678901234567890123456789012”; // Chanage device id to yours
BrokerComm comm(&Serial, device_id, items, ITEM_COUNT);

setup関数のBrokerで使用するSerial portをbaudrate 250000で開きます。

void setup()
{
  Serial.begin(250000);
}

loop関数でDevice->Serverアイテムにどのデータを乗せて送信するかを決めることができます。

void loop()
{
  item1.Set(digitalRead(2));
}

プロセスが継続的に実行されるように、loop関数に

comm.Run();

を追加します。

void loop()
{
  item1.Set(digitalRead(2));
  comm.Run();
}

サーバーとの通信に必要な最低限のコードは下記のようになります。

#include
using namespace vitcon;
#define ITEM_COUNT 2
void callback_function(bool val) { digitalWrite(2, val); }
IOTItemBin item1;
IOTItemBin item2(callback_function);
IOTItem *items[ITEM_COUNT] = { &item1, &item2 };
const char device_id[] = “12345678901234567890123456789012”; // Chanage
device id to yours
BrokerComm comm(&Serial, device_id, items, ITEM_COUNT);
void setup()
{
  Serial.begin(250000);
}
void loop()
{
  item1.Set(digitalRead(2));
  comm.Run();
}

Examples

この項目は、VitconIOTライブラリに含まれている例題になります。

RemotePWM
SimpleSwitch
Temperature

GitHub-VITCON