查看: 353|回复: 4

[已解答] DHT11接入小爱后经常查询不到温度,湿度查询不到,求解

[复制链接]
  • TA的每日心情
    开心
    2020-7-20 14:58
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-14 16:33 | 显示全部楼层 |阅读模式
    DHT11接入小爱同学后,偶尔能查询到温度,多数时候提示与设备沟通失败,blinker APP中显示是正常的。湿度信息从来没有查询到过,请教问题所在
    代码如下:
    1. #define BLINKER_WIFI
    2. #define BLINKER_MIOT_SENSOR
    3. #define BLINKER_DUEROS_SENSOR
    4. #define BLINKER_ALIGENIE_SENSOR
    5. #define BLINKER_ESP_SMARTCONFIG

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

    8. char auth[] = "e3f1db5684864"; // Blinker APP中添加设备时生成的Secret Key

    9. BlinkerNumber HUMI("humi");
    10. BlinkerNumber TEMP("temp");

    11. #define DHTPIN 5

    12. #define DHTTYPE DHT11   // DHT 11

    13. DHT dht(DHTPIN, DHTTYPE);

    14. uint32_t read_time = 0;

    15. int humi_read = 0;
    16. float temp_read = 0;

    17. void heartbeat()
    18. {
    19.     HUMI.print(humi_read);
    20.     TEMP.print(temp_read);
    21. }

    22. void miotQuery(int32_t queryCode)
    23. {
    24.     BLINKER_LOG("MIOT Query codes: ", queryCode);

    25.     switch (queryCode)
    26.     {
    27.         case BLINKER_CMD_QUERY_ALL_NUMBER :
    28.             BLINKER_LOG("MIOT Query All");
    29.             BlinkerMIOT.temp(temp_read);
    30.             BlinkerMIOT.humi(humi_read);
    31.             BlinkerMIOT.print();
    32.             break;
    33.         default :
    34.             BlinkerMIOT.temp(20);
    35.             BlinkerMIOT.humi(20);
    36.             BlinkerMIOT.print();
    37.             break;
    38.     }
    39. }

    40. void dataStorage()
    41. {
    42.     Blinker.dataStorage("temp", temp_read);
    43.     Blinker.dataStorage("humi", humi_read);
    44. }

    45. void duerQuery(int32_t queryCode)
    46. {
    47.     BLINKER_LOG("DuerOS Query codes: ", queryCode);

    48.     switch (queryCode)
    49.     {
    50.         case BLINKER_CMD_QUERY_HUMI_NUMBER :
    51.             BLINKER_LOG("DuerOS Query HUMI");
    52.             BlinkerDuerOS.humi(humi_read);
    53.             BlinkerDuerOS.print();
    54.             break;
    55.         case BLINKER_CMD_QUERY_TEMP_NUMBER :
    56.             BLINKER_LOG("DuerOS Query TEMP");
    57.             BlinkerDuerOS.temp(temp_read);
    58.             BlinkerDuerOS.print();
    59.             break;
    60.         default :
    61.             BlinkerDuerOS.temp(20);
    62.             BlinkerDuerOS.humi(20);
    63.             BlinkerDuerOS.print();
    64.             break;
    65.     }
    66. }

    67. void aligenieQuery(int32_t queryCode)
    68. {
    69.     BLINKER_LOG("AliGenie Query codes: ", queryCode);

    70.     switch (queryCode)
    71.     {
    72.         case BLINKER_CMD_QUERY_ALL_NUMBER :
    73.             BLINKER_LOG("AliGenie Query All");
    74.             BlinkerAliGenie.temp(temp_read);
    75.             BlinkerAliGenie.humi(humi_read);
    76.             BlinkerAliGenie.print();
    77.             break;
    78.         default :
    79.             BlinkerAliGenie.temp(20);
    80.             BlinkerAliGenie.humi(20);
    81.             BlinkerAliGenie.print();
    82.             break;
    83.     }
    84. }

    85. void dataRead(const String & data)
    86. {
    87.     BLINKER_LOG("Blinker readString: ", data);

    88.     Blinker.vibrate();
    89.    
    90.     uint32_t BlinkerTime = millis();
    91.    
    92.     Blinker.print("millis", BlinkerTime);
    93. }

    94. void setup()
    95. {
    96.     Serial.begin(115200);
    97.     BLINKER_DEBUG.stream(Serial);

    98.     pinMode(LED_BUILTIN, OUTPUT);
    99.     digitalWrite(LED_BUILTIN, LOW);

    100.     Blinker.begin(auth);
    101.     Blinker.attachData(dataRead);
    102.     Blinker.attachHeartbeat(heartbeat);
    103.     Blinker.attachDataStorage(dataStorage);
    104.     BlinkerMIOT.attachQuery(miotQuery);
    105.     BlinkerDuerOS.attachQuery(duerQuery);
    106.     BlinkerAliGenie.attachQuery(aligenieQuery);   
    107.     dht.begin();
    108. }

    109. void loop()
    110. {
    111.     Blinker.run();

    112.     if (read_time == 0 || (millis() - read_time) >= 2000)
    113.     {
    114.         read_time = millis();

    115.         float h = dht.readHumidity();
    116.         float t = dht.readTemperature();        

    117.         if (isnan(h) || isnan(t)) {
    118.             BLINKER_LOG("Failed to read from DHT sensor!");
    119.             return;
    120.         }

    121.         float hic = dht.computeHeatIndex(t, h, false);

    122.         humi_read = h;
    123.         temp_read = t;

    124.         BLINKER_LOG("Humidity: ", h, " %");
    125.         BLINKER_LOG("Temperature: ", t, " ℃");
    126.         BLINKER_LOG("Heat index: ", hic, " ℃");
    127.     }
    128. }
    复制代码




  • TA的每日心情
    开心
    2020-7-20 14:58
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2020-8-14 16:34 | 显示全部楼层
    float humi_read, temp_read; 也是不行
  • TA的每日心情
    开心
    2020-9-28 05:08
  • 签到天数: 691 天

    [LV.9]以坛为家II

    发表于 2020-8-14 16:52 | 显示全部楼层
    molun 发表于 2020-8-14 16:34
    float humi_read, temp_read; 也是不行

    换个dht11专用库试试

    dht11.rar

    2.53 KB, 下载次数: 18

  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2020-8-15 23:21 | 显示全部楼层
    看串口调试信息
  • TA的每日心情
    开心
    2020-9-13 10:57
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-9-26 23:10 | 显示全部楼层
    这个问题我也遇到了 楼主解决了吗
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    String类型做参数传递时出现问题
    String类型做参数传递时出
    有两个函数,上面这个用来获取数据,然后第70行调用下面的Price_Analyze()来分析数据
    [Arduino物联网开发实战0]开发准备
    [Arduino物联网开发实战0]
    郑重提示:物联网开发,需要你有较好的编程基础,如果你没有编程基础或Arduino开发基
    兩段式水位的程式,要如何寫呢?可以指導一下嗎?
    兩段式水位的程式,要如何
    想請教大大兩段式水位的程式,要如何寫呢?可以指導一下嗎? 兩段式水位 滿水100%時停止
    点灯里面的 定时任务,按指定时间触发 开关 没效果.怎么...
    点灯里面的 定时任务,按
    #define BLINKER_WIFI #include char auth[] = "e9b348c25011"; char ssid[] = "88
    【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...
    【原创】 drawbot平面关节
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表