Arduino Wifi SQL hilfe

Das Printing sieht so aus

Send Data: INSERT INTO GA_MK23.Measurement (ID,Moist,Humidity,Airpressure,Temperature,Light) VALUES (999,87,300,10293,23,123)

ja die 23,23 sollten ein float sein mir ist dann aber aufgefallen das in der TABLE ja alles int sind das muss ich nochmal umbauen^^

Ich habe jetzt die Zeile

 cur_mem ->execute(query);


Ich verstehe nicht warum er behauptet es wäre kein nur_mem deklariert ist Mace ich das da oben nicht?

Sorry, in dem Bildergewurstel sehe ich nicht durch. Gib uns ordentlichen Text in Codetags.

Gruß Tommy

Sry

Mein code

#include <ArduinoWiFiServer.h>
#include <BearSSLHelpers.h>
#include <CertStoreBearSSL.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiAP.h>
#include <ESP8266WiFiGeneric.h>
#include <ESP8266WiFiGratuitous.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266WiFiSTA.h>
#include <ESP8266WiFiScan.h>
#include <ESP8266WiFiType.h>
#include <WiFiClient.h>
#include <WiFiClientSecure.h>
#include <WiFiClientSecureBearSSL.h>
#include <WiFiServer.h>
#include <WiFiServerSecure.h>
#include <WiFiServerSecureBearSSL.h>
#include <WiFiUdp.h>
#include <ESP8266WiFi.h>           
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
#include <NTPClient.h>

//SensorValues
int humidity,moist,temperature,pressure,light;
//converter
char query[128];
//Sensor Settings
int ID=999;
//command
char INSERT_SQL[] = "INSERT INTO GA_MK23.Measurement (ID,Moist,Humidity,Airpressure,Temperature,Light) VALUES (%d,%d,%d,%d,%d,%d)";


//////////////////////////////////////
//     WLAN und SQL SERVERDATEN     //
//////////////////////////////////////
IPAddress server_addr(192,168,4,10);// 
char user[] = "Sensor";             // 
char password[] = "ESP8266";        //
//////////////////////////////////////

///////////////////
//NETWORKSETTINGS//
///////////////////
char ssid[] = "GA_MK23";         
char pass[] = "1234567890";    


// Sample query
WiFiClient client;                 
MySQL_Connection conn(&client);
MySQL_Cursor* cursor;

void setup()
{
  Serial.begin(9600);
  Serial.printf("\nConnecting to %s", ssid);                    //Debug Only
  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  // print out info about the connection:
  Serial.println("\nConnected to network");                    //Debug Only
  Serial.print("My IP address is: ");                          //Debug Only
  Serial.println(WiFi.localIP());                              //Debug Only

  Serial.print("Connecting to SQL...  ");                      //Debug Only 
  if (conn.connect(server_addr, 3306, user, password))
    Serial.println("OK.");                                     //Debug Only
  else
    Serial.println("FAILED.");                                 //Debug Only
  
  // create MySQL cursor object
  cursor = new MySQL_Cursor(&conn);
}

void loop(){

//Messure//
 light=123;
 humidity=300;
 moist=87;
 pressure=10293;
 temperature =23,23;

//start query//
  if (conn.connected())
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
//Send Data//
sprintf(query, INSERT_SQL, ID,moist,humidity,pressure,temperature,light);
Serial.print("Send Data: ");Serial.println(query);
 cur_mem ->execute(query);
//Wait//
  delay (1000);
}

cur_mem ->execute(query);

aber ich bekomme einen Compiler error

Compilation error: 'cur_mem' was not declared in this scope

ich dachte aber mit

MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);

deklariere ich cur_mem

bzw in dem Example complex insert sehe ich auch nicht wo cum_mem deklariert wird

Dein if zerlegt Dir Deine Logik und damit die Deklaration des Cursors.
Ich hatte nicht umsonst geschrieben, schaue Dir die Beispiele noch mal an.
Wenn man dann gegenüber den Beispielen etwas ändert, sollte man wissen, was man tut. Dein Code sieht nicht danach aus.
Schalte in den Einstellungen der IDE alle Warnungen ein und lies sie.
Die 23,23 hast Du auch noch nicht korrigiert.
Du hast auch nicht alle Codeteile des Beispiels übernommen, z.B. fehlt die Speicherfreigabe beim Cursor. Etwas mehr Sorgfalt wäre angebracht.

Gruß Tommy

ich find das wiki zu der lib und die Kommentare in den Codes echt spärlich muss ich sagen. ja ich weis nicht so richtig was ich da zusammengeschrieben habe aber ich habe auch keinen wirklichen Anhaltspunkt gefunden.

Dir fehlen einfach die grundlegenden Kenntnisse der Sprache C++. Das hat nichts mit dem angeblich mageren Wiki der Lib zu tun. Das Wiki ist gut, setzt aber Kenntnisse in C++ voraus.
Worauf bezieht sich Dein if (conn.connected())? Du vermutest dort etwas anderes, als wirklich passiert. Wenn Du das verstehst, hast Du die Lösung.
Ich will Dir jetzt nicht einfach den fertigen Code hin werfen (bei mir kompiliert er mit der Änderung). Du sollst ja auch etwas lernen.
Außerdem hast Du eine Menge an Includes drin, die Du nicht brauchst.

Gruß Tommy

Aber nicht aufgeben jetzt, Du bist nahe an der Lösung.

Gruß Tommy

So,

ich habe mal den Code ein wenig aufgeräumt. Mir alles nochmal genau angeguckt und einige Sachen gefunden die falsch bzw. überflüssig waren.

Das Problem bei dem SpagettiCode war das er aus vielen verschiedenen Ansätzen heraus entstanden ist, immer wieder Sachen dazugeschrieben wurden und dann wieder gelöscht editiert dn irgendwas blickt man selbst nicht mehr durch.

Hier der aufgeräumte code

#include <ESP8266WiFi.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

////////////////
//SensorValues//
////////////////
int humidity,moist,temperature,pressure,light;

///////////////////
//Sensor Settings//
///////////////////
int ID=999;

////////////////////////////
//WLAN und SQL SERVERDATEN//
////////////////////////////
IPAddress server_addr(192,168,4,10);
char user[] = "Sensor";             
char password[] = "ESP8266";        

///////////////////
//NETWORKSETTINGS//
///////////////////
char ssid[] = "GA_MK23";         
char pass[] = "1234567890";    

//////////
// QUERY//
//////////
char INSERT_SQL[] = "INSERT INTO GA_MK23.Measurement (ID,Moist,Humidity,Airpressure,Temperature,Light) VALUES (%d,%d,%d,%d,%d,%d)";
char query[128];
WiFiClient client;                 
MySQL_Connection conn(&client);
MySQL_Cursor* cursor;

void setup()
{
  //StartSerial//
  Serial.begin(9600);
  Serial.printf("\nConnecting to %s", ssid);                    

  //Connect to WiFi
  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");                                          
  }
  // print out info about the connection:
  Serial.println("\nConnected to network");                    
  Serial.print("My IP address is: ");                          
  Serial.println(WiFi.localIP());                            
  
  //Test SQL ServerConnection
  Serial.print("Connecting to SQL...  ");                      
  if (conn.connect(server_addr, 3306, user, password))
    Serial.println("OK.");                                     
  else
    Serial.println("FAILED.");                                 
}

void loop(){

  //Measure//
  light=123;
  humidity=300;
  moist=87;
  pressure=10293;
  temperature =23,23;

  //Test Sensor is Connected to Database//
  if (conn.connect(server_addr, 3306, user, password)) {
    delay(1000);
   
    // Initiate the query class instance
    MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);

    //Create Datastring
    sprintf(query, INSERT_SQL, ID,moist,humidity,pressure,temperature,light);
    Serial.print("Send Data: ");Serial.println(query);                                

    //Send Data//
    cur_mem ->execute(query);
    delete cur_mem;
    Serial.println("Data recorded.");            
    }     
    //If Conection FAILED
  else{
    Serial.println("Sending Failed");}                          
    //Wait//
    delay (1000);
    }

Und hier das result auf dem SQL Server

Das sieht doch jetzt richtig gut aus XD

Der Timestamp funktioniert noch nicht und Temperature ist immer noch ein INT aber das sind Details die sich relativ leicht beheben lassen.

Ich bin sehr dankbar für deine Geduld und Hilfe @Tommy56
Aufgeben war nie eine Option. Ich bin froh das du mir nicht einfach den Code hinknallst denn das hilft mir auf lange Sicht garnicht.

Eine Frage habe ich noch, es ist seltsam aber ich finde Kiwi im Netz keine infos, obwohl es glaub ich ziemlich Basic ist.
In der Variabele
char INSERT_SQL[] = "INSERT INTO GA_MK23.Measurement (ID,Moist,Humidity,Airpressure,Temperature,Light) VALUES (%d,%d,%d,%d,%d,%d)";
sind doch diese %d Platzhalter. welchen Platzhalter benutze ich wofür? da habe ich nichts so richtig gefunden

Das sind die Formatangaben der printf-Familie

Du könntest noch den Returncode von Execute auswerten:

   int res = cur_mem ->execute(query);
    // War das Execute erfolgreich?
    if (res) Serial.println("Execute ok");
    else Serial.println("Execute Error");

Dann siehst Du, ob das Statement erfolgreich war.
Wenn nicht, das ausgegebene Statement in einen MySQL-Client kopieren, und dort die Fehlermeldung anschauen.

Ansonsten, schön, dass Du eine Lösung gefunden hast. Meine hätte auf Basis Deines Codes so ausgesehen:

#include <ESP8266WiFi.h>           
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

//SensorValues
int humidity,moist,temperature,pressure,light;
//converter
char query[128];
//Sensor Settings
int ID=999;
//command
char INSERT_SQL[] = "INSERT INTO GA_MK23.Measurement (ID,Moist,Humidity,Airpressure,Temperature,Light) VALUES (%d,%d,%d,%d,%d,%d)";


//////////////////////////////////////
//     WLAN und SQL SERVERDATEN     //
//////////////////////////////////////
IPAddress server_addr(192,168,4,10);// 
char user[] = "Sensor";             // 
char password[] = "ESP8266";        //
//////////////////////////////////////

///////////////////
//NETWORKSETTINGS//
///////////////////
char ssid[] = "GA_MK23";         
char pass[] = "1234567890";    


// Sample query
WiFiClient client;                 
MySQL_Connection conn(&client);
MySQL_Cursor* cursor;

void setup()
{
  Serial.begin(9600);
  Serial.printf("\nConnecting to %s", ssid);                    //Debug Only
  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  // print out info about the connection:
  Serial.println("\nConnected to network");                    //Debug Only
  Serial.print("My IP address is: ");                          //Debug Only
  Serial.println(WiFi.localIP());                              //Debug Only

  Serial.print("Connecting to SQL...  ");                      //Debug Only 
  if (conn.connect(server_addr, 3306, user, password))
    Serial.println("OK.");                                     //Debug Only
  else
    Serial.println("FAILED.");                                 //Debug Only
  
  // create MySQL cursor object
  cursor = new MySQL_Cursor(&conn);
}

void loop(){

//Messure//
 light=123;
 humidity=300;
 moist=87;
 pressure=10293;
 temperature =23;

  if (conn.connected()) {
    MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
    //Send Data//
    sprintf(query, INSERT_SQL, ID,moist,humidity,pressure,temperature,light);
    Serial.print("Send Data: ");Serial.println(query);
    int res = cur_mem ->execute(query);
    // War das Execute erfolgreich?
    if (res) Serial.println("Execute ok");
    else Serial.println("Execute Error");
    delete cur_mem;
  }
//Wait//
  delay (1000);
}

Gruß Tommy

Ein paar Änderungen habe ich noch vorgenommen und jetzt Funktioniert es Genaus o wie es soll.

#include <ESP8266WiFi.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

////////////////
//SensorValues//
////////////////
int humidity,moist,pressure,light;
float temperature;
///////////////////
//Sensor Settings//
///////////////////
int ID=999;

////////////////////////////
//WLAN und SQL SERVERDATEN//
////////////////////////////
IPAddress server_addr(192,168,4,10);
char user[] = "Sensor";             
char password[] = "ESP8266";        

///////////////////
//NETWORKSETTINGS//
///////////////////
char ssid[] = "GA_MK23";         
char pass[] = "1234567890";    

/////////
//QUERY//
/////////
char INSERT_SQL[] = "INSERT INTO GA_MK23.Measurement (ID,Moist,Humidity,Airpressure,Temperature,Light) VALUES (%d,%d,%d,%d,%.2f,%d)";
char query[128];
WiFiClient client;                 
MySQL_Connection conn(&client);
MySQL_Cursor* cursor;

void setup()
{
  //StartSerial//
  Serial.begin(9600);
  Serial.printf("\nConnecting to %s", ssid);                    

  //Connect to WiFi
  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");   
    //WENN verbindung nicht in 1 min aufgebaut ist Blink led nach zwei min reset//                                       
  }
  // print out info about the connection:
  Serial.println("\nConnected to network");                    
  Serial.print("My IP address is: ");                          
  Serial.println(WiFi.localIP());                            
  
  //Test SQL ServerConnection
  Serial.print("Connecting to SQL...  ");                      
  if (conn.connect(server_addr, 3306, user, password))
    Serial.println("OK.");                                     
  else
  //ERRORLED//
    Serial.println("FAILED.");                                 
  
  // create MySQL cursor object
  // testwithout 
  //cursor = new MySQL_Cursor(&conn);
}

void loop(){

  //Measure//
  light=123;
  humidity=300;
  moist=87;
  pressure=10293;
  temperature =23.23;

  //Test Sensor is Connected to Database//
  if (conn.connect(server_addr, 3306, user, password)) {
    delay(1000);
   
    // Initiate the query class instance
    MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);

    //Create Datastring
    sprintf(query, INSERT_SQL, ID,moist,humidity,pressure,temperature,light);
    Serial.print("Send Data: ");Serial.println(query);                                

    //Send Data//
    int res =cur_mem ->execute(query);
    if (res) Serial.println("Execute ok");
    //ERROR LED//
    else Serial.println("Execute Error");
    delete cur_mem;          
    }      
    //Wait//
    delay (1000);
    }

Das Ergebnis

Nun ist nur noch ein Problem.
Die Zeit und das Datum stimmen nicht. Der Raspi scheint die zeit die er aus ist nicht mitschreiben, das würde erklären warm er hinterher hinkt
vllt hat die aber auch noch nie gestimmt. ich stell die nochmal nach und mach den aus und guck Obst morgen noch passt

EDIT: nach kurzer Recherche zum Uhr stellen kam heraus de das Raspi keine integrierte RTC hat.

Du connectest Dich in jedem loop-Durchlauf neu zur DB. Das halte ich für ungünstig.
Wenn Du das so willst, dann musst Du vorher die Connection closen. Besser ist die im Wiki beschriebene Variante mit connected zu prüfen und nur wenn das nicht gegeben ist, close und connect zu machen.

Ja, der Pi hat keine RTC. Wenn er in einem Netz mit Internet-Zugang ist, kann er sich die Zeit von NTP holen. z.B. hier. Ansonsten kannst Du z.B. eine USB-RTC nutzen (keine Erfahrung damit)

Gruß Tommy

Das klingt sinnvoll ich ändere das, wobei das eh nr ein test ist, in echt soll er ja auch dem senden in den deep sleep fallen und dann muss er sich eh neu verbinden aber dann kann ich eig alles ins Setup schreiben und lass den loop leer oder?

gib "alles" in eine Funktion.
Dann kannst du selber entscheiden ob du es einmal im setup aufrufst oder periodisch im loop.

1 Like

Ich muss das ding hier leider nochmal aufwärmen.

Ich habe die ESP8266-12F jetzt soweit am laufen.
Da der ESP auch von einem anderem gerät (UNO) geweckt werden soll, habe ich zwischen GPIO16 und RST einen 120ohm Widerstand, sodass der UNO RST auf GND ziehen kann egal was GPIO16 macht.
Das hat auch wunderbar geklappt.

Nur leider bekommt der GPIO16 den ESP nicht geweckt. Ich habe nochmal nen anderen ESP Probiert (vllt ja nen defekten erwischt)
-gleiches Problem.

Ich habe den 120Ohm Widerstand durch eine Drahtbrücke ersetzt
-gleiches Problem

Ich habe den ESP8266-12F durch einen WEMOS D1 mini ersetzt
-problem besteht nicht mehr

Nun die Frage, was macht der Memos anders bzw wie kann ich das Lösen.
Das die ESP8266-12F teils nicht aus dem Deepsleep kommen habe ich schon an mehreren stellen gelesen aber ne Lösung konnte ich nicht finden. Da die Dinger aber sehr beliebt sind gehe ich mal davon as das es eine gibt.

das ist das Programm

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
Serial.println("Sachen Machen Dinge Tun");
ESP.deepSleep(1000*1000);
}

das Ergebnis.

00:07:08.815 -> �0�~H�e�!���OCE��$OC�M4�X4C|XSachen Machen Dinge Tun
00:07:10.026 -> 0�~H�e

Das der so n bissel Kryptischen Mist mit reinwurschtelt ist normal

Er hat mir die erste Zeile raus dann wartet er eine Sekunde dann blinkt die blaue LED und er haut mir die zweite Zeile raus. dann passiert nichts mehr.

Also scheinbar funktioniert das, das GPIO16 einen Impuls sendet aber er scheint nicht auszureichen. Ich habe das Ganze mal mit einer Drahtbrücke nach GND mit Pullup probiert, da musste ich immer zwei mal auf GND stecken damit er weiter macht.

Oder muss man unter tools da noch was einstellen?

Wenn Du beim ESP8266 + serielle Konsole die Baudrate auf 74880 Baud einstellst, sollte das mit den kryptischen Zeichen nicht mehr vorkommen.

Wenn ich mich richtig erinnere, muss man beim ESP8266 den GPIO16 mit dem Resetpin verbinden, wenn der Controller sich selber wecken soll, weil der GPIO16 auf LOW geht, wenn die „Schlafenszeit“ beendet ist. Von daher würde ich ja mal versuchen vom UNO aus mit einem LOW Impuls am Resetpin zu wecken.

Du gibst dann auch keine Zeit vor, sondern schreibst ESP.deepSleep(0);

na das wecken vom Uno aus funktioniert ja ohne Probleme, dass Problem ist das das Selbstwecken über GPIO16 nicht geht.

IM Uno habe ich einfach

#define           WakePin           7
void setup() {
  //Setup 328P-PU Pins
  pinMode(WakePin    , OUTPUT );
 digitalWrite(WakePin, LOW);
  delay(100);
  digitalWrite(WakePin, HIGH);
void loop()
{Sachen machen dinge tun}

nd das weckt den ESP auch zuverlässig auf. Nur das Aufwecken über GPIO16 kann ich ja nirgends beeinflussen oder?

stimmt mit der baudrate war was...
habs angepasst jetzt sieht mein Output so aus

In meinem Testaufbau ist nichts angeschlossen außer GND und VCC und eine Drahtbrücke von GPIO16 nach RS

09:33:10.190 -> �
09:33:13.803 ->  ets Jan  8 2013,rst cause:1, boot mode:(3,7)
09:33:13.835 -> 
09:33:13.835 -> load 0x4010f000, len 3424, room 16 
09:33:13.835 -> tail 0
09:33:13.835 -> chksum 0x2e
09:33:13.835 -> load 0x3fff20b8, len 40, room 8 
09:33:13.835 -> tail 0
09:33:13.835 -> chksum 0x2b
09:33:13.835 -> csum 0x2b
09:33:13.835 -> v000424a0
09:33:13.869 -> ~ld
09:33:13.937 -> rf cal sector: 1020
09:33:13.937 -> freq trace enable 0
09:33:13.937 -> rf[112] : 0�Sachen Machen Dinge Tun
09:33:15.082 ->  ets Jan  8 2013,rst cause:2, boot mode:(3,6)
09:33:15.082 -> 

So wie es aussieht startet er aber iwi nicht so wie er sollte

In meinem eigentlichen sieht die Pinbelegung so aus

#define MUX_INPUT      A0 //A0
#define WAKE           16 //D0
#define SCL           5  //D1
#define SDA           4 //D2 
#define MUX_SELECT    12  //D3
#define RX            2  //D4
#define TX            0  //D6
#define PROG           14 //D5
#define ErrorLED       13 //D7
#define PWR_PIN        ErrorLED

Nicht wundern das pin 13 zwei Namen hat das ist im Prozess entstanden und wird mal noch geändert

der Output im Aufbau sieht genau so aus wie im Testaufbau

09:38:38.890 -> 
09:38:38.890 ->  ets Jan  8 2013,rst cause:1, boot mode:(3,7)
09:38:38.890 -> 
09:38:38.890 -> load 0x4010f000, len 3424, room 16 
09:38:38.890 -> tail 0
09:38:38.890 -> chksum 0x2e
09:38:38.890 -> load 0x3fff20b8, len 40, room 8 
09:38:38.927 -> tail 0
09:38:38.927 -> chksum 0x2b
09:38:38.927 -> csum 0x2b
09:38:38.927 -> v000424a0
09:38:38.927 -> ~ld
09:38:38.992 -> rf cal sector: 1020
09:38:38.992 -> freq trace enable 0
09:38:38.992 -> rf[112] : 0�Sachen Machen Dinge Tun
09:38:40.137 -> 
09:38:40.137 ->  ets Jan  8 2013,rst cause:2, boot mode:(3,6)
09:38:40.137 -> 

Ich benutze ein breakoutboard , vllt ist das noch Kiwi wichtig zu erwähnen

Bitte nicht schimpfen das ich wieder bei AZD gekauft habe^^

EDIT: wenn ich meine Drahtbrücke bei GPIO16 zeihe und auf GND stecke und wieder zieh sieht das ganze so aus:

10:05:38.269 ->  ets Jan  8 2013,rst cause:2, boot mode:(3,6)//einmal auf GND gesteckt
10:05:38.269 -> 
10:05:41.497 -> 
10:05:41.497 ->  ets Jan  8 2013,rst cause:2, boot mode:(3,6)//zweites mal auf GND gesteckt
10:05:41.497 -> 
10:05:41.497 -> load 0x4010f000, len 3424, room 16 
10:05:41.533 -> tail 0
10:05:41.533 -> chksum 0x2e
10:05:41.533 -> load 0x3fff20b8, len 40, room 8 
10:05:41.533 -> tail 0
10:05:41.533 -> chksum 0x2b
10:05:41.533 -> csum 0x2b
10:05:41.533 -> v000424a0
10:05:41.533 -> ~ld
10:05:41.606 -> rf cal sector: 1020
10:05:41.606 -> freq trace enable 0
10:05:41.606 -> rf[112] : 0�Sachen Machen Dinge Tun
10:05:42.761 -> 
10:05:42.761 ->  ets Jan  8 2013,rst cause:2, boot mode:(3,6)//einmal auf GND gesteckt
10:05:42.761 -> 
10:05:43.694 -> 
10:05:43.694 ->  ets Jan  8 2013,rst cause:2, boot mode:(3,6)//zweites mal auf GND gesteckt
10:05:43.694 -> 
10:05:43.694 -> load 0x4010f000, len 3424, room 16 
10:05:43.730 -> tail 0
10:05:43.730 -> chksum 0x2e
10:05:43.730 -> load 0x3fff20b8, len 40, room 8 
10:05:43.730 -> tail 0
10:05:43.730 -> chksum 0x2b
10:05:43.730 -> csum 0x2b
10:05:43.730 -> v000424a0
10:05:43.730 -> ~ld
10:05:43.796 -> rf cal sector: 1020
10:05:43.796 -> freq trace enable 0
10:05:43.796 -> rf[112] : 0�Sachen Machen Dinge Tun

Es wird ein Reset Cause von 2 angezeigt. Das steht für „Fatal exception“.

Vielleicht hilft Dir folgendes weiter:

Sicher? in der Dokumentation von expressif habe ich das hier gefunden

Bildschirmfoto 2024-09-15 um 10.30.08

Ja, es gibt unterschiedliche. Da hat mir die Erinnerung einen Streich gespielt. Wenn man den Resetgrund per Software abfragt (system_get_rst_info();), dann trifft meine Aussage zu.

esp8266_reset_causes_and_common_fatal_exception_causes_en.pdf (373,9 KB)