[Arduino物联网开发实战5]云端历史数据存储与查看-Arduino中文社区 - Powered by Discuz! Archiver

奈何col 发表于 2019-4-12 11:23

[Arduino物联网开发实战5]云端历史数据存储与查看

blinker提供了历史数据存储与图表查看数据的功能。
设备端开发
在blinker的设计下,设备端数据存储极其简单易用的,只需两步,即可开启历史数据存储功能。
1.关联回调函数,开启历史数据存储功能
Blinker.attachDataStorage(dataStorage);

2.在回调函数中,设定要存储的键名和值
void dataStorage() {
    Blinker.dataStorage(key, value);
}
完成以上设定后,设备将每分钟存储一次数据。

你可以通过Arduino IDE>示例>blinker>CLOUDDATA_WiFi查看上传随机数的示例。

这里提供一个集成了天猫精灵的温湿度传感器示例:
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_SENSOR

#include <Blinker.h>
#include <DHT.h>

char auth[] = "xxxxxxxxxxxx";
char ssid[] = "xxxxxx";
char pswd[] = "xxxxxx";

BlinkerNumber HUMI("humi");
BlinkerNumber TEMP("temp");

#define DHTPIN D7
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22(AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

float humi_read = 0, temp_read = 0;

void heartbeat()
{
    HUMI.print(humi_read);
    TEMP.print(temp_read);
}

void dataStorage()
{
    Blinker.dataStorage("temp", temp_read);
    Blinker.dataStorage("humi", humi_read);
}

void aligenieQuery(int32_t queryCode)
{
    switch (queryCode)
    {
      case BLINKER_CMD_QUERY_ALL_NUMBER :
            BLINKER_LOG("AliGenie Query All");
            BlinkerAliGenie.temp(temp_read);
            BlinkerAliGenie.humi(humi_read);
            BlinkerAliGenie.print();
            break;
      case BLINKER_CMD_QUERY_TEMP_NUMBER :
            BlinkerAliGenie.temp(temp_read);
            BlinkerAliGenie.print();
            break;
      case BLINKER_CMD_QUERY_HUMI_NUMBER :
            BlinkerAliGenie.humi(humi_read);
            BlinkerAliGenie.print();
            break;
      default :
            BlinkerAliGenie.temp(20);
            BlinkerAliGenie.humi(20);
            BlinkerAliGenie.print();
            break;
    }
}

void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    BLINKER_DEBUG.debugAll();
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, LOW);

    Blinker.begin(auth, ssid, pswd);
    Blinker.attachHeartbeat(heartbeat);
    BlinkerAliGenie.attachQuery(aligenieQuery);
    Blinker.attachDataStorage(dataStorage);
    dht.begin();
}

void loop()
{
    Blinker.run();

    float h = dht.readHumidity();
    float t = dht.readTemperature();

    if (isnan(h) || isnan(t))
    {
      BLINKER_LOG("Failed to read from DHT sensor!");
    }
    else
    {
      BLINKER_LOG("Humidity: ", h, " %");
      BLINKER_LOG("Temperature: ", t, " *C");
      humi_read = h;
      temp_read = t;
    }

    Blinker.delay(2000);
}

App端查看
在blinker App 2.2.0版本起,增加了历史数据图表组件。


添加组件后,将键名设置为程序中设定的键名,即可显示该键名对应的历史数据。
效果如下:



扩展阅读: 图表显示实时数据曲线

cheng5319052 发表于 2019-4-14 10:38

坐等更新

zhejiha 发表于 2019-4-14 10:57

好像很厉害的样子

ok000com 发表于 2019-4-17 10:10

blinker App 2.2.0在哪下载呀

奈何col 发表于 2019-4-17 11:43

ok000com 发表于 2019-4-17 10:10
blinker App 2.2.0在哪下载呀

https://www.arduino.cn/thread-85656-1-1.html

nyx 发表于 2019-4-26 11:25

能在线升级吗,我的是2.1.5

奈何col 发表于 2019-4-26 11:55

nyx 发表于 2019-4-26 11:25
能在线升级吗,我的是2.1.5

https://www.arduino.cn/thread-85656-1-1.html

牛小顿 发表于 2019-5-5 20:00

请问下 程序里面dht.h库您这里有吗

奈何col 发表于 2019-5-5 20:09

牛小顿 发表于 2019-5-5 20:00
请问下 程序里面dht.h库您这里有吗

https://www.arduino.cn/thread-83176-1-1.html

牛小顿 发表于 2019-5-6 19:32

奈何col 发表于 2019-5-5 20:09
https://www.arduino.cn/thread-83176-1-1.html

非常感谢:handshake
页: [1] 2 3 4 5 6 7
查看完整版本: [Arduino物联网开发实战5]云端历史数据存储与查看