Blinker读取DHT11温湿度,支持小爱同学查询-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8090|回复: 18

[分享] 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不能这样定义针脚

哦,学习了
发表于 2021-5-1 16:34 | 显示全部楼层

在第39行

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

您好,现在出现编译到reset 就不能过去
发表于 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呢,感觉有点慢,在哪改能加快啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 11:39 , Processed in 0.085281 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表