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 beim Kompilieren für das Board ESP32 Dev Module. FoxFactoy 17 712 06.03.2021 21:56
Letzter Beitrag: bm-magic
Question esp32 Cam Blynk Busterflex 2 325 04.03.2021 19:23
Letzter Beitrag: Tommy56
  ESP32 Lora Wetterdaten 4711engel 27 1.529 01.03.2021 20:14
Letzter Beitrag: Bitklopfer
  ESP32 / DeepSleep / Akkulaufzeit ? Steinspiel 23 972 27.02.2021 20:20
Letzter Beitrag: Steinspiel
  Abgespeckter Sketch für ESP8266 -WLAN Anbindung / Anfänger mizieg 7 412 26.02.2021 17:45
Letzter Beitrag: N1d45
  ESP32 über OTA luemar 67 3.825 23.02.2021 22:55
Letzter Beitrag: hotsystems
  ESP32 und HC05 gk_1 5 816 22.02.2021 10:53
Letzter Beitrag: gk_1
  ESP32: Sensor via GPIO deaktivieren DivingJoe 21 1.284 18.02.2021 22:15
Letzter Beitrag: hotsystems
  D1 Mini - WLAN bei Frost nicht möglich? KlaRa 45 2.450 10.02.2021 11:24
Letzter Beitrag: hotsystems
  Erfahrungen mit ESP32 und WLAN/MQTT oder was ich beobachtet habe... Arduino4Fun 22 2.547 08.02.2021 15:34
Letzter Beitrag: ardu_arne

Gehe zu:


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