Nachricht über WhatsApp

Hallo ec2021!
Hab versucht, deinen und meinen Code zusammenzufügen.
Zudem habe ich den DHT durch einen kombinierten CJMCU8118 ersetzt. Der misst Temp, Humid, eCo2 und Tvoc.
Und ich hab OTA eingebunden.
Mich erschlägt deine Programmierkompetenz, da die beiden Codes so weit auseinanderstehen, dass ich viele Erklärungen bräuchte, wenn ich deinen verstehen soll.
Mein bisheriges Ergebnis bis zum "jetzt weiß ich nicht mehr weiter", hab ich hier mal gepostet.

//#define ESP32USED

#include <DHT.h>
#ifdef ESP32USED
#include <WiFi.h>
#include <HTTPClient.h>
#include "WiFiSecrets.h"
const byte SensorPin = 34;

#else

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <Wire.h>    // I2C Library
#include "ccs811.h"  // CCS811 Library
#include "ClosedCube_HDC1080.h"
#include <ArduinoOTA.h>


const char* ssid = "";
const char* password = "";
const byte SensorPin = A0;

const int dry = 595; // value for dry sensor
const int wet = 270; // value for wet sensor

#endif

#include <WiFiClient.h>
#include <UrlEncode.h>

WiFiServer server(80);

CCS811 ccs811(D3); // nWAKE on D3
ClosedCube_HDC1080 hdc1080; //Aktivierung des Sensors

// +international_country_code + phone number
// Portugal +351, example: +351912345678
String phoneNumber = "";
String apiKey = "";

const int schaltSchwelle = 420;
const int toleranz = 20;
float humidity;
float temperature;
int Sensorwert = 0;
const unsigned long messIntervall = 10000;
unsigned long letzteMessung = 0;
boolean schonWasGemeldet = false;
boolean giessMichGesendet = false;
boolean dhtValid = false;
char aColor[10];  // Es braucht nur 7, aber besser etwas Luft
char aText[65];   // Auch hier einiges an Sicherheit eingebaut (bisher max. 39 Zeichen)

void setup() {
  ArduinoOTA.setHostname("");
  ArduinoOTA.setPassword("");
  ArduinoOTA.begin();
  Serial.begin(115200);

Wire.begin(); 
  hdc1080.begin(0x40);
  // Enable CCS811
  ccs811.set_i2cdelay(50); // Korrekturanweisung, um am ESP8266 die I2C clock zu korrigieren
  bool ok= ccs811.begin();
  // Display aktivieren
  ok= ccs811.start(CCS811_MODE_10SEC);
  
  WiFi.mode(WIFI_STA);
  WiFi.hostname("");
  WiFi.begin(ssid, password);
  Serial.println("Connecting");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  server.begin();
  Serial.println("Server started");
  Serial.println("");
  Serial.print("Connected to WiFi network with IP Address: ");
  Serial.println(WiFi.localIP());
  // Dieser Dummy-Text dürfte normalerweise nie erscheinen ...
  strcpy(aColor, "FF00FF");
  strcpy(aText, "----------- Bitte warten ------------");
  // Einmal vor der loop() ausführen, um klare Startbedingungen zu schaffen
  messenUndAuswerten();
}

void loop() 
{
  ArduinoOTA.handle();
  uint16_t eco2, etvoc, errstat, raw;
  ccs811.read(&eco2,&etvoc,&errstat,&raw);
  // Ausgabe der Messergebnisse am seriellen Monitor
  if( errstat==CCS811_ERRSTAT_OK ) 
  if (millis() - letzteMessung >= messIntervall) {
    messenUndAuswerten();
  }
  updateWebPage(aColor, aText);
}

void messenUndAuswerten() {
  letzteMessung = millis();
  messung();
  auswertung();
}

void messung() {
#ifdef ESP32USED
  dhtValid = false;
#else
  // Sensor wird ausgelesen
  hdc1080.readHumidity();
  // Temperatur in Celsius (default)
  hdc1080.readTemperature()();
  // Temperatur in Fahrenheit (isFahrenheit = true)
  //temperature = dht.readTemperature(true);
  //dhtValid = !(isnan(humidity) || isnan(temperature));

#endif

  // Compute heat index in Fahrenheit (the default)
  // float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahrenheit = false)
  // Der Heat Index ist die "gefühlte Temperatur"; wird hier zwar ermittelt
  // aber ansonsten nirgends verwendet ?!?!?!?
  // *********************************************
  // float hic = dht.computeHeatIndex(temperature, humidity, false);
  // *********************************************

  Sensorwert = analogRead(SensorPin);  //Sensor in die Erde
#ifdef ESP32USED
  Sensorwert = map(Sensorwert, 0, 4095, 0, 1023);
#endif

  Serial.println(WiFi.localIP());
  
}


void auswertung() {
  switch (Sensorwert) {
    case 0 ... 19:  // Eher ein Kurzschluss ???
      fehler();
      break;
    case 20 ... schaltSchwelle - toleranz:  // Wertebereich für gut bewässert
      allesOk();
      break;
    case schaltSchwelle - toleranz + 1 ... schaltSchwelle + toleranz - 1:  // Hysterese
      // Wenn wir gleich nach einem Neustart hier landen, signalisieren wir
      // dass alles Ok ist. Später passiert hier nichts mehr
      if (!schonWasGemeldet) {
        allesOk();
      }
      break;
    case schaltSchwelle + toleranz... 1023:  // Wertebereich für definitiv zu trocken
      giessMich();
      break;
  }
}

void giessMich() {
  Serial.println("Bitte gießen!!!");
  strcpy(aColor, "FF0000");
  strcpy(aText, "Bitte gieß mich!");
  schonWasGemeldet = true;
  if (!giessMichGesendet) {
    giessMichGesendet = true;
    sendMessage("Gieß mich bitte!!!");
  }
}

void allesOk() {
  giessMichGesendet = false;
  schonWasGemeldet = true;
  Serial.println("Pflanze gut gewässert!");
  strcpy(aColor, "00FF00");
  strcpy(aText, "Pflanze gut gewässert!!");
}

void fehler() {
  Serial.println("Fehlerhafter Sensorwert");
  strcpy(aColor, "FF0000");
  strcpy(aText, "Fehlerhafter Sensorwert!!");
}

void updateWebPage(char* color, char* text) {
  //  WiFiClient client = server.accept();
  WiFiClient client = server.available();
  if (client) {
    if (client.connected()) {
      //    Serial.println("Client connected");
      client.println("HTTP/1.1 200 OK");
      client.println();
      client.println("<!DOCTYPE html><html>");
      client.println("<head><meta name =\"viewport\" content=\"width=device-width, initial-scale=1\">");
      client.println("<meta charset=utf-8 />");
      client.println("<head><meta http-equiv=\"refresh\" content=\"3\">");
      client.println("<link rel=\"icon\" href\"data:,\">");
      client.println("<title>PlantBox</title>");
      client.println("<body>");
      client.println("<span style='color: #199BDE;'>");
      client.println("<H2><u><center><span style='color: #ff5733;'>PlantBox</span></center></u></H2>");
      if (dhtValid) {
        client.println("<h4><center>Temperatur:");
        client.print(temperature - 5);  // Ausgeben der Temperatur
        client.println("°");            // Schreiben des ° Zeichen
        client.println("<h4><center>Luftfeuchte:");
        client.print(humidity);  // Ausgeben der Temperatur
        client.println("%");     // Schreiben des ° Zeichen
        client.println("<h4><center>eCo2:");
        client.println(eco2);                                // Ausgeben der Temperatur
        client.println("ppm");                // Schreiben des ° Zeichen
        client.println("<h4><center>eTVOC:");
        client.println(etvoc);                                // Ausgeben der Temperatur
        client.println("ppb");                // Schreiben des ° Zeichen           
      } else {
        client.println("<h4><center>Temperatur: ungültig");
        client.println("<h4><center>Luftfeuchte: ungültig");
        client.println("<h4><eco2: ungültig");
        client.println("<h4><center>etvoc: ungültig");
      }
      client.println("<h4><center>Bodenfeuchte:");
      client.println(percentageHumididy); 
        client.println("%");    
        client.println("/");                              
        client.println(sensorVal);
      //client.println(Sensorwert);
      client.println("</h4></center>");
      char buffer[100];  // Bei längeren Ausgaben muss die Puffergröße ggf. angepasst werden!!!!!
      sprintf(buffer, "<H3><span style='color: #%s;'>%s</span></H3>", color, text);
      client.println(buffer);
      client.println("<center>\n\n");
      client.print("</body>\n</html>");
    }
    client.stop();
  }
}

void sendMessage(String message) {
#ifndef ESP32USED
  String url = "http://api.callmebot.com/whatsapp.php?phone=" + phoneNumber + "&apikey=" + apiKey + "&text=" + urlEncode(message);
  WiFiClient client;
  HTTPClient http;
  http.begin(client, url);
  http.addHeader("Content-Type", "application/x-www-form-urlencoded");
  // Send HTTP POST request
  int httpResponseCode = http.POST(url);
  if (httpResponseCode == 200) {
    Serial.print("Message sent successfully");
  } else {
    Serial.println("Error sending the message");
    Serial.print("HTTP response code: ");
    Serial.println(httpResponseCode);
  }
  // Free resources
  http.end();
#endif
}

So far ;_)) Klaus