ESP8266WebServer ... previously declared here

Hallo Gemeinde, ich habe auf einmal folgende Fehlermeldung:

'ESP8266WebServer webServer' previously declared here

#define uS_TO_S_FACTOR 1000000  /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP 80  // 1800
//#define TIME_TO_SLEEP 50  // 1800
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <WiFiClient.h>
#include <ThingSpeak.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <PubSubClient.h>
extern "C" { 
#include "user_interface.h" // this is for the RTC memory read/write functions
}

// create web server
ESP8266WebServer webServer(80);

So schaut der Code bis hier her aus.

Hat da jemand eine Idee woran das auf einmal liegt. Zumal es in anderen Codes genau so geht.

öffne mal einen neuen Sketch
kopiere das mal rein

#define uS_TO_S_FACTOR 1000000  /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP 80  // 1800
//#define TIME_TO_SLEEP 50  // 1800
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <WiFiClient.h>
#include <ThingSpeak.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <PubSubClient.h>
extern "C" { 
#include "user_interface.h" // this is for the RTC memory read/write functions
}

// create web server
ESP8266WebServer webServer(80);

drück auf kompilieren.
Was erhältst du?

Geht einwandfrei durch wen ich das in einen neuen Sketch kopiere.

Auch wen ich den ganzen Sketch neu kopiere geht es.

Echt komisch wenn ich den "alten" Sketch kompiliere bekomme ich die Meldung und beim neuen "alles einfach nur rein kopiert" dann geht es.

Tja einfach ein wenig damit arbeiten und der selbe Fehler.

So jetzt habe ich den Fehler gefunden.

Ich habe mir eine Sicherungskopie im selben Ordner erstell und da hat natürlich die IDE beide Dateien kompiliert. Na klar dass da der Fehler kommt das der WebServer schon mal vorhanden ist.

Ich doofi

Gratuliere!
Ist doch gut wenn Du den Fehler selbst gefunden hast. Den Fehler machst Du sicher kein 2. Mal.
Wenn Du es jetzt noch ganz gut machen willst, dann markiere den Thread als gelöst.
Aus "Wie man das Forum benutzt":
"Es ist auch hilfreich, wenn Sie auf die Schaltfläche :ballot_box_with_check: Solution am Ende der Antwort klicken, die Ihre Frage beantwortet. So können die Helfer sehen, dass die Frage gelöst ist, und andere, die die gleiche Frage haben, können die Antwort schnell finden."

Gruß, Jürgen

Die Meldungen sagen dir genau die beiden Orte wo die Deklarationen stehen.
Diese Orte auszublenden, zu ignorieren, nicht zu beachten, nicht zu zeigen, ist schon ein starkes Stück.

Hallo,
ich hatte da auch schon mal Probleme. Im Hintergrund hatte ich ein Backup Programm laufen das in regelmäßigen Zeitabständen Verzeichnisse auf dem PC mit der NAS gesichert ( synchronisiert) hat. Bei den Dateien die gerade mit der IDE bearbeitet wurden gabs dann automatisch erstellte Kopien im gleichen Verzeichniss mit einem Datumszusatz.
Heinz

@combie nun ich weis nicht wo das genau die beiden Orte anzeigt. Ich hatte diese Meldung nur be dem offenen Sketch. Na ja und bitte was soll das mit "ein starkes Stück" ?????

wie sagte Jesus schon "wer ohne Sünde ist der werfe den ersten Stein" leider ist es so dass man vor lauter Bäumen den Wald nicht mehr sieht und dann einfach ein Typ von jemand aussenstehenden einen meistens weiterbringt und sei er noch so trivial. Ich denke für so etwas ist doch ein Forum auch da um eben von jemanden aussenstehenden auf die richtige Spur gebracht zu werden.

Schönes Wochenende

Ich auch nicht, denn die Meldung wurde verstümmelt!

Beispiel:

int a = 4711;
int a =   42;

void setup() 
{

}

void loop() 
{

}

Meldungen:

sketch_oct15c:3:5: error: redefinition of 'int a'
    3 | int a =   42;
      |     ^
E:\Programme\arduino\portable\sketchbook\sketch_oct15c\sketch_oct15c.ino:2:5: note: 'int a' previously defined here
    2 | int a = 4711;
      |     ^
exit status 1
redefinition of 'int a'

Also, ich sehe da ganz klar, wo der Fehler ist, und die Doppelten stecken.
Incl. der beiden Dateinamen und den Zeilen.
Das funktioniert auch, wenn die Redefinition in einer anderen *.ino ist

sketch_oct15c:3:5:
Datei:Zeile:Position

sketch_oct15c.ino:2:5:
Datei:Zeile:Position

und wo ist das "previously declared here"? Das Ding war es was mich verwirrt hat und nicht gleich auf den richtigen Pfad gebracht hat.

Keine Ahnung!
Du hast es doch ins Spiel gebracht.....

Woher soll ich wissen, woher das kommt!
Ich habe vermutet, es wäre eine Compiler Meldung.
Habe ich mich da geirrt?

Im meiner Meldung steht es drin

Ist ein int und kein Server, aber das macht für den Sinn der Meldung wenig Unterschied.

Herzlichen Glückwunsch.
Du hast wohl zwischen setup() und loop() eine kaputte Zeile?

ESP8266WebServer webServer(80);

Das Du den Rest verheimlichst ist schade.

Weil er genau diese Zeile angemeckert hat.

Und da war keine kaputte Zeile zwischen setup() und loop() es hatte alles gepasst. Wie gesagt es hat daran gelegen dass ich mir eine Sicherheitskopie gemacht habe und diese im selben Ordner belassen habe und ich nicht bedacht habe dass die IDE sich alles aus dem Ordner schnappt. Ist ja logisch wenn 2x das selbe da ist, dass er gleich das erste doppelte anmotzt. Drauf gekommen bin ich als ich die angemeckerte Zeile, eben das mit dem Server, aus kommentiert habe da hat er gleich die nächste Zeile angemeckert usw. erst als ich die Kopien im Ordner gelöscht hatte ging es wieder einwandfrei.
Der Rest von Sketch ist eine kleine Wetterstation die einmal auf ThingSpeak, 1x auf einen SQL Server, 1X per MQTT und eben 1x bei http die Daten ausgibt. Ich dachte mir warum soll ich noch mehr reinstellen wenn er eh schon ganz am Anfang hängt. Da kann es ja wohl nicht am restlichen Code liegen.

Und ich behaupte, das die vollständige Fehlermeldung genau darauf aufmerksam gemacht hätte.
Es ist wurscht, wo sich die Zeile befindet.
Hättest Du die originale gelöscht, wäre auch nichts passiert.
Nur das dann irgendwas in der Art:

[...] error: redefinition of 'void setup()'

gestanden hätte und jeder hätte sofort gewusst, das da etwas doppelt ist.

Doch. Weil das genauso vom Compiler ausge-/verwertet wird.

so so und warum ist es gegangen als ich die 2te Datei gelöscht habe und am Sketch selber nichts geändert habe???

Ich habe es noch ein paar mal ausgetestet. Jedesmal wenn ich eine Kopie von dem Sketch im Ordner habe kommt genau diese Fehlermeldung und sobald ich die Kopie wieder lösche geht es einwandfrei durch. Da kann nichts kaputtes dazwischen sein.
und die von dir beschrieben Meldung kommt garnicht

DOCH!
Was hast Du denn nicht verstanden?
Die Arduino-Ide übergibt an den Compiler den Inhalt des Verzeichnisses!
Du hast zwei identische Inhalte.

Mache folgendes:
Baue einen Sketch so wie Du den jetzt hast und er funktioniert.
Speichern.
Dann im Ordner eine Kopie davon anlegen.
In der Kopie alles vor setup() löschen.
Kompiliere Deinen Sketch in der IDE.

Geht?
Nein?
Fehlermeldung?

#define uS_TO_S_FACTOR 1000000  /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP 80  // 1800
//#define TIME_TO_SLEEP 50  // 1800
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <WiFiClient.h>
#include <ThingSpeak.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <PubSubClient.h>
extern "C" { 
#include "user_interface.h" // this is for the RTC memory read/write functions
}
//ESP8266WebServer server(80);

// create web server
ESP8266WebServer httpServer(80);



void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

So habe ich einfach mal diesen Sketch neu erstellt.

Kompiliert und geht.

Kopie im Ordner angelegt.... Kompiliert ..... Fehler

Kopie wider gelöscht .... geht.