Acces Point 重启后 ESP8266 WIFI 连接丢失

问题描述

嘿嘿

起初,我不是程序员 - 这只是我的爱好 :)

我的花园里有一个蓄水池,我想用 ESP8266 和超声波传感器测量它的水位。

我通过 mqtt 将数据发送给我的 mqtt 经纪人。

一切正常,但当我的接入点每天重启两次,重启后 ESP8266 无法再次连接到 WIFI。

到目前为止我所做的:

  • WiFi.setAutoReconnect(true); 设置为 true(在 Internet 上找到)
  • 再次调用 setup(); 中的函数 void loop()

所以,我认为我在思考这个问题时有一个错误。

这是我的代码:

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <Ultrasonic.h>
Ultrasonic ultrasonic(12,13);
 
const char* ssid = "XXX"; // Enter your WiFi name
const char* password =  "XXX"; // Enter WiFi password
const char* mqttServer = "XXX";
const int mqttPort = 1883;
const char* mqttUser = "XXX";
const char* mqttPassword = "XXX";
#define abstand_topic "home/zisterne/fuellstand"
#define abstand_topic_2 "home/zisterne/mittl_fuellstand"
const int RunningAverageCount = 24; // Anzahl der in den Laufenden-Mettelwert aufgenommenen Messungen
float RunningAverageBuffer[RunningAverageCount];
int NextRunningAverage;

unsigned long previousMillis = 0;
unsigned long interval = 30000;
 
WiFiClient espClient;
PubSubClient client(espClient);
 
void setup() {
 
  Serial.begin(115200);
 
  WiFi.begin(ssid,password);
  WiFi.setAutoReconnect(true);
  WiFi.persistent(true);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("Connecting to WiFi..");
  }
  Serial.println("Connected to the WiFi network");
 
  client.setServer(mqttServer,mqttPort);
  client.setCallback(callback);
 
  while (!client.connected()) {
    Serial.println("Connecting to MQTT...");
 
    if (client.connect("ESP8266Client",mqttUser,mqttPassword )) {
 
      Serial.println("connected");  
 
    } else {
 
      Serial.print("failed with state ");
      Serial.print(client.state());
      delay(2000);
 
    }
  }
  
//  //Sensor auslesen und übergeben
//  int Sensor = ultrasonic.distanceRead();
//  char Abstand[10];
//  itoa(Sensor,Abstand,10);
//  
//  Serial.println(ultrasonic.distanceRead());
//  client.publish(abstand_topic,Abstand);
   
}
 
void callback(char* topic,byte* payload,unsigned int length) {
 
  Serial.print("Message arrived in topic: ");
  Serial.println(topic);
 
  Serial.print("Message:");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
 
  Serial.println();
  Serial.println("-----------------------");
 
}
 
void loop() {
  client.loop();

  //WLAN Reconnect
  if (WiFi.status() != WL_CONNECTED) {
    delay(500);
    setup();
  }

  //Sensor auslesen und übergeben
  int Sensor = ultrasonic.distanceRead();
  char Abstand[10];
  itoa(Sensor,10);
  
  Serial.println(ultrasonic.distanceRead());
  client.publish(abstand_topic,Abstand);
  //unsigned long minutes = 1000 * 300;

  float RawDistance = ultrasonic.distanceRead();
 
  RunningAverageBuffer[NextRunningAverage++] = RawDistance;
  if (NextRunningAverage >= RunningAverageCount)
  {
    NextRunningAverage = 0; 
  }
  float RunningAverageDistance = 0;
  for(int i=0; i< RunningAverageCount; ++i)
  {
    RunningAverageDistance += RunningAverageBuffer[i];
  }
  RunningAverageDistance /= RunningAverageCount;
  int mittelwert = RunningAverageDistance;
  char mittl_Abstand[10];
  itoa(mittelwert,mittl_Abstand,10);
  client.publish(abstand_topic_2,mittl_Abstand);
  
  delay(5000);
  yield();
  
  
  
}

所以,现在我希望你们中的某个人可以帮助我解决我的小问题! :)

您好,

菲利普

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...