2 esp8266 im Client server Betrieb

Hallo,

hab mal eine frage ich hab 2 esp8266 im Einsatz 1. als Sever an dem der BME280 haengt und seine daten an den 2. Client sendet und dort auf ein 20x4 LCD Display ausgibt funktioniert auch soweit alles nur das problem ist das der 1. ESP im Garten haengt und mit einer solar Powerbank mit Strom versorgt wird die aber wirderrum zu schnell leer ist. (Batterienb auch getestet) hab Deep.Sleep versucht nur da taucht das Problem auf das der 1. ESP Server schlafen geht bevor etwas gesendet wurde Somit kommt beim 2. ESP mit display nix mehr an und das Display bleibt blau

Gruss und danke im vorraus Hitman43

// Import required libraries
#include <ESP8266WiFi.h>
#include "ESPAsyncWebServer.h"

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

// Set your access point network credentials
const char* ssid = "ESP8266-Access-Point";
const char* password = "123456789";

/*#include <SPI.h>
  #define BME_SCK 18
  #define BME_MISO 19
  #define BME_MOSI 23
  #define BME_CS 5*/

Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

// Create AsyncWebServer object on port 80
AsyncWebServer server(80);

String readTemp() {
  return String(bme.readTemperature());
  //return String(1.8 * bme.readTemperature() + 32);
}

String readHumi() {
  return String(bme.readHumidity());
}

String readPres() {
  return String(bme.readPressure() / 100.0F);
}

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

  // Setting the ESP as an access point
  Serial.print("Setting AP (Access Point)…");
  // Remove the password parameter, if you want the AP (Access Point) to be open
  WiFi.softAP(ssid, password);

  IPAddress IP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(IP);

  server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest * request) {
    request->send_P(200, "text/plain", readTemp().c_str());
  });
  server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest * request) {
    request->send_P(200, "text/plain", readHumi().c_str());
  });
  server.on("/pressure", HTTP_GET, [](AsyncWebServerRequest * request) {
    request->send_P(200, "text/plain", readPres().c_str());
  });

  bool status;

  // default settings
  // (you can also pass in a Wire library object like &Wire2)
  status = bme.begin(0x76);
  if (!status) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }

  // Start server
  server.begin();
 
  //ESP_Server geht Schlafen
  //Serial.println("Uaaah. Ich gehe nu ins Bett für 15 minuten");
  //ESP.deepSleep(60 * 1000000);
  //Information
  Serial.println(" ");
  Serial.println("##########################################################");
  Serial.println("#                                                        #");
  Serial.println("#              (C)2020 by Thorsten Alex                  #");
  Serial.println("#              Mail:                                     #");
  Serial.println("#                                                        #");
  Serial.println("##########################################################");
}

void loop() {

}

Da musst Du die Rolle Server/Client umkehren.
Der, der schläft, muss der Client sein. Wenn er wach ist, kontaktiert er den Server (der immer läuft) und liefert seinen Messwert. Den zeigt der Server an, bis er was neues bekommt.
Evtl. noch eine Timeout-Auswertung, wenn sich der Client zu lange nicht gemeldet hat, weil Akku alle.

Gruß Tommy

Da du keine Internetseite sondern nur ein Display ansteuerst bietet sich an das ganze auf ESP-NOW auzubauen.

Bei ESP-NOW reicht eine "Wachzeit" von 0,1 Sekunden" zum abschicken der ESP-NOW-Nachricht.
Wie machst du beim ESP8266 das aufwecken?

Bei ESP32boards kann man ohne äußere Beschaltung einen Timer benutzen.

viele Grüße Stefan

Esp8266 Bme280 DeepSleep allerdings mit Ausgabe auf einer Webseite.

Das kann man aber easy auf ein LCD umbiegen.

Gruß Fips

Hallo,

Das aufwecken mache ich indem Pin D0 mit RST verbunden Wird und sioch so einen Reset holt und wieder wach wird denn schlafen scheint er ja zu gehen nur eben dann werden alle anderen sachen auch nicht mehr laufen wie das Display

ich werde es mal versuchen den server client zu tausche.

Hallo,
wenn Du bei dem ESP der draussen ist Wert darauf legst das er immer zu gleichen Zeiten wach wird und seine Daten sendet sollte er noch die Uhrzeit von einem NTP Server holen. Ansonsten wird Dir das langsam weglaufen, auch weil die Temperatur eine Rolle spielt und so die Sleepzeit nicht immer gleich ist.

Zum verschicken geht dann UDP oder auch TCP

Heinz

hallo noch habe ich es nicht geschafft das die beiden esp das machen was sie sollen werde mich am wochenende wieder dran setzen. Die Idee mit der uhrzeit ist gut danke

Hitman43

Ich bin noch am experimentieren komme aber zu keinem Ergebniss.
weis jemand was genau ich aendern muss denn ich hab bis jetzt alles was display ist in den server geschrieben und alles was Sensor ist in den Cliebt aber irgendwie funktioniert nu garnix mehr

Gruss Hitman43