查看: 179|回复: 4

[已解答] 智能配网,掉电重新上电后经常需要重新配网是什么问题?

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

    [LV.2]偶尔看看I

    发表于 2020-7-29 19:55 | 显示全部楼层 |阅读模式
    设定的智能插座晚上会自动关闭连接的普通插排电源,NodeMCU和ESP-01S都连接在普通插排上,第二天打开插排电源后,经常发现NodeMCU和ESP-01S无法连接网络,处于等待联网状态,只能通过ESPTouch或者微信配网重新连接网,短暂的断开重新通电却可以自己联网!
    请大家帮忙看看下面的代码存在什么问题!
    1. /* *****************************************************************
    2. *
    3. *  名称:DHT11温湿度计
    4. *  简介:DHT11温湿度传感器DATA引脚接入NodeMCU D4(GPIO2)引脚,接入小爱同学、
    5. *       小度音箱、天猫精灵,增加历史数据存储与图表查看数据的功能
    6. *  作者:MOLUN
    7. *  博客:https://molun.cf/
    8. *
    9. * *****************************************************************/

    10. #define BLINKER_WIFI
    11. #define BLINKER_MIOT_SENSOR
    12. #define BLINKER_DUEROS_SENSOR
    13. #define BLINKER_ALIGENIE_SENSOR
    14. #define BLINKER_PRINT Serial

    15. #include <Blinker.h>
    16. #include <DHT.h>
    17. #include <ESP8266WiFi.h>    //WIFI库,配网必需

    18. int count = 0;     //时间计数
    19. bool WIFI_Status = true;   //WIFI状态标志位

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

    21. /* 微信智能配网 */
    22. void smartConfig()
    23. {
    24.   WiFi.mode(WIFI_STA);//设置STA模式
    25.   Serial.println("\r\nWait for Smartconfig...");//打印log信息
    26.   WiFi.beginSmartConfig();//开始SmartConfig,等待手机端发出用户名和密码
    27.   while(1)
    28.   {
    29.     Serial.println(".");
    30.     digitalWrite(LED_BUILTIN,HIGH);//指示灯闪烁
    31.     delay(1000);
    32.     digitalWrite(LED_BUILTIN,LOW);//指示灯闪烁
    33.     delay(1000);
    34.     if(WiFi.smartConfigDone())//配网成功,接收到SSID和密码
    35.     {
    36.       Serial.println("SmartConfig Success");
    37.       Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
    38.       Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
    39.       break;      
    40.     }
    41.   }  
    42. }

    43. /*连接网络*/
    44. void blinkerConnect()
    45. {
    46.   Serial.println("\r\n正在连接WIFI...");

    47.     while(WiFi.status()!=WL_CONNECTED)//判断是否连接WIFI成功
    48.     {
    49.       if(WIFI_Status)
    50.       {
    51.           Serial.print(".");
    52.           digitalWrite(LED_BUILTIN, HIGH);  
    53.           delay(500);                       
    54.           digitalWrite(LED_BUILTIN, LOW);   
    55.           delay(500);                 
    56.           count++;
    57.           if(count>=5)//5s
    58.           {
    59.               WIFI_Status = false;
    60.               Serial.println("WiFi连接失败,请用手机进行配网");
    61.           }        
    62.         }
    63.         else
    64.         {
    65.           smartConfig();  //微信智能配网
    66.         }
    67.     }

    68.     Serial.println("连接成功");  
    69.     Serial.print("IP:");
    70.     Serial.println(WiFi.localIP());
    71. }

    72. BlinkerNumber HUMI("humi");
    73. BlinkerNumber TEMP("temp");

    74. #define DHTPIN D4

    75. #define DHTTYPE DHT11   // DHT 11
    76. //#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
    77. //#define DHTTYPE DHT21   // DHT 21 (AM2301)

    78. DHT dht(DHTPIN, DHTTYPE);

    79. uint32_t read_time = 0;

    80. float humi_read, temp_read;

    81. void heartbeat()
    82. {
    83.     HUMI.print(humi_read);
    84.     TEMP.print(temp_read);
    85. }

    86. void dataStorage()
    87. {
    88.     Blinker.dataStorage("temp", temp_read);
    89.     Blinker.dataStorage("humi", humi_read);
    90. }

    91. void miotQuery(int32_t queryCode)
    92. {
    93.     BLINKER_LOG("MIOT Query codes: ", queryCode);

    94.     switch (queryCode)
    95.     {
    96.         case BLINKER_CMD_QUERY_ALL_NUMBER :
    97.             BLINKER_LOG("MIOT Query All");
    98.             BlinkerMIOT.temp(temp_read);
    99.             BlinkerMIOT.humi(humi_read);
    100.             BlinkerMIOT.print();
    101.             break;
    102.         default :
    103.             BlinkerMIOT.temp(20);
    104.             BlinkerMIOT.humi(20);
    105.             BlinkerMIOT.print();
    106.             break;
    107.     }
    108. }

    109. void duerQuery(int32_t queryCode)
    110. {
    111.     BLINKER_LOG("DuerOS Query codes: ", queryCode);

    112.     switch (queryCode)
    113.     {
    114.         case BLINKER_CMD_QUERY_HUMI_NUMBER :
    115.             BLINKER_LOG("DuerOS Query HUMI");
    116.             BlinkerDuerOS.humi(humi_read);
    117.             BlinkerDuerOS.print();
    118.             break;
    119.         case BLINKER_CMD_QUERY_TEMP_NUMBER :
    120.             BLINKER_LOG("DuerOS Query TEMP");
    121.             BlinkerDuerOS.temp(temp_read);
    122.             BlinkerDuerOS.print();
    123.             break;
    124.         default :
    125.             BlinkerDuerOS.temp(20);
    126.             BlinkerDuerOS.humi(20);
    127.             BlinkerDuerOS.print();
    128.             break;
    129.     }
    130. }

    131. void aligenieQuery(int32_t queryCode)
    132. {
    133.     BLINKER_LOG("AliGenie Query codes: ", queryCode);

    134.     switch (queryCode)
    135.     {
    136.         case BLINKER_CMD_QUERY_ALL_NUMBER :
    137.             BLINKER_LOG("AliGenie Query All");
    138.             BlinkerAliGenie.temp(temp_read);
    139.             BlinkerAliGenie.humi(humi_read);
    140.             BlinkerAliGenie.print();
    141.             break;
    142.         default :
    143.             BlinkerAliGenie.temp(20);
    144.             BlinkerAliGenie.humi(20);
    145.             BlinkerAliGenie.print();
    146.             break;
    147.     }
    148. }

    149. void dataRead(const String & data)
    150. {
    151.     BLINKER_LOG("Blinker readString: ", data);

    152.     Blinker.vibrate();
    153.    
    154.     uint32_t BlinkerTime = millis();
    155.    
    156.     Blinker.print("millis", BlinkerTime);
    157. }

    158. void setup()
    159. {
    160.     Serial.begin(115200);
    161.     BLINKER_DEBUG.stream(Serial);

    162.     pinMode(LED_BUILTIN, OUTPUT);
    163.     digitalWrite(LED_BUILTIN, LOW);

    164.     //网络连接
    165.     blinkerConnect();
    166.   
    167.     // 初始化blinker
    168.     Blinker.begin(auth,WiFi.SSID().c_str(),WiFi.psk().c_str()); //根据配网得到的WIFI信息和设备秘钥,连接到Blinker云   
    169. //    Blinker.begin(auth, ssid, pswd);
    170.     Blinker.attachData(dataRead);
    171.     Blinker.attachHeartbeat(heartbeat);
    172.     Blinker.attachDataStorage(dataStorage);
    173.     BlinkerMIOT.attachQuery(miotQuery);
    174.     BlinkerDuerOS.attachQuery(duerQuery);
    175.     BlinkerAliGenie.attachQuery(aligenieQuery);
    176.     Blinker.setTimezone(8.0);   
    177.     dht.begin();
    178. }

    179. void loop()
    180. {
    181.     Blinker.run();

    182.     if (read_time == 0 || (millis() - read_time) >= 2000)
    183.     {
    184.         read_time = millis();

    185.         float h = dht.readHumidity();
    186.         float t = dht.readTemperature();        

    187.         if (isnan(h) || isnan(t)) {
    188.             BLINKER_LOG("Failed to read from DHT sensor!");
    189.             return;
    190.         }

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

    192.         humi_read = h;
    193.         temp_read = t;

    194.         BLINKER_LOG("Humidity: ", h, " %");
    195.         BLINKER_LOG("Temperature: ", t, " °C");
    196.         BLINKER_LOG("Heat index: ", hic, " °C");
    197.     }
    198. }
    复制代码


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

    [LV.5]常住居民I

    发表于 2020-7-29 20:48 | 显示全部楼层
    你自己没存吧。用blinker自带的esptouch配置,或者自己存下
  • TA的每日心情
    开心
    2020-7-20 14:58
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2020-8-3 16:53 | 显示全部楼层
    奈何col 发表于 2020-7-29 20:48
    你自己没存吧。用blinker自带的esptouch配置,或者自己存下

    blinker自带的esptouch折腾一番后搞定,发现esp8266 2.7.3下存在问题,一直滚动配网信息设备不在线,2.7.2下才可以正常使用

    点评

    和配网无关,2.7.3自带的ssl lib有bug,官方例程也会重启。 使用低版本package即可  详情 回复 发表于 2020-8-3 19:09
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2020-8-3 19:09 | 显示全部楼层
    molun 发表于 2020-8-3 16:53
    blinker自带的esptouch折腾一番后搞定,发现esp8266 2.7.3下存在问题,一直滚动配网信息设备不在线,2.7. ...

    和配网无关,2.7.3自带的ssl lib有bug,官方例程也会重启。
    使用低版本package即可

    点评

    package昨天更新了2.7.4,已经修复了这个bug  详情 回复 发表于 2020-8-4 14:01
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2020-8-4 14:01 | 显示全部楼层
    奈何col 发表于 2020-8-3 19:09
    和配网无关,2.7.3自带的ssl lib有bug,官方例程也会重启。
    使用低版本package即可 ...

    package昨天更新了2.7.4,已经修复了这个bug
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    未见过的TFT屏,是什么驱动芯片?
    未见过的TFT屏,是什么驱
    这两块屏是从POS机里拆的,准备做几个锂电池组电压监测,在网上没找到资料,在这里问
    win10系统显示不出端口信息,编译后显示serial port not selected。
    win10系统显示不出端口信
    求各位哥哥帮忙,小兄弟实在不懂是win10系统的原因,还是需要安装什么驱动程式?具体
    更智能的电脑远程开关机-基于继电器
    更智能的电脑远程开关机-
    我只是刚刚入门的萌新,所以有不足请指出 先展示下 功能:开关机,开关机检测,
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表