自制温湿度计
1.设备准备:
天猫精灵智能音箱(什么款式都行)、手机端下载点灯科技、DHT11温湿度传感器、esp8266、杜邦线若干;
2.在点灯科技端添加设备获取设备key
3.编写代码如下:
#define BLINKER_PRINT Serial
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_OUTLET //天猫精灵接入
#include <Blinker.h>
#include <DHT.h>
char auth[] = "*******"; //点灯科技获取的设备key
char ssid[] = "*******"; //wifi ssid
char pswd[] = "*******"; //wifi 密码
BlinkerNumber HUMI("humi"); //定义湿度数据键名
BlinkerNumber TEMP("temp"); //定义温度数据键名
#define DHTPIN D4 //定义DHT11模块连接管D4
#define DHTTYPE DHT11 // 使用DHT 11温度湿度模块
DHT dht(DHTPIN, DHTTYPE); //定义dht
float humi_read = 0, temp_read = 0;
void heartbeat()
{
HUMI.print(humi_read); //给app回传湿度数据
TEMP.print(temp_read); //给app回传温度数据
}
void aligenieQuery(int32_t queryCode)
{
BLINKER_LOG("AliGenie Query codes: ", queryCode);
/* switch (queryCode)
{
case BLINKER_CMD_QUERY_TEMP_NUMBER :
BLINKER_LOG("AliGenie Query Brightness");
BlinkerAliGenie.temp(temp_read);
BlinkerAliGenie.print();
break;
case BLINKER_CMD_QUERY_HUMI_NUMBER :
BLINKER_LOG("AliGenie Query ok");
BlinkerAliGenie.humi(humi_read);
BlinkerAliGenie.print();
break;
default :
BlinkerAliGenie.temp(100);
BlinkerAliGenie.humi(100);
BlinkerAliGenie.print();
break;
}*/
//上段代码执行结果温度100度,湿度100%
//千万别用上面这种写法虽然BLINKER_CMD_QUERY_HUMI_NUMBER和BLINKER_CMD_QUERY_TEMP_NUMBER
//是点灯科技官方给出的定义但这两个并不
//能在对应的语音指令下调用对应内容
//不知道是自己写的问题还是官方定义出现问题//(可能是我太笨)
BlinkerAliGenie.humi((int)humi_read); //天猫接收湿度
BlinkerAliGenie.temp((int)temp_read); //天猫接收温度
BlinkerAliGenie.print();//直接把温湿度一起发给天猫,他会自己识别告诉你对应内容
}
void setup()
{
Serial.begin(115200);
// BLINKER_DEBUG.stream(Serial);
//BLINKER_DEBUG.debugAll();单纯做温湿度计这个没用
Blinker.begin(auth, ssid, pswd);
Blinker.attachHeartbeat(heartbeat);
dht.begin();
BlinkerAliGenie.attachQuery(aligenieQuery);//回调函数
}
void loop()
{
Blinker.run();
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t))
{
BLINKER_LOG("Failed to read from DHT OUTLET!");
}
else
{
BLINKER_LOG("Humidity: ", h, " %");
BLINKER_LOG("Temperature: ", t, " *C");
humi_read = h;
temp_read = t;
}
Blinker.delay(2000);
}