Nachricht über WhatsApp

Moin @MogliW ,

habe mal ein kleines Beispiel geschrieben:

/*
  Forum: https://forum.arduino.cc/t/nachricht-uber-whatsapp/1245021
  Wokwi: https://wokwi.com/projects/394537395212181505
*/
const int  alarmFeuchte  = 500;
const int  normalFeuchte = 600;
const byte feuchtePin = A0;
const char * msgTrocken = "Zu trocken!";
const char * msgOk      = "Ok";
const unsigned long messIntervall  =   100;
const unsigned long meldeIntervall = 10000;

boolean msgTrockenGesendet = false;
boolean msgOkGesendet = false;

unsigned long letzteMeldung = 0;
unsigned long letzteMessung = 0;
int messWert;

void setup() {
  Serial.begin(115200);
  pinMode(feuchtePin, INPUT);
}

void loop() {
  if (millis() - letzteMessung >= messIntervall) {
    letzteMessung = millis();
    messWert = analogRead(feuchtePin);
    switch (messWert) {
      case 0 ... alarmFeuchte:
        sendeTrocken();
        break;
      /*
             Hier ist eine Lücke zwischen alarmFeuchte und normalFeuchte,
             die verhindert, dass man bei kleinen Schwankungen um einen Schwellwert
             ständig Nachrichten erhält (Stichwort: Hysterese)
      */
      case normalFeuchte ... 1023:
        sendeOk();
        break;
      /*
        Bei default kommt man an, wenn man im "Graubereich" zwischen alarmFeuchte
        und normalFeuchte ist; beim Start (beide boolsche Variable auf false) senden
        wir dann einfach "Ok"
      */
      default:
        if (!msgTrockenGesendet && !msgOkGesendet) {
          sendeOk();
        }
        break;
    }
  }
  // Zusätzliche Zeitsteuerung
  if (millis() - letzteMeldung >= meldeIntervall) {
    msgTrockenGesendet = false;
    msgOkGesendet = false;
  }
}

void sendeOk() {
  if (!msgOkGesendet) {
    letzteMeldung = millis();
    Serial.println(msgOk);
    msgOkGesendet = true;
    msgTrockenGesendet = false;
  }
}

void sendeTrocken() {
  if (!msgTrockenGesendet) {
    letzteMeldung = millis();
    Serial.println(msgTrocken);
    msgOkGesendet = false;
    msgTrockenGesendet = true;
  }
}

Kannst Du auf Wokwi testen: https://wokwi.com/projects/394537395212181505

Es gibt zwei Meldungen (Ok und Trocken), die sich gegenseitig wieder freigeben; heißt, dass man zunächst den jeweils anderen Zustand erreichen muss, damit es wieder eine Meldung (der anderen Art) gibt.

Ausserdem ist noch beispielhaft eine Zeitsteuerung drin, die nach einer vorgegebenen Zeit wieder eine Meldung freigibt.

Gemessen wird hier alle 0,1s, Wiederholungen der Nachrichten sind auf 10 s gestellt.

Viel Spaß damit :wink:
ec2021