Hallo,
ich habe ein Problem beim kompilieren eines alten Programmes.
D.h. das ich das Pogramm mit einer älteren Version kompilieren konnte.
Leider weiss ich nicht die entsprechenden Versionen.
Im Moment verwende ich folgende Versionen:
Arduino Version 2.3.2
ESP32-Boards 3.2
Lib’s siehe Programm-Code
// ESP32 WebSocket Server: Display Sensor Readings
// https://randomnerdtutorials.com/esp32-websocket-server-sensor/
// geaenderte Version: BME680, LittleFS, Original siehe: ESP32_WebSocket_Server_BME680
// Board: ESP32 Dev Module
// Shield ESP32-04 mit ESP32 30-polig
// Schaltplan: ESP32_Shields_6 Blatt 1
#include <Arduino.h>
#include <WiFi.h>
#include <AsyncTCP.h> // V 1.1.4
#include <ESPAsyncWebServer.h> // V 3.7.6
#include <FS.h>
#include <LittleFS.h>
#include <Arduino_JSON.h> // V 0.2.0
#include <Adafruit_BME680.h> // V 2.0.5
#include <Adafruit_Sensor.h>
// Replace with your network credentials
const char* ssid = ssid"";
const char* password = "password";
#define SEALEVELPRESSURE_HPA (1013.25)
#define FORMAT_LITTLEFS_IF_FAILED true
#define DEBUGGING // Einkommentieren für die Serielle Ausgabe
#ifdef DEBUGGING
#define DEBUG_B(...) Serial.begin(__VA_ARGS__)
#define DEBUG_P(...) Serial.println(__VA_ARGS__)
#define DEBUG_F(...) Serial.printf(__VA_ARGS__)
#else
#define DEBUG_B(...)
#define DEBUG_P(...)
#define DEBUG_F(...)
#endif
// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
// Create a WebSocket object
AsyncWebSocket ws("/ws");
// Json Variable to Hold Sensor Readings
JSONVar readings;
// Timer variables
unsigned long lastTime = 0;
unsigned long timerDelay = 30000;
float temperature;
float humidity;
float pressure;
float gasResistance;
float altitude;
// Create a sensor object
Adafruit_BME680 bme;
// Init BME280
void initBME280(){
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
}
// Init BME680
void initBME680(){
if (!bme.begin()) {
Serial.println("Could not find a valid BME680 sensor, check wiring!");
while (1);
}
}
// Vorlage: ESP32_BME680_WebServer
void getBME680Readings(){
// Tell BME680 to begin measurement.
unsigned long endTime = bme.beginReading();
if (endTime == 0) {
Serial.println(F("Failed to begin reading :("));
return;
}
if (!bme.endReading()) {
Serial.println(F("Failed to complete reading :("));
return;
}
temperature = bme.temperature;
pressure = bme.pressure / 100.0;
humidity = bme.humidity;
gasResistance = bme.gas_resistance / 1000.0;
altitude = bme.readAltitude(SEALEVELPRESSURE_HPA);
}
// Get Sensor Readings and return JSON object
String getSensorReadings(){
readings["temperature"] = String(bme.readTemperature());
readings["humidity"] = String(bme.readHumidity());
readings["pressure"] = String(bme.readPressure()/100.0F);
readings["gas"] = String(bme.readGas()/1000.0F);
readings["alti"] = String(bme.readAltitude(SEALEVELPRESSURE_HPA));
String jsonString = JSON.stringify(readings);
return jsonString;
}
// Initialize SPIFFS
/*void initSPIFFS() {
if (!SPIFFS.begin(true)) {
Serial.println("An error has occurred while mounting SPIFFS");
}
Serial.println("SPIFFS mounted successfully");
} */
// Initialize LittleFS
void initLittleFS() {
if(!LittleFS.begin(FORMAT_LITTLEFS_IF_FAILED)){
Serial.println("LittleFS Mount Failed");
return;
}
else{
Serial.println("Little FS Mounted Successfully");
}
}
// Initialize WiFi
void initWiFi() {
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi ..");
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(1000);
}
Serial.println(WiFi.localIP());
}
void notifyClients(String sensorReadings) {
ws.textAll(sensorReadings);
}
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;
//String message = (char*)data;
// Check if the message is "getReadings"
//if (strcmp((char*)data, "getReadings") == 0) {
//if it is, send current sensor readings
String sensorReadings = getSensorReadings();
Serial.println(sensorReadings);
notifyClients(sensorReadings);
//}
}
}
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);
}
void setup() {
/*Serial.begin(115200);
delay(500);
Serial.println("");
Serial.println("***********************************************");
Serial.println("ESP32_Sensor_Readings_WebSocket_BME680_LittleFS");
Serial.println("***********************************************");
*/
DEBUG_B(115200);
DEBUG_F("\nSketchname: %s\nBuild: %s\t\tIDE: %d.%d.%d\n\n", __FILE__, __TIMESTAMP__, ARDUINO / 10000, ARDUINO % 10000 / 100, ARDUINO % 100 / 10 ? ARDUINO % 100 : ARDUINO % 10);
initBME680();
initWiFi();
initLittleFS();
initWebSocket();
// Web Server Root URL
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(LittleFS, "/index.html", "text/html");
});
server.serveStatic("/", LittleFS, "/");
// Start server
server.begin();
}
void loop() {
if ((millis() - lastTime) > timerDelay) {
String sensorReadings = getSensorReadings();
Serial.print(sensorReadings);
notifyClients(sensorReadings);
lastTime = millis();
}
ws.cleanupClients();
}
Damit erhalte ich die Fehlermeldungen:
In file included from E:\MeineProgramme\Arduino_Uno\ESP32_Programme\WebServer\ESPAsyncWebServer_h\ESP32_Sensor_Readings_WebSocket_BME680_LittleFS\ESP32_Sensor_Readings_WebSocket_BME680_LittleFS.ino:19:
e:\MeineProgramme\Arduino_Uno\libraries\ESP_Async_WebServer\src/ESPAsyncWebServer.h: In member function 'tcp_state AsyncWebServer::state() const':
e:\MeineProgramme\Arduino_Uno\libraries\ESP_Async_WebServer\src/ESPAsyncWebServer.h:1107:49: error: passing 'const AsyncServer' as 'this' argument discards qualifiers [-fpermissive]
1107 | return static_cast<tcp_state>(_server.status());
| ~~~~~~~~~~~~~~^~
In file included from E:\MeineProgramme\Arduino_Uno\ESP32_Programme\WebServer\ESPAsyncWebServer_h\ESP32_Sensor_Readings_WebSocket_BME680_LittleFS\ESP32_Sensor_Readings_WebSocket_BME680_LittleFS.ino:18:
e:\MeineProgramme\Arduino_Uno\libraries\AsyncTCP\src/AsyncTCP.h:198:13: note: in call to 'uint8_t AsyncServer::status()'
198 | uint8_t status();
| ^~~~~~
E:\MeineProgramme\Arduino_Uno\ESP32_Programme\WebServer\ESPAsyncWebServer_h\ESP32_Sensor_Readings_WebSocket_BME680_LittleFS\ESP32_Sensor_Readings_WebSocket_BME680_LittleFS.ino: In function 'void onEvent(AsyncWebSocket*, AsyncWebSocketClient*, AwsEventType, void*, uint8_t*, size_t)':
E:\MeineProgramme\Arduino_Uno\ESP32_Programme\WebServer\ESPAsyncWebServer_h\ESP32_Sensor_Readings_WebSocket_BME680_LittleFS\ESP32_Sensor_Readings_WebSocket_BME680_LittleFS.ino:168:21: warning: format '%u' expects argument of type 'unsigned int', but argument 3 has type 'uint32_t' {aka 'long unsigned int'} [-Wformat=]
168 | Serial.printf("WebSocket client #%u connected from %s\n", client->id(), client->remoteIP().toString().c_str());
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~
| |
| uint32_t {aka long unsigned int}
E:\MeineProgramme\Arduino_Uno\ESP32_Programme\WebServer\ESPAsyncWebServer_h\ESP32_Sensor_Readings_WebSocket_BME680_LittleFS\ESP32_Sensor_Readings_WebSocket_BME680_LittleFS.ino:171:21: warning: format '%u' expects argument of type 'unsigned int', but argument 3 has type 'uint32_t' {aka 'long unsigned int'} [-Wformat=]
171 | Serial.printf("WebSocket client #%u disconnected\n", client->id());
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~
| |
| uint32_t {aka long unsigned int}
E:\MeineProgramme\Arduino_Uno\ESP32_Programme\WebServer\ESPAsyncWebServer_h\ESP32_Sensor_Readings_WebSocket_BME680_LittleFS\ESP32_Sensor_Readings_WebSocket_BME680_LittleFS.ino:166:10: warning: enumeration value 'WS_EVT_PING' not handled in switch [-Wswitch]
166 | switch (type) {
| ^
Juergen