blinker数据反馈
一.简介
这一节我们主要说一下通过小爱同学来控制esp8266开发板采集温湿度数据,然后语言播报
这里我们用到的模块还是DHT11温湿度传感器,没有配置DHT库的朋友,可以看前面的教程,这里就不多说了
二.app配置
这次我们的设备是用于读取数据的,所以设备名称就不能是灯了,我们就起名为传感器
三.小爱同学接入
1.代码部分
#define BLINKER_PRINT Serial //用于打开串口
#define BLINKER_WIFI
#define BLINKER_MIOT_SENSOR //定义为语音控制传感器设备
#include <Blinker.h>
#include <DHT.h>
char auth[] = "774c60aac10f"; //上一步中在app中获取到的Secret Key(新建设备的秘钥)
char ssid[] = "ZFQ"; //你的WiFi热点名称
char pswd[] = "123456789"; //你的WiFi密码
BlinkerNumber HUMI("humi");
BlinkerNumber TEMP("temp");
#define DHTPIN 2 //
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
int32_t humi_read = 0;//湿度 小爱同学只能查整数的数据
float temp_read = 0; //温度
void heartbeat()
{
//反馈湿度数据
HUMI.print(humi_read);
//设置ui组件图标和颜色
HUMI.icon("fas fa-tint");
HUMI.color("#0099FF ");
//反馈温度数据
TEMP.print(temp_read);
TEMP.icon("fas fa-thermometer-empty");
TEMP.color("#FF3300");
}
void miotQuery(int32_t queryCode)
{
BLINKER_LOG("MIOT Query codes: ", queryCode);
switch (queryCode)
{
//同时查询传感器数据
case BLINKER_CMD_QUERY_ALL_NUMBER :
BLINKER_LOG("MIOT Query All");
BlinkerMIOT.temp(temp_read);
BlinkerMIOT.humi(humi_read);
BlinkerMIOT.pm25(20);
BlinkerMIOT.co2(20);
BlinkerMIOT.print();
break;
//查询pm2.5
case BLINKER_CMD_QUERY_PM25_NUMBER :
BLINKER_LOG("MIOT Query PM25");
BlinkerMIOT.pm25(20);
BlinkerMIOT.print();
break;
//查询湿度
case BLINKER_CMD_QUERY_HUMI_NUMBER :
BLINKER_LOG("MIOT Query HUMI");
BlinkerMIOT.humi(humi_read);
BlinkerMIOT.print();
break;
//查询温度
case BLINKER_CMD_QUERY_TEMP_NUMBER :
BLINKER_LOG("MIOT Query TEMP");
BlinkerMIOT.temp(temp_read);
BlinkerMIOT.print();
break;
//查询CO2
case BLINKER_CMD_QUERY_TIME_NUMBER :
BLINKER_LOG("MIOT Query co2");
BlinkerMIOT.co2(20);
BlinkerMIOT.print();
break;
default :
BlinkerMIOT.temp(20);
BlinkerMIOT.humi(20);
BlinkerMIOT.pm25(20);
BlinkerMIOT.co2(20);
BlinkerMIOT.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);
BlinkerMIOT.attachQuery(miotQuery); //小爱同学 数据反馈
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);
}
2.代码说明
-
我们这边是小米的小爱同学来控制传感器
#define BLINKER_MIOT_SENSOR //定义为语音控制传感器设备
-
设置回调函数
BlinkerMIOT.attachQuery(miotQuery); //小爱同学 数据反馈
-
语言控制实现函数
void miotQuery(int32_t queryCode) { }
-
特别注意,小爱同学测试湿度时我们定义的 湿度不能是浮点型(小数),负责语音控制时就会出错
int32_t humi_read = 0;
3. 语音控制
如何通过小爱同学语音来控制,这里需要注意一下
我们可以参考一下:blinker开发文档
小爱支持的语言指令
- 灯
打开/关闭{门口}的{灯}
把{卧室}的{灯}调为{红色}
颜色范围为0-16777215(0xFFFFFF)
把{卧室}的{灯}的{亮度调高一点}
亮度范围为1-100
把{门口}的{灯}的{色温}调到{1400}
色温范围为1000-10000
把{卧室}的{灯}调为{月光模式}
查询{卧室}的{灯}的状态 - 插座
打开/关闭{厨房}的{插座}
{客厅}的{插座}是否打开 - 传感器
{设备名}室内{温度}/{湿度}/{PM2.5}/{空气质量}/{二氧化碳含量}
四.总结
这篇说的不是很详细,因为我们前面已经说了arduino环境的搭建已经库的导入,esp8266模块的添加,以及app端的配置,程序的烧写等等,所以在这里就不在浪费大家时间了,具体代码有注释可以查看