实现效果
准备材料
- esp8266
- DHT11
线路连接
VCC
--> 3V
GND
-->GND
DATA
--> 2
代码
#define BLINKER_WIFI
#define BLINKER_MIOT_SENSOR //引入小爱同学
#include
#include //DHT11传感器的头文件
#define DHTPIN 4 //定义DHT11模块连接管脚io4(D2脚)
#define DHTTYPE DHT11 // 使用DHT11温度湿度模块,当然也可以换其他DHT
char auth[] = "1c2ce3eef946"; //点灯app的密钥key
char ssid[] = "PDCN"; //所需连接的WiFi名
char pswd[] = "1234567890"; //WiFi的密码
BlinkerNumber HUMI("humi"); //定义湿度数据键名
BlinkerNumber TEMP("temp"); //定义温度数据键名
DHT dht(DHTPIN, DHTTYPE); //定义dht
float humi_read = 0, temp_read = 0; //初始化读取的数据
//仪表盘组件
void heartbeat()
{
HUMI.print(humi_read); //给blinkerapp回传湿度数据
TEMP.print(temp_read); //给blinkerapp回传温度数据
}
//实时曲线图组件
void dataStorage()
{
Blinker.dataStorage("temp", temp_read);
Blinker.dataStorage("humi", humi_read);
}
//数据返回至小爱同学
void miotQuery(int32_t queryCode)
{
BLINKER_LOG("MIOT Query codes: ", queryCode);
int humi_read_int=humi_read; //将float转成int类型,整数
BlinkerMIOT.humi(humi_read_int); //小爱接收湿度
BlinkerMIOT.temp(temp_read); //小爱接收温度
BlinkerMIOT.print();
}
void setup()
{
//初始化串口Serial,开启调试输出
Serial.begin(115200);//波特率
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
Blinker.begin(auth, ssid, pswd);//WIFI初始化设置
Blinker.attachHeartbeat(heartbeat);//注册仪表盘
dht.begin();
BlinkerMIOT.attachQuery(miotQuery);//注册小爱
Blinker.attachDataStorage(dataStorage);//注册实时曲线
}
void loop()
{
Blinker.run();//负责处理blinker收到的数据,每次运行都会将设备收到的数据进行一次解析。(这个很重要)
float h = dht.readHumidity();//读取DHT11采集的湿度数据
float t = dht.readTemperature();//读取DHT11采集的温度数据
if (isnan(h) || isnan(t))//判断温湿度值是否为空
{
BLINKER_LOG("读取传感器数据失败");
}
else
{
BLINKER_LOG("Humidity: ", h, " %");//打印输出调试信息
BLINKER_LOG("Temperature: ", t, " *C");
humi_read = h;
temp_read = t;
}
Blinker.delay(200);
//延时函数, 在延时过程中仍保持设备间连接及数据接收处理
}
关于温湿度变化曲线
这里的云存储数据只支持联网设备,如果将温湿度计断电断网,数据是不会存储的,会在曲线图中骤然下降的趋势,重新连接后会骤然上升。这里的云存储的功能并不是很强大,如果修改代码重新上传程序的话之前云存储的数据会被清空。
2.具体函数
(1)云存储数据函数:
void dataStorage()//云存储温湿度数据函数
{
Blinker.dataStorage("temp", temp_read);//存储温度
Blinker.dataStorage("humi", humi_read);//存储湿度
}
函数体里面Blinker.dataStorage("temp", temp_read);
第一个参数是数据键名,用来在手机端图标中显示,第二个参数是要存储的数据变量。
(2)在代码中写好了函数后,需要在主循环中调用这个函数,调用函数如下:
Blinker.attachDataStorage(dataStorage);
这个函数的意思就是每次循环的时候就会调用上面的dataStorage
函数,达到可以将每次获得的数据云存储的效果。
APP布局
小爱效果
版权属于:逍遥子大表哥
本文链接:https://blog.bbskali.cn/3871.html
按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
此处评论已关闭