Dieser Beitrag Wurde Gelöscht.
Ihr Beitrag wurde an seinen aktuellen Speicherort verschoben, da er besser geeignet ist.
Da Du ihn aus 2 anderen zusammengesetzt hast, ist es Dein Code. ![]()
Wenn Du uns noch die komplette Fehlermeldung gibst, sparen wir uns das Suchen nach der Zeile.
Gruß Tommy
ja und in welcher Zeile hast du den so etwas wie
status
deklariert?
das gibts sicher in einem deiner anderen funktionierenden Sketche oder?
Dieser Beitrag Wurde Gelöscht.
a) formatiere mal mit STRG-T in deiner IDE den Sketch.
jetzt sollen dir schon ein paar Sachen auffallen.
b) du hast ein
void smtpCallback(SMTP_Status status) ;
{
"eingerückt" im loop. Das ist vermutlich nicht so wie es sein soll.
In einer funktion (du bist da im loop()) kannst du nicht eine neue Funktion anlegen.
Das gehört raus auf höchste Ebene.
Der Strichpunkt dahinter ist auch verdächtig - so definiert man keine Funktionen.
Weiter habe ich mir das nicht angesehen, aber deine Zusammenkopiererei passt halt nicht.
Da ist leider einiges "im Argen" ![]()
- Am besten erst einmal alles, was nur einmal im Programmablauf durchzuführen ist, in setup() verschieben.
- Danach die einzelnen Aktivitäten möglichst in einzelne Funktionen auslagern: Das verbessert die Übersicht, wann was passiert/passieren soll.
- Callback-Funktionen werden i.d.R. eingerichtet, um nach dem erfolgreichen (oder auch nicht) Durchlauf einer externen Funktion (hier das Versenden einer Email per smtp-Protokoll) eine Rückmeldung im eigenen Sketch erhalten zu können (vereinfacht ausgedrückt wie ein "Rückruf" = Callback auf der eigenen Telefonnummer). Sie gehören daher auf keinen Fall in die loop(), die ja vom eigenen Sketch regelmäßig durchlaufen wird.
Als Grundgerüst für eine übersichtliche Struktur hier ein (nicht lauffähiger!) Vorschlag, es fehlen die defines, includes, Deklarationen und wesentliche Teile des Codes. Es geht nur um die Strukturierung.
...
void setup(){
// Hier alles hinein, was nur einmal definiert oder durchlaufen werden muss
Serial.begin(115200);
smtp.callback(smtpCallback);
// usw. ..
}
void EnterWifi(){
// Hier das Einloggen ins lokale WLAN
WiFi.begin(...)
while (...
// Der Sketch bleibt hier hängen, wenn das nicht klappt!
}
void LeaveWifi(){
// Ggf. noch Serial-Ausgabe oder was sonst nach dem Mail-Senden noch durchgeführt werden soll hinzufügen ...
Wifi.disconnect();
}
void SendMail(){
// Hier alles, was zum Vorbereiten und Versenden der Mail benötigt wird
}
void loop(){
stromfluss = digitalRead(readpin);
Serial.println(stromfluss);
if (stromfluss == HIGH) {
Serial.print("Success") ;
EnterWifi();
SendMail();
LeaveWiFi();
}
}
void smtpCallback(SMTP_Status status) ;{
// Hier die Callback-Funktion
}
"stromfluss" ist eigentlich nicht der richtige Begriff; digitalRead() liest aus, ob eine Spannung am Pin anliegt, der "stromfluss" ist dabei eher eine kleine ohmsche Notwendigkeit. Aber ich kenne ja die genaue Anwendung dahinter auch nicht ... ![]()
Falls die Anteile vorher funktioniert haben, sollte es nach dem "Sortieren" funktionieren; auf jeden Fall sollten sich dann eventuelle Fehlerursachen zielgerichtet finden und beseitigen lassen. Ich hoffe mal, auf die Schnelle nichts Wesentliches übersehen zu haben ...
Nachtrag: Wenn der Zustand des Pins auf HIGH bleibt, sendet der ESP32 ca. 4 bis 5 Mails pro Minute (240 bis 300 pro Stunde). Ist das a) gewollt oder b) aufgrund der physikalischen Anwendung ausgeschlossen?
Viel Erfolg!