Nachricht über WhatsApp

Hab Dir das mal in Deinen Code-Auszug eingearbeitet (nicht getestet, das ist bei Teilsketchen immer etwas aufwendig ...):

boolean okgesendet = false;
boolean trockengesendet = false;

void loop() 
{

  // Wartezeit vor der Messung
  delay(1000);

  // Sensor wird ausgelesen. Hier nur Celsius, Fahrenheit ist auskommentiert (|| isnan(f)).
  float h = dht.readHumidity();
  // Temperatur in Celsius (default)
  float t = dht.readTemperature();
  // Temperatur in Fahrenheit (isFahrenheit = true)
  //float f = dht.readTemperature(true);

  // Fehlersuchlauf und Abbruch mit Meldung.
  if (isnan(h) || isnan(t) ) {
    Serial.println(F("Fehler beim Auslesen des Sensors!"));
    return;
  }

  float hic = dht.computeHeatIndex(t, h, false);
  Serial.println(WiFi.localIP());
  Serial.print(F("Temperatur: "));
  Serial.print(t);
  Serial.println(F("°C "));
  Serial.print(F("Luftfeuchtigkeit: "));
  Serial.print(h);
  Serial.println(F("% "));
  
  Sensorwert = analogRead(SensorPin);  //Sensor in die Erde
  Serial.println(Sensorwert);
     
if((Sensorwert < 340) && !okgesendet)
{
  Serial.println("Pflanze gut gewässert!");
  digitalWrite(Led , LOW);
  client.println("<center>");
  client.println("<H3><span style='color: #00FF00;'>Pflanze gut gewässert!!</span></H3>");
  okgesendet = true;
  trockengesendet = false;
}
// auf das "else" können wir verzichten, da Sensorwert nur grösser/gleich oder kleiner sein kann
// Allerdings bedeutet eine(!) Schwelle, dass bei wechselnden Werten um 340 (341, 339, 342, 338)
// am Schwellwert häufig Meldungen kommen (Stichwort Hysterese!!! Mal googeln!!!)
// Beim Messwert 340 kommt übrigens nix, da oben nur auf kleiner, unten auf grösser reagiert wird ...
// Mag selten vorkommen, ist aber eine prinzipielle Fehlerquelle.
if ((Sensorwert > 340) && !trockengesendet)
{
  Serial.println("Bitte gießen!!!");
  digitalWrite(Led , HIGH);
  okgesendet = false;
  trockengesendet = true;
  sendMessage("Gieß mich bitte!!!");
}

Bitte die Kommentare lesen; eine Hysterese habe ich nicht eingebaut, das kannst Du ändern, indem zwischen den Schwellwerten eine Lücke lässt und noch den folgenden Code in loop einfügst (das ist insgesamt optimierbar, indem man die Ausgaben für trocken und gut bewässert in separate Funktionen auslagert und so von verschiedenen Stellen einfach aufrufen kann; hier die unschöne "Copy'nPaste" Variante):

if (!trockengesendet && !okgesendet) {
  if (Sensorwert > 340) {
    Serial.println("Bitte gießen!!!");
    digitalWrite(Led, HIGH);
    okgesendet = false;
    trockengesendet = true;
    sendMessage("Gieß mich bitte!!!");
  } else {
    Serial.println("Pflanze gut gewässert!");
    digitalWrite(Led, LOW);
    client.println("<center>");
    client.println("<H3><span style='color: #00FF00;'>Pflanze gut gewässert!!</span></H3>");
    okgesendet = true;
    trockengesendet = false;
  }
}

Wenn Du den kompletten Sketch posten würdest, könnte man das einbauen und testen ... :wink:

Ansonsten steht schon alles Wesentliche bei meinem obigen Beispiel.