自动温控开关运行一段时间后,温度获取不到数据问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 583|回复: 1

[分享] 自动温控开关运行一段时间后,温度获取不到数据问题

[复制链接]
发表于 2022-2-23 09:46 | 显示全部楼层 |阅读模式
本帖最后由 38151987 于 2022-3-20 22:36 编辑

每次运行一会就,app上温湿度就获取不到数据了,继电器开关正常用,是不是代码有问题?哪位大神给看看?
我用的是esp01s+esp-01s relay模块+dht11
  1. #define BLINKER_WIFI
  2. #define BLINKER_WIFI_MULTI
  3. #define BLINKER_WITHOUT_SSL //非SSL加密通信接入,省堆栈
  4. #define BLINKER_MIOT_MULTI_OUTLET  //支持多路插座,最多4个插孔
  5. #include <DHT.h>
  6. #include <Blinker.h>
  7. #include <Ticker.h>
  8. #include <EEPROM.h>

  9. char auth[] = "******";
  10. char ssid[] = "******";
  11. char pswd[] = "******";

  12. Ticker flipper;

  13. BlinkerButton Button("zkg");     //总开关
  14. BlinkerButton Button1("jdq");              //继电器开关按钮
  15. BlinkerButton Button2("zdkg");              //自动模式开关按钮
  16. BlinkerText Text1("text1");

  17. BlinkerSlider Slider3("lowtemp"); //滑动条最低温度
  18. BlinkerSlider Slider4("hightemp"); //滑动条最高温度

  19. #define DHTPIN 2  //定义温湿度传感器针脚
  20. int kg=0;//继电器输出针脚

  21. #define DHTTYPE DHT11   // DHT 11
  22. DHT dht(DHTPIN, DHTTYPE);

  23. float humi_read, temp_read;

  24. BlinkerNumber HUMI("humi");   //湿度调用按钮
  25. BlinkerNumber TEMP("temp");   //温度调用按钮


  26. // 在APP控制,按下zkg按键即会执行该函数
  27. void button_callback(const String & state)
  28. {
  29.     BLINKER_LOG("操作了zkg: ", state);//APP中的Monitor控件打印的信息
  30.     if (state == BLINKER_CMD_ON)
  31.     {
  32.     Button.print("on");                      //总开关状态是开
  33.        digitalWrite(kg,LOW);
  34.     Button1.print("on");                      //继电器是开
  35.        zd=1;
  36.    Button2.print("on");                      //自动模式是开
  37.     } else if(state == BLINKER_CMD_OFF)
  38.     {
  39.     Button.print("off");                      //总开关状态是关
  40.        digitalWrite(kg, HIGH);
  41.     Button1.print("off");                         //继电器是关
  42.      zd=0;
  43.     Button2.print("off");                         //自动模式是关
  44.     }
  45. }


  46. void button1_callback(const String & state)   
  47. {
  48.   BLINKER_LOG("app操作了!: ", state);                //串口打印
  49.   if (state == BLINKER_CMD_OFF) {              //如果state是on状态
  50.     BLINKER_LOG("关!");                           //串口打印
  51.     digitalWrite(kg, HIGH);
  52.     Button1.print("off");                         //继电器关
  53.   }
  54.   else if (state == BLINKER_CMD_ON) {       //如果state是off状态
  55.     BLINKER_LOG("开!");                         //串口打印
  56.      digitalWrite(kg,LOW);
  57.     Button1.print("on");                      //继电器开
  58.   }
  59. }

  60. void Button2_callback(const String & state3)   
  61. {
  62.   BLINKER_LOG("app操作了!: ", state3);                //串口打印
  63.   if (state3 == BLINKER_CMD_OFF) {              //如果state是on状态
  64.     BLINKER_LOG("自动模式关");                           //串口打印
  65.     zd=0;
  66.     Button2.print("off");                         //自动模式关
  67.   }
  68.   else if (state3 == BLINKER_CMD_ON) {       //如果state是off状态
  69.     BLINKER_LOG("自动模式开");                         //串口打印
  70.     zd=1;
  71.    Button2.print("on");                      //自动模式开
  72.   }
  73.   EEPROM.begin(512);
  74.    EEPROM.write(3, zd);
  75.    EEPROM.commit();
  76. }

  77. float zuidi=3;
  78. float zuigao=20;

  79. void slider3_callback(int32_t value3)
  80. {
  81.     BLINKER_LOG("get slider value: ", value3);
  82.     zuidi=value3;
  83.     EEPROM.begin(512);
  84.      EEPROM.write(4, zuidi);
  85.       EEPROM.commit();
  86. }

  87. void slider4_callback(int32_t value4)
  88. {
  89.     BLINKER_LOG("get slider value: ", value4);
  90.     zuigao=value4;
  91.      EEPROM.begin(512);
  92.    EEPROM.write(2, zuigao);
  93.    EEPROM.commit();
  94. }

  95. void zdms(){
  96. if(zd==0){
  97. BLINKER_LOG("自动模式关");
  98.     Button2.print("off");
  99. }
  100. if(zd==1){
  101.   BLINKER_LOG("自动模式开");
  102.     Button2.print("on");
  103.   zidong();
  104. }
  105.   
  106. }

  107. void zidong(){
  108. if(temp_read<zuidi)
  109. {
  110.   digitalWrite(kg,LOW);
  111.    BLINKER_LOG("低于最低温度,继电器开!");
  112.         BlinkerMIOT.print();
  113.     Button1.print("on");                      //反馈回按键状态是开
  114. }
  115. if(temp_read>zuigao)
  116. {
  117.   digitalWrite(kg,HIGH);
  118.    BLINKER_LOG("高于最高温度,继电器关!");
  119.         BlinkerMIOT.print();
  120.     Button1.print("off");                      //反馈回按键状态是开
  121. }
  122. }

  123. void heartbeat()
  124. {
  125. BLINKER_LOG("状态同步!");
  126.   
  127.   if (digitalRead(kg)==LOW){
  128.     Button.print("on");   //总开关开
  129.     }

  130.     if (digitalRead(kg)==HIGH){
  131.     Button.print("off"); //总开关关  
  132.     }
  133.    if (digitalRead(kg)==LOW)
  134.     {
  135.       Button1.print("on"); //继电器开
  136.     }
  137.     if(digitalRead(kg)==HIGH)
  138.     {
  139.     Button1.print("off"); //继电器关
  140.     }
  141.    if (zd==1)
  142.     {
  143.       Button2.print("on"); //自动模式开
  144.     }
  145.    if (zd==0)
  146.     {
  147.     Button2.print("off"); //自动模式关
  148.     }
  149.    
  150.     HUMI.print(humi_read);
  151.     TEMP.print(temp_read);
  152.    
  153.     Slider3.print(zuidi);
  154.     delay(50);
  155.     Slider4.print(zuigao);
  156. }

  157. void dataStorage()
  158. {
  159. Blinker.dataStorage("temp", temp_read);
  160. Blinker.dataStorage("humi", humi_read);
  161. }


  162. void setup()
  163. {
  164.     //调试程序
  165.     EEPROM.begin(512);
  166.     Serial.begin(115200);
  167.     BLINKER_DEBUG.stream(Serial);
  168.   pinMode(kg, OUTPUT);
  169.   digitalWrite(kg, LOW);              //默认上电是开 HIGH 时是接通继电器。

  170.   zd = int(EEPROM.read(3));
  171.   delay(50);
  172.   zuidi = int(EEPROM.read(4));
  173.   delay(50);
  174.   zuigao = int(EEPROM.read(2));

  175.     Blinker.begin(auth, ssid, pswd); //代码配网用这段
  176.     Blinker.attachHeartbeat(heartbeat);
  177.     Blinker.attachDataStorage(dataStorage);
  178. // Blinker.attachRTData(rtData);

  179.     Button1.attach(button1_callback);  
  180.     Button2.attach(Button2_callback);  
  181.     Button.attach(button_callback);   //绑定按键回调
  182.    
  183.      Slider3.attach(slider3_callback);
  184.      Slider4.attach(slider4_callback);   
  185.     dht.begin();

  186.     flipper.attach(5, zdms);
  187. }

  188. void loop()
  189. {
  190.     Blinker.run();
  191.    
  192.     float h = dht.readHumidity();
  193.     float t = dht.readTemperature();
  194.     if (isnan(h) || isnan(t))
  195.     {
  196.       BLINKER_LOG("No DHT!");
  197.     }else
  198.     {
  199.       BLINKER_LOG("Humidity: ", h, " %");
  200.       BLINKER_LOG("Temperature: ", t, " *C");
  201.       humi_read = h;
  202.       temp_read = t;
  203.     }
  204.   Blinker.delay(2000);
  205. }
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 04:26 , Processed in 0.178460 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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