Edited at

Wio LTE用Milkcocoaライブラリ

More than 1 year has passed since last update.

Wio LTEでもMilkcocoaが使いたいということでArduino IDE向けのライブラリを作りました!


作った経緯

ESP8266用のライブラリがそのまま動くかなと思いきやコンパイルエラーが起きたので、それを解消したものをWio LTE用のライブラリとして公開しています。

https://github.com/junichikatsu/Milkcocoa_Wio_LTE-master


使い方

他のライブラリと同じようにZIP形式でダウンロードして、Arduino IDEでインポートすればライブラリとして取り込まれます。

以下のサンプルも同封しているのでArduino IDEのスケッチ例から選択すれば使用できます。

#include <WioLTEforArduino.h>

#include <WioLTEClient.h>
#include <stdio.h>
#include <Milkcocoa.h>

#define APN "soracom.io"
#define USERNAME "sora"
#define PASSWORD "sora"

/************************* Your Milkcocoa Setup *********************************/

#define MILKCOCOA_APP_ID "...YOUR_MILKCOCOA_APP_ID..."
#define MILKCOCOA_DATASTORE "Wio_LTE"

/************* Milkcocoa Setup (you don't need to change this!) ******************/

#define MILKCOCOA_SERVERPORT 1883

/************ Global State (you don't need to change this!) ******************/

WioLTE Wio;
WioLTEClient WioClient(&Wio);

const char MQTT_SERVER[] PROGMEM = MILKCOCOA_APP_ID ".mlkcca.com";
const char MQTT_CLIENTID[] PROGMEM = __TIME__ MILKCOCOA_APP_ID;

Milkcocoa milkcocoa = Milkcocoa(&WioClient, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);

void onpush(DataElement *elem) {
SerialUSB.println("onpush");
SerialUSB.println(elem->getInt("v"));
};

void setupLTE() {
delay(200);

SerialUSB.println("");
SerialUSB.println("--- START ---------------------------------------------------");

SerialUSB.println("### I/O Initialize.");
Wio.Init();

SerialUSB.println("### Power supply ON.");
Wio.PowerSupplyLTE(true);
delay(5000);

SerialUSB.println("### Turn on or reset.");
if (!Wio.TurnOnOrReset()) {
SerialUSB.println("### ERROR! ###");
return;
}

SerialUSB.println("### Connecting to \""APN"\".");
delay(5000);
if (!Wio.Activate(APN, USERNAME, PASSWORD)) {
SerialUSB.println("### ERROR! ###");
return;
}
}

void setup() {
Serial.begin(115200);
delay(10);

SerialUSB.println(F("Milkcocoa SDK demo"));

setupLTE();

SerialUSB.println( milkcocoa.on(MILKCOCOA_DATASTORE, "push", onpush) );
};

void loop() {
milkcocoa.loop();

DataElement elem = DataElement();
elem.setValue("v", 1);

milkcocoa.push(MILKCOCOA_DATASTORE, &elem);
delay(7000);
};

MilkcocoaのAPP IDを入力すれば、pushと通知が確認できます。

Milkcocoaはリアルタイムにデータの更新、保存、通知ができるサービスです。使い方はチュートリアルを参考にしてください。


最後に

setup()の最初にSerial.begin(115200);を行っていますが、本来は不要のはずです。ですが、なぜかこれが無いと動作しないので入れています。とりあえず問題なく動作するので公開しました。自分でも調査中ですがもし原因がわかった方がいらっしゃれば修正版のプルリク投げてください~。

次はJavaScript版も作りたいと思っています。