ESP32 nach Deepsleep keine verbindung zum WLAN

Mehr
21 Aug 2019 06:11 #594 von Andy112
Andy112 erstellte das Thema ESP32 nach Deepsleep keine verbindung zum WLAN
Hallo zusammen,
ich habe ein kleines Problem mit meinem ESP32 Dev Kit.

und zwar versuche ich mich alle 5 Minuten zu meinem WLAN zu verbinden und den gemessenen ADC Wert (Spannungswert einer Batterie) an meinen Server zu schicken.

Das senden funktioniert auch tadellos, sofern der ESP eine verbindung zum WLAN aufbaut. Dies macht er in der regel einmal und dann leider nicht mehr Erst wenn ich den ESP vom Steom nehme , die FritzBox neustarte und dann erst den ESP wieder starte klappt es eventuell
dies tut er allerdings nicht zuverlässig.

Ich such nun bereits nach 3 Tagen an einer Lösung und habe bereits diverse Lösungsansätze Probiert.
wie z.B.

- FritzBox7590 Wlan auf Kanal 1 gesetzt ( auch auf Kanal8 und Autokanal)
- anderen AcessPoint als Zugangspunkt geschaffen
- ESP Erase
- neuen ESP genommen

Sobald sich der ESP einmal verbunden hat dauert es sehr lange (Teilweise ü24 Stunden ) bist sich der wieder verbindet.

Ich muss dazu sagen Ich bin leider Anfänger in dem Bereich und habe mir sehr viele Sachen über Tutorials zusammen gesucht.
.      #include <WiFi.h>
#include <ESPmDNS.h>
#include <SPIFFS.h>
#include <WiFiClient.h>
#include <string.h>
#include <FS.h>
#include <WebServer.h>

#include <WiFiMulti.h>
WiFiMulti wifiMulti;
#include <esp_wifi.h>

const char* WertAnalog = "" ;
const char* Spannung = "" ;

const char* serial = "Sensor1";  // Seriennummer 
float Faktor = 71.133333;   // Für die Berechnung A0 --> Spannung
float Korrektur = 0.35; // Korrekturwert
const char* hostname="www.meinserver.de";
int countUp = 0;
#define uS_TO_S_FACTOR 1000000 /* Conversion factor for u seconds to seconds */
#define TIME_TO_SLEEP 300 /* Time ESP32 will go to sleep (in seconds) */
WiFiClient client;


WebServer server(80);

#define debug true
#define SetupPin 14   // INI wifimanager starten mit LOW-Pegel an SetupPin

#include "INIwifimanager.h"
String ssid,ssid2, password,password2,host ;
float korr1,korr2,korr3,korr4,korr5,korr6,korr7,korr8,korr9,korr10,korr11,korr12,korr13,korr14,korr15,korr16,korr17,korr18,korr19,korr20,korr21,korr22;
  //**********
  //  Diese Funktion wird beim lesen jeder Zeile der INI-Datei ausgeführt         *
  //***********
void DatenLaden (String argument, String Wert)
{
String wert1, wert2;

  if (argument.indexOf ( "wifidata" ) >= 0)
  {
    int inx = Wert.indexOf ( "/" ) ;    // 2 Werte getrent durch "/" Zeichen
    wert1 = Wert.substring ( 0, inx ) ; // Zugangsdaten = MeinWiFi/MeinPasswort
    wert2 = Wert.substring ( inx + 1 ) ;
    wifiMulti.addAP(wert1.c_str(), wert2.c_str());
  }


if (argument.indexOf ( "hostname" ) >= 0)   host = Wert;
if (argument.indexOf ( "korr1" ) >= 0)   korr1 = Wert.toFloat();
if (argument.indexOf ( "korr2" ) >= 0)   korr2 = Wert.toFloat();
if (argument.indexOf ( "korr3" ) >= 0)   korr3 = Wert.toFloat();
if (argument.indexOf ( "korr4" ) >= 0)   korr4 = Wert.toFloat();
if (argument.indexOf ( "korr5" ) >= 0)   korr5 = Wert.toFloat();
if (argument.indexOf ( "korr6" ) >= 0)   korr6 = Wert.toFloat();
if (argument.indexOf ( "korr7" ) >= 0)   korr7 = Wert.toFloat();
if (argument.indexOf ( "korr8" ) >= 0)   korr8 = Wert.toFloat();
if (argument.indexOf ( "korr9" ) >= 0)   korr9 = Wert.toFloat();
if (argument.indexOf ( "korr10" ) >= 0)   korr10 = Wert.toFloat();
if (argument.indexOf ( "korr11" ) >= 0)   korr11 = Wert.toFloat();
if (argument.indexOf ( "korr12" ) >= 0)   korr12 = Wert.toFloat();
if (argument.indexOf ( "korr13" ) >= 0)   korr13 = Wert.toFloat();
if (argument.indexOf ( "korr14" ) >= 0)   korr14 = Wert.toFloat();
if (argument.indexOf ( "korr15" ) >= 0)   korr15 = Wert.toFloat();
if (argument.indexOf ( "korr16" ) >= 0)   korr16 = Wert.toFloat();
if (argument.indexOf ( "korr17" ) >= 0)   korr17 = Wert.toFloat();
if (argument.indexOf ( "korr18" ) >= 0)   korr18 = Wert.toFloat();
if (argument.indexOf ( "korr19" ) >= 0)   korr19 = Wert.toFloat();
if (argument.indexOf ( "korr20" ) >= 0)   korr20 = Wert.toFloat();
if (argument.indexOf ( "korr21" ) >= 0)   korr21 = Wert.toFloat();
if (argument.indexOf ( "korr22" ) >= 0)   korr22 = Wert.toFloat();


}
void IRAM_ATTR isr() {
  digitalWrite(LED_BUILTIN, LOW);
  Einstellen(); 
  
}
void setup()
{
  Serial.println("Wifi Status");
  Serial.println(WiFi.status());  
  pinMode(LED_BUILTIN, OUTPUT);
  attachInterrupt(SetupPin, isr, FALLING);
  char inser;
  Serial.begin(115200);
  Serial.println("ini lesen");
  esp_wifi_start();
  
  if (!INI_Einlesen())  Einstellen();     // INI -Datei einlesen, wenn geht nicht, starte INI WiFiManager
  Serial.println("Wifi Status");
  Serial.println(WiFi.status());
  
  //*******
  //pinMode(SetupPin, INPUT_PULLUP);       // starte INI WiFiManager wenn SetupPin Low ist
  //digitalWrite(SetupPin,HIGH);
  delay(3000);
  if (!digitalRead(SetupPin)) Einstellen();
 
 
  //*******
  //                       Starte WiFi Verbindung                                *
  //*****
  if (debug)Serial.println("Warte auf Verbindung");
  Serial.println("jetzt Starten Wifi");
  delay(300);
//  if (wifiMulti.run() != WL_CONNECTED) Einstellen();
  while (wifiMulti.run() != WL_CONNECTED) {
        
         delay(500);
         Serial.print(".");
          countUp = countUp+1;// Zähler hochzählen falls keine Verbindung
          if(countUp >= 60){
            //esp_wifi_stop();
            //esp_wifi_deinit();
              Serial.println("Wifi Status");
              Serial.println(WiFi.status());
              Serial.println("Schlafmodus ");
              delay(3000);
              esp_wifi_disconnect();
              delay(100);
              esp_wifi_stop();
              delay(100);
              esp_wifi_deinit();
              delay(3000); 
              Serial.println("Wifi Status");
              Serial.println(WiFi.status());
            esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
            esp_deep_sleep_start();


      
          //ESP.restart();//Wenn größer gleich 240(2Minuten) dann Neustart
           }
          }
  
  if (debug) Serial.println("Verbunden mit " + WiFi.SSID());
  if (debug) Serial.print("IP Addresse: ");
  if (debug) Serial.println(WiFi.localIP());
  MDNS.begin(host.c_str());
  if (debug) Serial.println("Offnen Sie http://" + host + ".local in Ihrem Browser");

  server.onNotFound([]() {
    server.send(404, "text/plain", "FileNotFound");
  });

  server.on("/", []() {         // index.html an Browser senden
    File file = SPIFFS.open("/index.html", "r");
    size_t sent = server.streamFile(file, "text/html");
    file.close();
  });

  server.begin();
  if (debug)Serial.println("HTTP Server gestartet");
}

void loop()
{
  server.handleClient();
  delay(4000);
  int sensorValue = analogRead(A0); 
 Serial.println(sensorValue);

//##   Spannung senden 
  

  // Faktor an Wert anpassen 
if(sensorValue >= 100 && sensorValue < 499) {
    Faktor = 86.9461279; 
    Korrektur = korr1;
}
else if(sensorValue <700){
     Faktor = 89.1172161; 
    Korrektur = korr2;
}
else if(sensorValue <800){
     Faktor = 94.2958333; 
    Korrektur = korr3;
}
else if(sensorValue <1000){
     Faktor = 97.6452242; 
     Korrektur = korr4;
}
else if(sensorValue <1100){
     Faktor = 101.202381; 
     Korrektur = korr5;
}
else if(sensorValue <1300){
     Faktor = 103.892732; 
     Korrektur = korr6;
}
else if(sensorValue <1400){
     Faktor = 105.523077; 
     Korrektur = korr7;
}
else if(sensorValue <1600){
     Faktor = 107.384723; 
     Korrektur = korr8;
}
else if(sensorValue <1700){
     Faktor = 108.983871; 
     Korrektur = korr9;
}
else if(sensorValue <1900){
     Faktor = 109.890969; 
     Korrektur = korr10;
}
else if(sensorValue <2000){
     Faktor = 110.869841; 
     Korrektur = korr11;
}
else if(sensorValue <2200){
     Faktor = 111.8725; 
     Korrektur = korr12;
}
else if(sensorValue <2320){
     Faktor = 112.667683; 
     Korrektur = korr13;
}
else if(sensorValue <2500){
     Faktor = 113.080607; 
     Korrektur = korr14;
}
else if(sensorValue <2630){
     Faktor = 113.71256; 
     Korrektur = korr15;
}
else if(sensorValue <2830){
     Faktor = 114.398267; 
     Korrektur = korr16;
}
else if(sensorValue <2960){
     Faktor = 115.047059; 
     Korrektur = korr17;
}
else if(sensorValue <3200){
     Faktor = 115.954667; 
     Korrektur = korr18;
}
else if(sensorValue <3330){
     Faktor = 117.42013;
     Korrektur = korr19;
}
else if(sensorValue <3600){
     Faktor = 119.585322; 
     Korrektur = korr20;
}
else if(sensorValue <3700){
     Faktor = 121.933333; 
    Korrektur = korr21;;
}
else if(sensorValue <4400){
     Faktor = 124.987564458;
     Korrektur = korr22;
}
  float voltage = sensorValue / Faktor + Korrektur;
Serial.println("\nStarting connection to server...");
Serial.println(sensorValue);
  //URL wird erzeugt und gesendet
  WiFiClient client;
  if (client.connect(hostname, 80)) {
    String url = "Eintragen.php";
    url += "?serialnumber=";
    url += serial;
    url += "&wert=";
    url += voltage;

    Serial.println(url);
    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                 "Host: " + hostname + "\r\n" +
                 "Connection: close\r\n\r\n");
    client.println();  //Verbindungs mit Server aufbauen und HTTP Anfrage senden
    
  }
  client.stop();
  //Beenden der Verbindung
  
  Serial.println("Wifi Status");
  Serial.println(WiFi.status());
  Serial.println("Schlafmodus 3 sek warten");
  delay(3000);
  esp_wifi_disconnect();
  delay(100);
  esp_wifi_stop();
  delay(100);
  esp_wifi_deinit();
  delay(3000); 
  Serial.println("Wifi Status");
  Serial.println(WiFi.status());
  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
  esp_deep_sleep_start();

}

Ich Hoffe ihr könnt mir helfen.

Vielen Dank schonmal.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Powered by Kunena Forum