查看: 1620|回复: 15

[分享] Blinker读取DHT11温湿度,支持小爱同学查询

[复制链接]

该用户从未签到

发表于 2021-4-9 16:24 | 显示全部楼层 |阅读模式
本帖最后由 Guofuqiang01 于 2021-4-21 09:00 编辑

  1. #define BLINKER_WIFI
  2. #define BLINKER_ESP_SMARTCONFIG    //Smartconfig手机配网用这段,代码写入注释这一条
  3. #define BLINKER_WITHOUT_SSL //非SSL加密通信接入,省堆栈
  4. #define BLINKER_MIOT_SENSOR

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

  7. char auth[] = "key-----";  //blinker账户生产的密码,小爱同学必须选用阿里云
  8. //代码配网用下面这两段
  9. //char ssid[] = "WIFI ssid";   //WiFi账号
  10. //char pswd[] = "WiFi pswd";   //WiFi密码


  11. //定义温湿度传感器信号针脚
  12. #define DHTPIN D3

  13. //选择传感器类型
  14. #define DHTTYPE DHT11   // DHT 11
  15. //#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
  16. //#define DHTTYPE DHT21   // DHT 21 (AM2301)

  17. DHT dht(DHTPIN, DHTTYPE);

  18. float humi_read, temp_read;

  19. //定义blinker软件内数据组件键名分别为:humi、temp
  20. BlinkerNumber HUMI("humi");
  21. BlinkerNumber TEMP("temp");

  22. //定义blinker软件中重置esp设置按钮
  23. BlinkerButton Reset("恢复出厂设置");

  24. void reset_callback(const String & state){
  25.         BLINKER_LOG("get button state:", state);
  26.         //当长按"恢复出厂设置"释放后清楚配网信息
  27.         if(state == "pressup"){
  28.                 Blinker.reset();
  29.         }
  30. }

  31. //小米小爱状态回调函数
  32. void miotQuery(int32_t queryCode)
  33. {
  34.     BLINKER_LOG("MIOT Query codes: ", queryCode);
  35.     int hVal = dht.readHumidity();    //多次测试湿度必须为整数型

  36.     switch (queryCode)
  37.     {
  38.       case BLINKER_CMD_QUERY_ALL_NUMBER :
  39.            BLINKER_LOG("MIOT Query All");
  40.            BlinkerMIOT.temp(temp_read);
  41.            BlinkerMIOT.humi(hVal);
  42.            BlinkerMIOT.print();
  43.            break;

  44.       default :
  45.            BlinkerMIOT.temp(100);
  46.            BlinkerMIOT.humi(100);
  47.            BlinkerMIOT.print();
  48.            break;
  49.     }
  50. }

  51. void heartbeat()
  52. {
  53.     HUMI.print(humi_read);
  54.     TEMP.print(temp_read);
  55. }

  56. void dataStorage()
  57. {
  58. Blinker.dataStorage("temp", temp_read);
  59. Blinker.dataStorage("humi", humi_read);
  60. }
  61. void setup()
  62. {
  63.     //调试程序
  64.     Serial.begin(115200);
  65.     BLINKER_DEBUG.stream(Serial);

  66.     pinMode(LED_BUILTIN, OUTPUT);
  67.     digitalWrite(LED_BUILTIN, LOW);

  68.     Blinker.begin(auth);              //手机配网用这段
  69.     //Blinker.begin(auth, ssid, pswd); //代码配网用这段
  70.     Blinker.attachHeartbeat(heartbeat);
  71.     Blinker.attachDataStorage(dataStorage);

  72.     //注册小爱同学状态回调函数
  73.     BlinkerMIOT.attachQuery(miotQuery);
  74.         Reset.attach(reset_callback);
  75.         
  76.         //初始化温湿度程序
  77.     dht.begin();
  78. }

  79. void loop()
  80. {
  81.     Blinker.run();
  82.     float h = dht.readHumidity();
  83.     float t = dht.readTemperature();
  84.     if (isnan(h) || isnan(t))
  85.     {
  86.       BLINKER_LOG("Failed to read from DHT sensor!");
  87.     }else
  88.     {
  89.       BLINKER_LOG("Humidity: ", h, " %");
  90.       BLINKER_LOG("Temperature: ", t, " *C");
  91.       humi_read = h;
  92.       temp_read = t;
  93.     }
  94. Blinker.delay(2000);
  95. }
复制代码

DHT温湿度计程序,配合另外一个帖子解读吧。


该用户从未签到

 楼主| 发表于 2021-4-9 17:46 | 显示全部楼层

该用户从未签到

发表于 2021-4-20 11:13 | 显示全部楼层
编译不能过

该用户从未签到

发表于 2021-4-20 16:49 | 显示全部楼层
33行的分号要用英文符号,#define DHTPIN D3 改成  #define DHTPIN 0

该用户从未签到

 楼主| 发表于 2021-4-27 08:59 | 显示全部楼层
myself1820 发表于 2021-4-20 16:49
33行的分号要用英文符号,#define DHTPIN D3 改成  #define DHTPIN 0

开发板选择nodeMCU才可以用 Dx这个编号,如果选用通用8266不能这样定义针脚

该用户从未签到

发表于 2021-4-27 09:05 | 显示全部楼层
Guofuqiang01 发表于 2021-4-27 08:59
开发板选择nodeMCU才可以用 Dx这个编号,如果选用通用8266不能这样定义针脚

哦,学习了

签到天数: 82 天

[LV.6]常住居民II

发表于 2021-5-1 16:34 | 显示全部楼层

在第39行

本帖最后由 星雾 于 2021-5-1 16:46 编辑

您好,现在出现编译到reset 就不能过去

签到天数: 1 天

[LV.1]初来乍到

发表于 2021-5-2 12:37 | 显示全部楼层
星雾 发表于 2021-5-1 16:34
您好,现在出现编译到reset 就不能过去

确保你使用的lib为最新

该用户从未签到

发表于 2021-5-9 14:03 | 显示全部楼层
本帖最后由 qiuye88 于 2021-5-9 14:08 编辑

微信图片_20210509140003.jpg
很好,配置一下,就可以用了。

图片尺寸改小了,传上来还是显示那么大,有点不协调。)

该用户从未签到

发表于 2021-5-11 17:15 | 显示全部楼层
你好,请问这个传感器多久传一次数据到APP呢,感觉有点慢,在哪改能加快啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

blinker物联网教程——11、自动灌溉
blinker物联网教程——11
简介[hr] 农业是用水大户,近年来农业用水量约占经济社会用水总量的62%,部分地区高达
【Arduino】168种传感器模块系列实验(43)---单路继电器模块
【Arduino】168种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
为什么电平为LOW时LED亮而反之不亮
为什么电平为LOW时LED亮而
如题,刚入门ESP8266,买了个开发板回来感到大惑不解,代码如图 此时板载LED常亮,利用串
想在原有的项目上加上一个呼吸灯怎么做才不影响原程序
想在原有的项目上加上一个
如题,想在原来的程序上加上一个呼吸灯,但是程序中的delay会影响到程序的其他部分,
串口分析字符操作符,灵活的实现自动化控制。
串口分析字符操作符,灵活
Arduino String可以分析串口读取的字符是何种操作符,一共十三种: isAlphaNumeric
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表