Philipp Dorn
Philipp Dorn

Reputation: 11

ESP8266 WIFI Connection lost after Acces Point reboot

Heyho,

at first, I am no programmer - it's just my hobby :)

I have a cistern in my garden and I want to measure the level of it with an ESP8266 and an ultrasonic sensor.

I am sending the data via mqtt to my mqtt broker.

Everything working well but when my accesspoint is rebooting two times a day and after that reboot the ESP8266 doesn't connect to the WIFI again.

What I've done so far:

So, I think I have a mistake in thinking with that problem.

Heres my code:

#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,Abstand,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();
  
  
  
}

So, now I hope someone of you can help me with my small problem! :)

Greetings,

Philipp

Upvotes: 1

Views: 505

Answers (0)

Related Questions