Hallo Zusammen,
der nachfolgende Code, der in dieser, zwecks Fehlereingrenzung eingedampften Form nichts Sinnvolles mehr tut, übersetzt in der Arduino IDE fehlerfrei.
In VSC erhalte ich folgende Fehlermeldungen, über die ich nichts im Netz finden konnte, was mich weitergebracht hat:
Compiling .pio\build\esp-wrover-kit\libbf6\WebSockets\WebSockets.cpp.o
In file included from .pio\libdeps\esp-wrover-kit\WebSockets\src\SocketIOclient.cpp:9:0:
.pio\libdeps\esp-wrover-kit\WebSockets\src\WebSocketsClient.h:59:51: error: missing binary operator before token "("
#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 4)
^
.pio\libdeps\esp-wrover-kit\WebSockets\src\WebSocketsClient.h:126:51: error: missing binary operator before token "("
#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 4)
^
Compiling .pio\build\esp-wrover-kit\libbf6\WebSockets\WebSocketsClient.cpp.o
*** [.pio\build\esp-wrover-kit\libbf6\WebSockets\SocketIOclient.cpp.o] Error 1
In file included from .pio\libdeps\esp-wrover-kit\WebSockets\src\WebSocketsClient.cpp:26:0:
.pio\libdeps\esp-wrover-kit\WebSockets\src\WebSocketsClient.h:59:51: error: missing binary operator before token "("
#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 4)
Das sah für mich erstmal so aus, als gäbe es Fehler in den Funktionen der WebSocketsServer.h Bibliothek. Allerdings kann ich mir das nicht vorstellen (ich habe nichts geändert), außerdem scheint es in der Arduino IDE ja zu laufen. Ich habe die aktuelle Version 2.6.1 der Bibliothek für dieses Projekt in VSC installiert. In der Arduino IDE ebenfalls 2.6.1.
Nach mehrstündigem trial and error bin ich am Ende meiner Möglichkeiten. Wisst ihr woran es liegen könnte?
#include <Arduino.h>
#include <WiFi.h>
#include <WebSocketsServer.h>
#include <WebServer.h>
const char* ssid = "xxxx";
const char* password = "xxxx";
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 3600;
const int daylightOffset_sec = 3600;
WebServer server(80); // Deklariert ein Objekt der WebServer Bibliothek dass auf HTTP Anfragen auf Port 80 hört
WebSocketsServer webSocket = WebSocketsServer(81); // Deklariert ein Objekt der WebSocketServer Bibliothek auf Port 81
void webSocketEvent (byte num, WStype_t type, uint8_t * payload, size_t length) {
Serial.println("What's happening?");
int typ = type;
switch(typ) {
case WStype_DISCONNECTED: // enum that reads status, this is used for debugging
Serial.println("Websocket: Client Disconnected");
break;
case WStype_CONNECTED: // Check if a WebSocket Client is connected or not
Serial.println("Websocket: Client Connected");
//add code here what to do when connected
break;
case WStype_TEXT: // check response from client
Serial.println("Response received");
break;
default:
Serial.println("Gemsen?");
}
}
void setup()
{
Serial.begin(115200);
//-----------------------------------------------
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED){Serial.print("."); delay(500);}
WiFi.mode(WIFI_STA); // Connecting to an existing WiFi network in Station mode
Serial.println();
Serial.print("Local IP: ");
Serial.println(WiFi.localIP());
//-----------------------------------------------
//init and get the time
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
// server.on("/", serverRouting); // War deaktiviert und funktioniert - warum auch immer - trotzdem.
//-----------------------------------------------
server.begin(); // Startet den Webserver, der hier aber noch gar nichts tut
webSocket.begin(); // Startet den Websocket Server
webSocket.onEvent(webSocketEvent); // Bei einer hereinkommenden websocket Nachricht gehe zu Funktion 'WebSocketEvent'
Serial.println(F("HTTP server and Websocket server started"));
}
void loop() {
}
Die Zeile "int typ = type; switch(typ)" war ein Versuch, ist aber unnötig und ändert am Fehlerbild nichts gegenüber einem einfachen switch (type).
Im Voraus Danke und Grüße
Werner