Gelöst 'WiFi' does not name a type Was besagt das ?

Hallo Wissende
Was bedeutet diese Fehlermeldung tatsächlich,was passt dem Compiler nicht ?
Hintergrund : ESP32 mit einem Sketch für GPIO AN-AUS per Websocketverbindung;

funktioniert prima,allerdings mit zufälliger IP.Daher habe ich WiFi.iconfig(ip, dns, gateway, subnet() eingefügt,es kommt o.g. Compilermeldung.Die nötigen Variablen sind festgelegt.
Verträgt sich WiFi.config möglicherweise nicht mit ESPAsyncWebServer ?Beispielsweise mag der Server keine Änderung von Port 80.
erstmal nur grundsätzlich. Der Sketch ansich funzt ja.
Das Thema gibts schon öfter,nur niemand weiss tatsächlich was.
grosse Hoffnung
delucks

Scheinbar nicht. Zeige ihn doch einfach einmal.

Außerhalb von Funktionen sind nur Deklarationen erlaubt, die mit einem Datentyp beginnen müssen. Vermutlich ist WiFi ein Objekt und daher an dieser Stelle unzulässig.

Danke fürs antworten
Verstehe ich aber nicht,demnach dürfte Wifi.config leider nicht funktionieren.

Nicht außerhalb einer Funktion.

Eventuell hilft Dir ESP32 Static/Fixed IP Address.

Danke fürs antworten Hallo Herr Wernersen (Dilletanten Ole)
doch geht.Schick ich gern.Nur wie ( Datei anhängen ) ?

Eine Zeile entkommentiert und der Sketch sketcht :slight_smile: :wink:

ssid undPassworte sind hier gelöscht
/*********
Rui Santos
Complete project details at ESP32 WebSocket Server: Control Outputs (Arduino IDE) | Random Nerd Tutorials
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*********/

// Import required libraries
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>

// Variablen für bestehendes W-LAN
const char* ssid = "selber ändern";
const char* password = "selber ändern";

// Variablen für (A)ccesc (P)oint
//const char* apssid = "selber ändern";
//const char* appassword = "selber ändern";
//IPAddress apip(192,168,xxx,xxx);
IPAddress ip(192,168,xxx,xxx);
IPAddress dns(192,168,xxx,1);
IPAddress gateway(192,168,xxx,1);
IPAddress subnet(255,255,255,0);
//WiFi.config(ip, dns, gateway, subnet); Diese Zeile ist es

bool ledState1 = 0;
const int ledPin1 = 2;

// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
AsyncWebSocket ws("/ws");

const char index_html[] PROGMEM = R"rawliteral(

ESP32 Schalt-Server html { font-family: Arial, Helvetica, sans-serif; text-align: center; } h1 { font-size: 1.8rem; color: white; } h2{ font-size: 1.5rem; font-weight: bold; color: #143642; } .topnav { overflow: hidden; background-color: #143642; } body { margin: 0; } .content { padding: 30px; max-width: 600px; margin: 0 auto; } .card { background-color: #F8F7F9;; box-shadow: 2px 2px 12px 1px rgba(140,140,140,.5); padding-top:10px; padding-bottom:20px; } .button { padding: 15px 50px; font-size: 24px; text-align: center; outline: none; color: #fff; background-color: #0f8b8d; border: none; border-radius: 5px; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-tap-highlight-color: rgba(0,0,0,0); } /*.button:hover {background-color: #0f8b8d}*/ .button:active { background-color: #0f8b8d; box-shadow: 2 2px #CDCDCD; transform: translateY(2px); } .state { font-size: 1.5rem; color:#8c8c8c; font-weight: bold; } ESP Web Server

Fern-Schaltbox

Schalter - Stehlampe

Zustand: %STATE%

Toggle

)rawliteral";

void notifyClients() {
ws.textAll(String(ledState1));
}

void handleWebSocketMessage(void *arg, uint8_t data, size_t len) {
AwsFrameInfo info = (AwsFrameInfo)arg;
if (info->final && info->index == 0 && info->len == len && info->opcode == WS_TEXT) {
data[len] = 0;
if (strcmp((char
)data, "toggle") == 0) {
ledState1 = !ledState1;
notifyClients();
}
}
}

void onEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type,
void *arg, uint8_t *data, size_t len) {
switch (type) {
case WS_EVT_CONNECT:
Serial.printf("WebSocket client #%u connected from %s\n", client->id(), client->remoteIP().toString().c_str());
break;
case WS_EVT_DISCONNECT:
Serial.printf("WebSocket client #%u disconnected\n", client->id());
break;
case WS_EVT_DATA:
handleWebSocketMessage(arg, data, len);
break;
case WS_EVT_PONG:
case WS_EVT_ERROR:
break;
}
}

void initWebSocket() {
ws.onEvent(onEvent);
server.addHandler(&ws);
}

String processor(const String& var){
Serial.println(var);
if(var == "STATE"){
if (ledState1){
return "ON";
}
else{
return "OFF";
}
}
}

void setup(){
// Serial port for debugging purposes
Serial.begin(115200);

pinMode(ledPin1, OUTPUT);
digitalWrite(ledPin1, LOW);

// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}

// Print ESP Local IP Address
Serial.println(WiFi.localIP());

initWebSocket();

// Route for root / web page
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/html", index_html, processor);
});

// Start server
server.begin();
}

void loop() {
ws.cleanupClients();
digitalWrite(ledPin1, ledState1);
}

code funktioniert nicht !!

Das ist ein Methodenaufruf am Objekt WiFi und an der Stelle (außerhalb einer Funktion ) verboten.

Hallo,
irgendwie werde ich aus Deinem Post nicht schlau.
Du willst eine WIFI Verbindung aufbauen , allerdings mit einer festen IP Adresse für den ESP32. Bei mir steht die Zeile WIFI.config () beim Verbindungsaufbau und nicht irgendwo am Anfang außerhalb. Das kann im Setup sein oder einer eigenen Fuction die vom setup aufgerufen wird. Aber sowas wurde Dir auch schon geschrieben.

 WiFi.mode(WIFI_STA);
  Serial.printf("Connecting to %s ", ssid);

  WiFi.config(staticIP, gateway, subnet);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
   }

Gruß Heinz

Hallo an alle
Massenhaft Danke für die Erhellungen
Noch nicht geprüft aber Ruhesständler Heinz hat mich (glaub ich ) richtig geschubst.
Ich werde Meldung tun.
Bye

Das wars !!
Wifi.config... nicht in die allgemeinen Zuweisungen sondern direkt beim Serverstart.
HURRA

tschüss

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.