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版本起,增加了历史数据图表组件。
添加组件后,将键名设置为程序中设定的键名,即可显示该键名对应的历史数据。
效果如下:
扩展阅读: 图表显示实时数据曲线
|