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
22.02.2020, 20:09
Beitrag #97
RE: ESP32 & WLAN & BME280 & MySql
Boa - äääh.
i.M. ist Denkmurmel "overload".
8266 läuft zu 95%
stamp muss ich noch formatieren
deep sleep meckert.

Das schau ich mir morgen noch mal in Ruhe an.

Jetzt schon mal "Herzlichen Dank" & "a guats nächtle"


//esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
//system_deep_sleep_instant(50 * 1000000); // sec * 1000000

//Serial.println("ESP going sleep");
//Serial.flush();
delay(50000); // <--- Nothammer
//esp_deep_sleep_start();

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
22.02.2020, 21:02
Beitrag #98
RE: ESP32 & WLAN & BME280 & MySql
(22.02.2020 18:30)amithlon schrieb:  
Code:
// Start Time service.
  configTime(0, 0, "pool.ntp.org", "time.nist.gov");
  setenv("TZ", "CET-1CEST,M3.5.0,M10.5.0/3", 1);

Ab Core Version 2.6.0 braucht es den Umweg nicht mehr.

configTime("CET-1CEST,M3.5.0/02,M10.5.0/03", NTP_SERVER[0], NTP_SERVER[1], NTP_SERVER[2]);

Die eine Zeile reicht aus.

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2020, 21:09
Beitrag #99
RE: ESP32 & WLAN & BME280 & MySql
(22.02.2020 20:09)db91595 schrieb:  deep sleep meckert.

//esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
//system_deep_sleep_instant(50 * 1000000); // sec * 1000000

//Serial.println("ESP going sleep");
//Serial.flush();
delay(50000); // <--- Nothammer
//esp_deep_sleep_start();

Nicht alles kann man von dem einem zum anderem Esp 1 zu 1 übernehmen.

Doku zu deepSleep Esp8266.

ESP.deepSleep(300e6); // 5 Minuten Tiefschlaf

Und!

Eine Verbindung von D0 zu RST ist nach dem Sketch upload für das aufwachen aus dem Deep Sleep erforderlich.

Beispiel Sketch

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2020, 10:58 (Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2020 11:00 von db91595.)
Beitrag #100
RE: ESP32 & WLAN & BME280 & MySql
Status nach 26h Test : der ESP32 tickert noch.
Die SerialMonitor-Msg sind immer ein Block
- DEEPSLEEP RESET
... (macht seinen Job)
- ESP going sleep
- STA_DISCONNECTED
- ASSOC_LEAVE
Das Ganze 1x/min.

(Es läuft Esp1_TempS1_v5.ino aus Post#85)

Ich lasse den Test noch bis morgen früh laufen.
Wenn er da noch durch läuft - betrachte ich ich es als "funktioniert"!

Meine Meinung (bis hier her): ESP32 & WiFi "klemmt noch a weng".
Ob der Kern des Problems in WiFi.h (& Co) oder in meiner "Programmierkunst" oder in der FritzBox liegt: kann ich nicht verifizieren. Dazu reichen meine Kenntnisse bei weitem nicht. (In der FritzBox seit 12.02. keine Ereignisse)
Dann hoffe ich den ESP8266 heute noch zum Laufen zu bekommen & ab in den Testlauf (nach dem der ESP32 seinen Test abgeschlossen hat). Da kommt dann auch noch eine Info.

Generell: ich habe hier sehr freundliche & hilfsbereite Leute kennen gelernt.
Dann habe ich mich mit der Arduino-IDE angefreundet und kann mit den ESP etwas anfangen (Basic's).
Kurz: der ganze Aufwand hat sich gelohnt.

An alle Helfer: meinen herzlichen Dank Heart

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
23.02.2020, 13:06
Beitrag #101
RE: ESP32 & WLAN & BME280 & MySql
Das Ganze convert von ESP32 zu ESP8266

ESP8266 & WLAN & BME280 & MySql
Code:
/* File: 8266_TempS1_v1.ino
* ESP8266 & WLAN & BME280 & MySql & friendly Helpers on
* https://www.arduinoforum.de/arduino-Thread-ESP32-WLAN-BME280-MySql
* Version: 2020-02-22
* "honor to whom honor is due"(Google translate) (German: "Ehre wem Ehre gebührt")
* compilation: Bt
*/

// network
#include <ESP8266WiFi.h>
#include "time.h"
// ganz böse Falle: convert von ESP32 zu ESP8266: da gibt es mehr als 1 Unterschied :-)
//#include "Arduino_h"

// sensor
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
// sql
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>


#define uS_TO_S_FACTOR 1000000  /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP  50       /* Time ESP32 will go to sleep (in seconds) */

#define SLEEP_TIME 50 * 1000000

struct tm tm;
const uint32_t SYNC_INTERVAL = 24;             // NTP Sync Interval in Stunden
const char* const PROGMEM NTP_SERVER[] = {"fritz.box", "de.pool.ntp.org", "at.pool.ntp.org", "ch.pool.ntp.org", "ptbtime1.ptb.de", "europe.pool.ntp.org"};
extern "C" uint8_t sntp_getreachability(uint8_t);

bool getNtpServer(bool reply = false) {
  uint32_t timeout {millis()};
  configTime("CET-1CEST,M3.5.0/02,M10.5.0/03", NTP_SERVER[0], NTP_SERVER[1], NTP_SERVER[5]);   // Zeitzone einstellen https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv
  do {
    delay(25);
    sntp_getreachability(0) ? reply = true : sntp_getreachability(1) ? reply = true : sntp_getreachability(2) ? reply = true : false;
  } while (millis() - timeout <= 1e4 && !reply);
  return reply;
}

WiFiClient client;

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

void blink()
{ // Test ob LED_BUITIN funktioniert
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
}

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 = "";
unsigned long wifiCheckLastTimestamp = 0;

void setup() {
  Serial.begin(115200);
  // Wait for serial to initialize.
  while (!Serial) { }

  Serial.printf("\n\nSketchname: %s\nBuild: %s\t\tIDE: %d.%d.%d\n%s\n\n",
                (__FILE__), (__TIMESTAMP__), ARDUINO / 10000, ARDUINO % 10000 / 100, ARDUINO % 100 / 10 ? ARDUINO % 100 : ARDUINO % 10, ESP.getFullVersion().c_str());

  Serial.setDebugOutput(true);

  system_deep_sleep_set_option(2);

  Serial.println("WiFi Init Connection");
  Serial.println("");
  Serial.print("Connecting to ");  Serial.println(ssid);

  WiFi.begin(ssid, password);
  Serial.println("WiFi 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 MySql");
  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("MySql connect 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);
  }

  bool timeSync = getNtpServer();
  Serial.printf("NTP Synchronisation %s!\n", timeSync ? "erfolgreich" : "fehlgeschlagen");
  
  pinMode(LED_BUILTIN, OUTPUT);
  blink();
}

void loop()
{
  char buff[20];                                                  // je nach Format von "strftime" eventuell anpassen
  static time_t lastsec {0};
  time_t now = time(&now);
  localtime_r(&now, &tm);

  if (tm.tm_sec != lastsec)
  {
    lastsec = tm.tm_sec;
    strftime (buff, sizeof(buff), "%d.%m.%Y %T", &tm);            // http://www.cplusplus.com/reference/ctime/strftime/
    if (!(time(&now) % (SYNC_INTERVAL * 3600)))
    {
      getNtpServer(true);
    }
  }

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

    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 tempEsp2=" + String(tempS1) + ", stampEsp2=" + 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();
      }
    }
    WiFi.disconnect();
    Serial.println("ESP going sleep");
    Serial.flush();
    //delay(50000);
    //ESP.deepSleep(50e6);                                  // 50 Sekunden Tiefschlaf
    system_deep_sleep_instant(50 * 1000000); // sec * 1000000
    // funktioniert nur, wenn er das erste mal in deep sleep geht und
    // dann eine Brücke von D0 nach RST gemacht wird
    // kann man das nicht programmieren ?
    // einen anderen Pin als Ausgang schalten
    // Merker setzen "int Merker = 0"
    // erster Lauf "if Merker == 0 {Merker = 1; ESP.deepSleep(50e6);}
    // if Merker == 1 { PIN Ausgang = LOW; ESP.deepSleep(50e6);}
    // wenn ich den Sketch hoch lade muss D0 frei sein(Upload startet sofort ohne Taster FLASH zu drücken
    // ohne Brücke geht er 1x in deep sleep und wacht nicht mehr auf
    // Ausgänge habe ich noch viele frei
    // ? pinMode(D4, OUTPUT); dann die Schaltung mit Transistor (Bild) von D4 ansteuern lassen ?
    //
    // nicht wundern, hier ist noch "Test-Kram" drin (wird noch ausgeputzt)
    // die Schreibweise mit den {} ist meine, damit kann ich den Code leichter lesen
    // ich sehe die einzelnen Blöcke leichter
  }
}

funktioniert (tickert) bis auf die Brücke D0->RST.
Ich kann mir nicht vorstellen das das Standard ist: Upload, ersten deep sleep abwarten, Bücke setzen.

Das Bild habe ich im WWW gefunden.
   

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
23.02.2020, 13:28
Beitrag #102
RE: ESP32 & WLAN & BME280 & MySql
Hallo,

die Schaltung soll ein Aufwecken durch eine externe Hardware ermöglichen, für Dich hier völlig uninteressant.
10k Widerstand zwischen D0 (GPIO16) und Reset und fertig.
Wenn Du D0 (GPIO16) selbst nicht als Ausgang benutzt, reicht auch eine direkte Brücke, D0 als Ausgang im Sketch kann aber eben Probleme machen.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2020, 13:59
Beitrag #103
RE: ESP32 & WLAN & BME280 & MySql
@db91595: Schau mal in Deine PN, so aus Franken Wink

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2020, 13:59
Beitrag #104
RE: ESP32 & WLAN & BME280 & MySql
Hi amithlon,

stimmt.
Also ohne Brücke Upload, dann Brücke.
Damit kann ich leben.
DANKE!

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP32 Schieberegler Woolli 13 253 20.10.2020 13:37
Letzter Beitrag: Tommy56
  Max. Eingangsspannung ESP32 Devkit V1 Gerdchen03 4 134 20.10.2020 00:45
Letzter Beitrag: Bitklopfer
  ESP32 BLE - Wie kann ich die UUID aus INI-WiFiManger übernehmen ? Stargazer 0 103 18.10.2020 16:26
Letzter Beitrag: Stargazer
  AZ-Touch ESP32 Grafiktest ckuehnel 0 161 13.10.2020 17:34
Letzter Beitrag: ckuehnel
  ESP32: Filesystem uploader tool findet mklittlefs.exe nicht ultralex 6 103 12.10.2020 22:07
Letzter Beitrag: hotsystems
  ESP32+SIM808 Gpsdaten auf Display und SMS reinhard-adam 0 177 06.10.2020 16:49
Letzter Beitrag: reinhard-adam
  ESP32+SIM808 GPS Daten auslesen und auf LCD reinhard-adam 2 343 21.09.2020 18:25
Letzter Beitrag: georg01
  Fehler bei Board AI Thinker ESP32-CAM Manny 4 730 30.08.2020 16:37
Letzter Beitrag: Manny
  ESP32 Ethernet shrimps 33 24.243 27.08.2020 15:05
Letzter Beitrag: biologist
  ESP32 Dev Kit 4711engel 12 1.566 26.08.2020 08:41
Letzter Beitrag: 4711engel

Gehe zu:


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