ESP8266 deepSleep klappt nicht

Hallo zusammen ich hab ein problem.
Habe mit meinem ESP8266 eine wetterstation gebaut die ueber Batterie laufen tut.
Da mit der stromverbrauch zu hoch ist wollte ich den ESP.deepSleep befehl einsetzen.

Leider meckert die Software beim kompilieren und gibt mir den Fehler

ESP erroe name a type aus. Vielleicht koennt ihr mir helfen.

Gruss Hitman

Was hältst du denn davon, uns die komplette Fehlermeldung sowie deinen Sketch zu posten ?
Dann sehen wir besser, wo dein Fehler ist
Den Sketch bitte in Code-Tags setzen.

wie mache ich das mit dem Code tag

</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *

Gruß Tommy

Das ist die Fehlermeldung esp.deepsleep esp8266 does not name a type

da ist der code

#include <ESP8266WiFi.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define SEALEVELPRESSURE_HPA (1013.25)

const char* ssid = "**********";
const char* password = "*********";
unsigned long delayTime;
float h, t, p;
char temperatureCString[6];
char humidityString[6];
char pressureString[7];

Adafruit_BME280 bme;

WiFiServer server(80);

void setup() {
 Serial.begin(115200);
 delay(10);

IPAddress ip(*********);
 IPAddress gateway(**********);
 IPAddress subnet(255, 255, 255, 0);
 IPAddress dns(**********);
 WiFi.config(ip, dns, gateway, subnet);

Serial.println(F("BME280 test"));

   bool status;
   status = bme.begin(0x76);
 
 // Connect to WiFi network
 Serial.println();
 Serial.println();
 Serial.print("Connecting to ");
 Serial.println(ssid);
 
 WiFi.mode(WIFI_STA);
 WiFi.begin(ssid, password);
 
 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi connected");
 
 // Start the server
 server.begin();
 Serial.println("Server started");

 // Print the IP address
 Serial.println(WiFi.localIP());
}
void getWeather() {
 
   h = bme.readHumidity();
   t = bme.readTemperature();    
   p = bme.readPressure()/ 100.0;
   dtostrf(t, 5, 1, temperatureCString);
   dtostrf(h, 5, 1, humidityString);
   dtostrf(p, 6, 1, pressureString);
   delay(100);

}
void loop() {
 // Check if a client has connected
 WiFiClient client = server.available();
 
 if (client) {
   Serial.println("New client");
   // bolean to locate when the http request ends
   boolean blank_line = true;
   while (client.connected()) {
     if (client.available()) {
       char c = client.read();
       
       if (c == '\n' && blank_line) {
           getWeather();
           client.println("HTTP/1.1 200 OK");
           client.println("Content-Type: text/html");
           client.println("Connection: close");
           client.println();
           // your actual web page that displays temperature
           client.println("<!DOCTYPE HTML>");
           client.println("<html>");
           client.println("<head><META HTTP-EQUIV=\"refresh\" CONTENT=\"15\"></head>");
           client.println("<body><h1>BME280 Web Server</h1>");
           client.println("<table border=\"2\" width=\"456\" cellpadding=\"10\"><tbody><tr><td>");
           client.println("<h3>Temperatur = ");
           client.println(temperatureCString);
           client.println("&deg;C</h3><h3>Luftfeuchte = ");
           client.println(humidityString);
           client.println("%</h3>");
           client.println("<h3>Luftdruck = ");
           client.println(pressureString);
           client.println("hPa");
           client.println("</h3></td></tr></tbody></table></body></html>");  
           break;
       }
       if (c == '\n') {
         // when starts reading a new line
         blank_line = true;
       }
       else if (c != '\r') {
         // when finds a character on the current line
         blank_line = false;
       }
     }
   }  
   // closing the client connection
   delay(1);
   client.stop();
   Serial.println("Client disconnected.");  
   ESP.deepSleep(900000000);
 }

Kopiere die Fehlermeldung lieber, wenn Du sie nicht richtig abschreiben kannst.

Gruß Tommy

esp does not name a type so ist es nu richtig

Ich denke, es müsste eher ESP heißen.

Gruß Tommy

Ich habe Deinen Sketch mal auf die Fehlerstelle reduziert.
Da kommt keine Fehlermeldung. Irgendwas an Deinen Angaben stimmt nicht.

void setup() {
 Serial.begin(115200);
 delay(10);
}

void loop() {
   Serial.println("Client disconnected.");  
   ESP.deepSleep(900000000);
 }

Gruß Tommy

Hallo,

Du musst Deine Idee nochmal überdenken. der ESP soll als Webserver laufen und auf der Webseite die Daten anzeigen wenn man im Brauser seine IP aufruft. Ohne deepSleep könnte das auch klappen. Wenn der ESP aber im Sleepmodus ist kann er aber ja auch nicht erreicht werden, er pennt ja tief und fest. Es wird Dir keine Zeit bleiben die Seite aufzurufen.

Wenn Du das mit der Batterie durchziehen willst benötigst Du zwei ESP einer der misst und sendet z.B mit TCP an den Zweiten und geht dann wieder pennen. Der zweite läuft immer bekommt die Daten und zeigt sie auf der Webseite an.

Ganz am Ende fehlt noch eine geschlossene Klammer , dann hat´s bei mir kompiliert

Gruß Heinz

Oh ok so gut bin ich in sachen arduino noch nicht aber statt eines 2. ESP 8266 koennte man doch einen raspberry pi nehmen oder weil den hab ich da

Hallo,
gut wenn du einen Pi mit Webserve hast bist Du ja schon halb fertig. Den musst du natürlich erweitern, damit du die Webseite zur Anzeige der Messdaten aufrufen kannst, und die ankommenden Daten irgendwo abspeichern.

ich hab da gerade vor ein paar Wochen selber was ähnliches gebaut, allerdings mit einem zweiten ESP.

Dann musst Du noch überlegen wie oft Du messen willst, Die tatsächlichen Zeitpunkte werden Dir relativ schnell weglaufen. Wenn Du also immer um 1:00 , 2:00 , 3:00.. Uhr messen willst musst Du das mit der Uhrzeit synchronisieren. Und jedesmal die nächste Sleepzeit berechnen. Selbst das schwankt dann bei mir schon mal um etwa 30s , abhängig von der Temperatur , fängt sich aber immer wieder. Der Server ergänzt bei mir die Messwerte mit Datum/Zeit wann die Daten angekommen sind.

die function zum senden basiert bei mir auch auf dem Beispiel WifiClientBasic. Heraus gekommen ist dann das hier.

void sendTCP() {
  Serial.printf("connecting to %s %d \n", host, hostPort);
  WiFiClient client;
  if (!client.connect(host, hostPort)) {
    Serial.println("connection failed");
    delay(5000);
    return;
  }
  Serial.println("sending data to server");
  Serial.printf("%4d;%4.2f;%4.2f;%4.2f;%4.2f\n", devAdress, temp, hum, pres, Vcc);
  client.printf("%4d;%4.2f;%4.2f;%4.2f;%4.2f", devAdress, temp, hum, pres, Vcc);
  Serial.println("closing connection");
  client.stop();
}