INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
ESP32 & WLAN & BME280 & MySql
21.02.2020, 13:34
Beitrag #65
RE: ESP32 & WLAN & BME280 & MySql
Wenn MQTT dann echt simpel.

Damit sollen "nur" die ERROR-Msg an einen "MQTT-Server" übertragen werden.

Anfänger-Denke:
ESP1 hat Error(i.M. printet in SerialMonitor).
MQTT schickt diese Error-Msg direkt an MQTT-Server.
MQTT-Server führt Liste mit "Error-Msg".
Diese Liste kann ich mir anschauen.

Ich liebe einfache Lösungen. Ausbauen/aufblähen kann man die immer noch (bei Bedarf).

Vergiss bitte nicht: ich weiß es gibt "MQTT". Fertig.
Beim ESP macht es m.M.n. jetzt Sinn, da ich vermute wenn WLAN streikt kann er trotzdem immer noch eine MQTT-Msg absetzen.

LG
Dietmar

ESP32 Anfänger mit Migrations-Hintergrund (komme von RasPi & Python) Cool
Gruß aus Franken
Dietmar
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2020, 13:34
Beitrag #66
RE: ESP32 & WLAN & BME280 & MySql
Hallo,

Code:
23:48:46.034 -> wifi_retry46: 0
23:48:48.190 -> Connected to server version 5.7.29-0ubuntu0.18.04.1
23:48:48.190 -> Running SQL-UPDATE:
23:48:48.190 -> UPDATE solar.Steuerung SET tempS1=24.14, stampEsp1='2020-02-20 23:48:46' WHERE ID=1;
23:48:48.355 -> Query executed? Please check!
23:48:48.355 -> SQL-Server: 192.168.101.2 Disconnected.
23:49:46.031 -> wifi_retry46: 0
23:49:57.275 -> [D][WiFiGeneric.cpp:337] _eventCallback(): Event: 5 - STA_DISCONNECTED
23:49:57.308 -> [W][WiFiGeneric.cpp:353] _eventCallback(): Reason: 200 - BEACON_TIMEOUT
23:49:58.237 -> [D][WiFiGeneric.cpp:337] _eventCallback(): Event: 4 - STA_CONNECTED
23:49:58.237 -> [D][WiFiGeneric.cpp:337] _eventCallback(): Event: 7 - STA_GOT_IP
23:49:58.237 -> [D][WiFiGeneric.cpp:381] _eventCallback(): STA IP: 192.168.101.65, MASK: 255.255.255.0, GW: 192.168.101.1

wenn ich es jetzt richtig lese, hat er aber doch nach dem BEACON_TIMEOUT wieder sauber verbunden?
Zu BEACON_TIMEOUT gabe es mal Probleme, die sollten aber schon ab ESP32 Paket 1.0.3 behoben sein.
https://gitter.im/espressif/arduino-esp3...5111a43a68
Ich bin heute abend sowieso bei meinem Bekannten, der steckt da tiefer drin, ich werde ihn mal fragen.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2020, 13:42
Beitrag #67
RE: ESP32 & WLAN & BME280 & MySql
(21.02.2020 13:34)db91595 schrieb:  Beim ESP macht es m.M.n. jetzt Sinn, da ich vermute wenn WLAN streikt kann er trotzdem immer noch eine MQTT-Msg absetzen.
Da ist halt die Frage, was genau da streikt. Weil grundsätzlich: Wenn (W)LAN nicht geht, dann geht auch MQTT nicht. MQTT bietet aber auf jeden Fall Möglichkeiten für den Fall, dass es Netzausfälle gibt. Weil darauf wurde es optimiert.

Als Lektüre für den MQTT-Einstieg finde ich das hier ganz gut: https://www.hivemq.com/mqtt-essentials/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2020, 13:43 (Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2020 13:47 von db91595.)
Beitrag #68
RE: ESP32 & WLAN & BME280 & MySql
möglich, das er verbunden hat, hat aber (im SerialMonitor) keinen Muks mehr gemacht & keinen Eintrag mehr in MySql.
Fachsprache: er hat sich "aufgehängt" :-)

Ich bin gerade dabei deinen Code-Schnipsel in meinen Sketch einzubauen und dann lass ich ihn wieder am PC einen Test-Lauf machen.
"Schau'n mer ma"

Hab ihn ja heute morgen wieder resettet, jetzt hatte er um 12:26:46 einen Hänger mit etwas anderer Msg
Code:
12:26:45.991 -> wifi_retry46: 0
12:26:47.085 -> [E][WiFiClient.cpp:392] write(): fail on fd 62, errno: 11, "No more processes"
12:26:47.085 -> [E][WiFiClient.cpp:392] write(): fail on fd 62, errno: 11, "No more processes"
12:26:47.118 -> [E][WiFiClient.cpp:392] write(): fail on fd 62, errno: 11, "No more processes"
12:26:47.118 -> [E][WiFiClient.cpp:392] write(): fail on fd 62, errno: 11, "No more processes"
12:26:47.118 -> [E][WiFiClient.cpp:392] write(): fail on fd 62, errno: 11, "No more processes"
12:26:47.118 -> [E][WiFiClient.cpp:392] write(): fail on fd 62, errno: 11, "No more processes"
12:26:47.118 -> [E][WiFiClient.cpp:392] write(): fail on fd 62, errno: 11, "No more processes"
12:26:47.152 -> [E][WiFiClient.cpp:392] write(): fail on fd 62, errno: 11, "No more processes"
12:26:47.152 -> [E][WiFiClient.cpp:392] write(): fail on fd 62, errno: 11, "No more processes"
12:26:47.152 -> [E][WiFiClient.cpp:392] write(): fail on fd 62, errno: 11, "No more processes"
12:26:47.152 -> [E][WiFiClient.cpp:392] write(): fail on fd 62, errno: 11, "No more processes"
12:26:47.152 -> [E][WiFiClient.cpp:392] write(): fail on fd 62, errno: 11, "No more processes"
12:26:48.180 -> Connected to server version 5.7.29-0ubuntu0.18.04.1
12:26:48.180 -> Running SQL-UPDATE:
12:26:48.180 -> UPDATE solar.Steuerung SET tempS1=23.68, stampEsp1='2020-02-21 12:26:46' WHERE ID=1;
12:26:48.180 -> [E][WiFiClient.cpp:392] write(): fail on fd 62, errno: 11, "No more processes"
12:26:56.606 -> [D][WiFiGeneric.cpp:337] _eventCallback(): Event: 5 - STA_DISCONNECTED
12:26:56.606 -> [W][WiFiGeneric.cpp:353] _eventCallback(): Reason: 200 - BEACON_TIMEOUT
12:26:57.567 -> [D][WiFiGeneric.cpp:337] _eventCallback(): Event: 4 - STA_CONNECTED
12:26:57.601 -> [D][WiFiGeneric.cpp:337] _eventCallback(): Event: 7 - STA_GOT_IP
12:26:57.601 -> [D][WiFiGeneric.cpp:381] _eventCallback(): STA IP: 192.168.101.65, MASK: 255.255.255.0, GW: 192.168.101.1
12:51:31.982 -> [D][WiFiGeneric.cpp:337] _eventCallback(): Event: 5 - STA_DISCONNECTED
12:51:31.982 -> [W][WiFiGeneric.cpp:353] _eventCallback(): Reason: 200 - BEACON_TIMEOUT
12:51:32.148 -> [D][WiFiGeneric.cpp:337] _eventCallback(): Event: 4 - STA_CONNECTED
12:51:32.181 -> [D][WiFiGeneric.cpp:337] _eventCallback(): Event: 7 - STA_GOT_IP
12:51:32.181 -> [D][WiFiGeneric.cpp:381] _eventCallback(): STA IP: 192.168.101.65, MASK: 255.255.255.0, GW: 192.168.101.1
Edit: Das ist im SerialMonitor der Letzte Eintrag! Danach wieder keinen Muks!

Vlt. sagt das deinem Bekannten "a weng" mehr.

LG
Dietmar

ESP32 Anfänger mit Migrations-Hintergrund (komme von RasPi & Python) Cool
Gruß aus Franken
Dietmar
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2020, 13:48
Beitrag #69
RE: ESP32 & WLAN & BME280 & MySql
Diese Meldung mit "no more processes" habe ich auch schon gesehen. Ich frage mich gerade, ob die maximale Anzahl der Verbindungen hier vielleicht erreicht ist. Beim ESP32 sind das afaik sechs.

Ich kenne mySQL auf nem µC nicht, aber könnte es vielleicht sein, dass Verbindungen aufgemacht und nicht wieder zugemacht werden und irgendwann ist der Connection-Pool aufgebraucht?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2020, 13:50
Beitrag #70
RE: ESP32 & WLAN & BME280 & MySql
Code:
conn.close();

Bezieht sich auf MySql

& komisch ist das er stundenlang läuft und nicht nach vorhersehbarer Zeit aussteigt.

LG
Dietmar

ESP32 Anfänger mit Migrations-Hintergrund (komme von RasPi & Python) Cool
Gruß aus Franken
Dietmar
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2020, 14:01 (Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2020 14:04 von db91595.)
Beitrag #71
RE: ESP32 & WLAN & BME280 & MySql
Hier ist Version 4
Code:
/* File: Esp1_TempS1_v4.ino
* ESP32 & WLAN & BME280 & MySql & "Fips"(Arduino-Forum) Post #8
* https://www.arduinoforum.de/arduino-Thread-ESP32-WLAN-BME280-MySql
* Version: 2020-02-17
* made with Google & ESP32-Community & "blood, sweat and tears"
* "honor to whom honor is due"(Google translate) (German: "Ehre wem Ehre gebührt")
* compilation: Bt
*/

// network
#include <WiFi.h>
#include "time.h"
// sensor
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
// sql
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

struct tm tm;
WiFiClient client;

const char* ssid     = "mySSID";              // WiFi connect
const char* password = "MyPassword"; // WiFi connect

MySQL_Connection conn((Client *)&client);
char sqlUser[]       = "MySqlUser";               // MySql connect
char sqlPassword[]   = "MySqlPassword";            // MySql connect
IPAddress sql_server_ip(192,168,101,2);    // MySql Server

Adafruit_BME280 bme;  // I2C
float tempS1 = 0.0;

String stamp = "";

const char* const PROGMEM ntpServer[] = {"fritz.box", "de.pool.ntp.org", "at.pool.ntp.org", "ch.pool.ntp.org", "ptbtime1.ptb.de", "europe.pool.ntp.org"};

bool getTime()
{ // Zeitzone einstellen https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv
  configTzTime("CET-1CEST,M3.5.0/02,M10.5.0/03", ntpServer[1]);    // deinen NTP Server einstellen (von 0 - 5 aus obiger Liste)
  if (!getLocalTime(&tm)) return false;
  return true;
}

char* localTime() {
  static char buf[22];                             // je nach Format von "strftime" eventuell die Größe anpassen
  static time_t lastsec {0};
  getLocalTime(&tm);
  if (tm.tm_sec != lastsec) {
    lastsec = tm.tm_sec;
    strftime (buf, sizeof(buf), "\'%F %T\'", &tm); // 'yyyy-mm-dd HH:MM:SS' // http://www.cplusplus.com/reference/ctime/strftime/
    time_t now;
    if (!(time(&now) % 86400)) getTime();          // die Zeit vom NTP Server holen (1x/Tag %86400; 1X/Stunde % 3600 ...)
  }
  return buf;
}

unsigned long wifiCheckLastTimestamp = 0;


void setup() {
  Serial.begin(115200);
  Serial.setDebugOutput(true);

  Serial.println("WiFi Initialising connection");
  Serial.println("");
  Serial.print("Connecting to ");  Serial.println(ssid);

  WiFi.begin(ssid, password);
  Serial.println("Connecting");
  
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(100);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi Connected");
  Serial.print("Assigned IP: ");  Serial.print(WiFi.localIP());
  Serial.println("");

  Serial.println("Connecting to database");
  
  if (conn.connect(sql_server_ip, 3306, sqlUser, sqlPassword))
  {
    Serial.print("conn to SQL-Server: ");  Serial.println(sql_server_ip);
    delay(1000);
  }
  else
  {
    Serial.println("SQL-Connection failed.");
  }
  conn.close();  

  bool status = bme.begin(0x76); // BME280 connected?
  if (!status)
  {
    Serial.println("Could not find a valid BME280 sensor, check wiring or change I2C address!");
    while (1);
  }

  //getTime();  //nach dem Verbindungsaufbau aufrufen
  if (!getTime()) Serial.print("Zeit konnte nicht geholt werden\n");
}

void loop() {
  stamp = String(localTime());   //Zeitstempel an deine String Variable übergeben
  //Serial.print("stamp: ");
  //Serial.println(stamp);

  uint8_t tryCount=0;
  
  if (tm.tm_sec==49)                            // 1x/Minute: MySql-Update Messwert
  {
    tempS1 = bme.readTemperature();
    //Serial.print("tempS1: ");
    //Serial.println(String(tempS1));

    uint8_t tryCount=0;
    
    while (WiFi.status() != WL_CONNECTED && tryCount <= 4)
    {
      delay(500);
      Serial.print(F("."));
      tryCount++;
      wifiCheckLastTimestamp = millis();
      if (tryCount >= 4 && WiFi.status() == WL_CONNECT_FAILED)
      {
          WiFi.begin(ssid, password);        // ESP32-workaround
      }
    }

    Serial.print("wifi_retry49: ");  Serial.println(String(tryCount));

    if(WiFi.status()== WL_CONNECTED)
    {
      if (conn.connect(sql_server_ip, 3306, sqlUser, sqlPassword))
      {
        Serial.println("Running SQL-UPDATE:");
        MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
        char sqlQueryChar[256];
        // "String-Bastelei"; bei Unsicherheit direkt auf SQL-Server-Console testen
        // Syntax: "UPDATE DataBase.Table SET Feldname=neuer Wert, ... , WHERE ID=Satznummer;" (mir reicht 1 Datensatz; Auswertungen macht rrdtool direkt auf Server)
        // ERGO: MySql = 'mit Kanonen auf Spatzen' - aber läuft problemlos & stabil
        String sqlQueryStr = "UPDATE solar.Steuerung SET tempS1=" + String(tempS1) + ", stampEsp1=" + stamp + " WHERE ID=1;";
        Serial.println(sqlQueryStr);
        sqlQueryStr.toCharArray (sqlQueryChar, sqlQueryStr.length());
        cur_mem->execute(sqlQueryChar);
        Serial.println("Query executed? Please check!");
        Serial.print("SQL-Server: ");  Serial.print(sql_server_ip); Serial.print(" ");
        conn.close();
      }
    }
  }

  if ((tm.tm_sec==59) and (tm.tm_min==59))      // 1x/Hour getTime & save stamp in MySql(ntpUpdate=stamp)
  {
    while (WiFi.status() != WL_CONNECTED && tryCount <= 4)
    {
      delay(500);
      Serial.print(F("."));
      tryCount++;
      wifiCheckLastTimestamp = millis();
      if (tryCount >= 4 && WiFi.status() == WL_CONNECT_FAILED)
      {
          WiFi.begin(ssid, password);        // ESP32-workaround
      }
    }

    Serial.print("wifi_retry59-59: ");  Serial.println(String(tryCount));

    if(WiFi.status()== WL_CONNECTED)
    {
      if (conn.connect(sql_server_ip, 3306, sqlUser, sqlPassword))
      {
        Serial.println("MySql NTP-UPDATE:");
        MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
        char sqlQueryChar[256];
        String sqlQueryStr = "UPDATE solar.TempS1 SET ntpUpdate=" + stamp + " WHERE ID=1;";
        Serial.println(sqlQueryStr);
        sqlQueryStr.toCharArray (sqlQueryChar, sqlQueryStr.length());
        cur_mem->execute(sqlQueryChar);
        Serial.print("SQL-Server: ");  Serial.println(sql_server_ip); Serial.print(" ");
        conn.close();
      }
    }
  }
}

Und was neues: hat beim Start eine Msg gebracht:
Code:
[W][esp32-hal-psram.c:30] psramInit(): PSRAM init failed!
13:55:32.050 -> ⸮WiFi Initialising connection
13:55:32.050 ->
13:55:32.050 -> Connecting to FB1
13:55:32.116 -> [D][WiFiGeneric.cpp:332] _eventCallback(): Event: 0 - WIFI_READY
13:55:32.149 -> [D][WiFiGeneric.cpp:332] _eventCallback(): Event: 2 - STA_START
13:55:32.149 -> Connecting
13:55:32.249 -> .[D][WiFiGeneric.cpp:332] _eventCallback(): Event: 4 - STA_CONNECTED
13:55:32.315 -> [D][WiFiGeneric.cpp:332] _eventCallback(): Event: 7 - STA_GOT_IP
13:55:32.315 -> [D][WiFiGeneric.cpp:376] _eventCallback(): STA IP: 192.168.101.65, MASK: 255.255.255.0, GW: 192.168.101.1
13:55:32.348 -> .
13:55:32.348 -> WiFi Connected
13:55:32.348 -> Assigned IP: 192.168.101.65
13:55:32.348 -> Connecting to database
13:55:34.505 -> Connected to server version 5.7.29-0ubuntu0.18.04.1
13:55:34.538 -> conn to SQL-Server: 192.168.101.2
13:55:35.534 -> Disconnected.
13:55:49.040 -> wifi_retry49: 0
13:55:51.297 -> Connected to server version 5.7.29-0ubuntu0.18.04.1
13:55:51.297 -> Running SQL-UPDATE:
13:55:51.297 -> UPDATE solar.Steuerung SET tempS1=23.94, stampEsp1='2020-02-21 13:55:49' WHERE ID=1;
13:55:51.430 -> Query executed? Please check!
13:55:51.430 -> SQL-Server: 192.168.101.2 Disconnected.
macht aber seine MySql-Einträge (er tickert)

Dein Code arbeitet:
wenn kein WLAN
...
WiFi.begin(ssid, password); // ESP32-workaround

LG
Dietmar

ESP32 Anfänger mit Migrations-Hintergrund (komme von RasPi & Python) Cool
Gruß aus Franken
Dietmar
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2020, 14:04
Beitrag #72
RE: ESP32 & WLAN & BME280 & MySql
Vielleicht ist es auch so, dass die mySQL-Konnektivität nicht hinreichend überprüft wird. Im o.g. MQTT-Beispiel gibt es reconnect() dafür. Also wenn deine Lib das nicht unter der Haube schon macht, dann musst du ggf. mal drüber nachdenken, wie man das machen könnte. Und im Falle von fehlender Konnektivität baut man halt die Verbindung neu auf.
Oder man sagt halt: Der ESP pennt, wacht auf, schickt seinen Kram und legt sich dann wieder schlafen. Dann läufst du einerseits vermutlich in das Problem nicht und sparst andererseits auch Strom. Weil schlafen bedeutet beim ESP, dass er immer wieder im Anschluss komplett neu gestartet wird.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fehler bei Board AI Thinker ESP32-CAM Manny 4 350 30.08.2020 16:37
Letzter Beitrag: Manny
  ESP32 Ethernet shrimps 33 22.139 27.08.2020 15:05
Letzter Beitrag: biologist
  ESP32 Dev Kit 4711engel 12 903 26.08.2020 08:41
Letzter Beitrag: 4711engel
  Esp32 FIFO-Problem miq19 7 555 22.08.2020 14:33
Letzter Beitrag: miq19
  ESP32 CAM Programmierung nicht möglich Manny 3 613 31.07.2020 16:04
Letzter Beitrag: Manny
  ESP32 T-Watch 2020 Lilygo AnFi 8 1.530 31.07.2020 15:35
Letzter Beitrag: amithlon
  Warum stürtzt der ESP32 manchmal ab...ein Gedankenaustausch Pertho 6 901 28.07.2020 17:38
Letzter Beitrag: hotsystems
  ESP32 Watchdog Funktion KlaRa 16 2.059 22.07.2020 09:38
Letzter Beitrag: KlaRa
  ESP32 überträgt nicht alle Datein aus dem SPIFFS Pertho 11 1.388 21.07.2020 21:46
Letzter Beitrag: Bitklopfer
  ESP32 NodeMCU: Status der SD-Karte georg1010 0 562 15.07.2020 12:18
Letzter Beitrag: georg1010

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste