EzData 是 M5Stack 提供的一个 IoT 云端数据储存服务,不同的设备之间可以通过唯一Token,向储存队列中插入或提取数据,实现数据共享。
≤1000 条setData 插入新数据到队列中,使用堆栈的方式 (先入后出),每次插入数据到队列的首位。getData 取出位于队列首位的数据。 原数据在序列中删除。addToList 插入新数据到列表中,每次插入新数据,追加到列表未尾。getData 读取指定索引或范围的列表数据。 返回数据为一个列表打开 UiFlow Web IDE 1.0 版本,在 Blockly 列表中点击 EzData 选项,可查看当前浏览器的 Token。为保证 Token 的唯一性,请使用固定的浏览器,且不要开启无痕模式。
该案例程序使用 CoreS3 设备实现 Ezdata 数据上传与获取测试,程序编译前需安装以下依赖库,并将 Token 及 Wi-Fi 信息填写到代码中。
#include "M5Unified.h"
#include "M5_EzData.h"
const char* ssid = "ssid";
const char* password = "password";
const char* token = "token";
void setup()
{
M5.begin();
M5.Display.println("Wi-Fi connecting...");
if (setupWifi(ssid, password)) {
M5.Display.println("Wi-Fi connected!");
} else {
M5.Display.println("Wi-Fi connect failed");
}
}
void loop()
{
// Save the data 100 to the top of the testData topic queue.
// 保存数据 100 至 testData 队列首位
if (setData(token, "testData", 100)) {
M5.Display.println("Success sending data to the testData");
} else {
M5.Display.println("Fail");
}
delay(5000);
// Save 3 data in sequence to the first place of testList.
// 依次保存3个数据至 testList 首位
for (int i = 0; i < 3; i++) {
if (addToList(token, "testList", i)) {
M5.Display.printf("Success sending %d to the list\n", i);
} else {
M5.Display.println("Fail");
}
delay(100);
}
delay(5000);
// Get a piece of data from a topic and store the value in result.
// 从一个 topic 中获取一个数据,并将值存储在 result
int result = 0;
if (getData(token, "testData", result)) {
M5.Display.printf("Success get data %d\n", result);
} else {
M5.Display.print("Fail to get data\n");
}
delay(5000);
// Get a set of data from a list and store the values in the Array array.
// 从一个 list 中获取一组数据,并将值存储在 Array 数组中
int Array[3] = {0};
if (getData(token, "testList", Array, 0, 3)) {
M5.Display.print("Success get list\n");
for (int i = 0; i < 3; i++) {
M5.Display.printf("Array[%d]=%d,", i, Array[i]);
}
M5.Display.println("");
} else {
M5.Display.println("Fail to get data");
}
delay(5000);
// Remove data
// 移除数据
if (removeData(token, "testData"))
M5.Display.printf("Success remove data\n");
else
M5.Display.println("Fail to remove data");
if (removeData(token, "testList"))
M5.Display.printf("Success remove data from the list\n");
else
M5.Display.println("Fail to remove data");
delay(5000);
M5.Display.fillScreen(BLACK);
M5.Display.setCursor(0, 0);
} 如果需要查看或者分享数据,可以通过以下 URL 地址,并传入 Token 参数访问 EzData 控制面板页面。
# https://ezdata.m5stack.com/debugger/?token=dCtdfg3u5id72J8xxxxxxxxxxxxxxx
https://ezdata.m5stack.com/debugger/?token={token}
函数原型:
int setData(const char *token, const char *topic, int val); 功能说明:
传入参数:
返回值:
函数原型:
int getData(const char *token, const char *topic, int &result); 功能说明:
传入参数:
返回值:
函数原型:
int addToList(const char *token, const char *list, int val); 功能说明:
传入参数:
返回值:
函数原型:
int *getData(const char *token, const char *list, int *Array, int offset, int count); 功能说明:
传入参数:
返回值:
函数原型:
int removeData(const char *token, const char *field); 功能说明:
传入参数:
返回值: