Code:
	/*
   (C) 2020 R.Schick
   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
   GNU General Public License for more details.
   You should have received a copy of the GNU General Public License
   along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// beelogger.de - Arduino Datenlogger für Imker
// Erläuterungen dieses Programmcodes unter http://beelogger.de
// Version 20.01.2020
// Name des WLAN-Zugangspunkts
const char  Access_Point[] PROGMEM = "WLan_Name_SSID";
// Passwort des Zugangspunktes
const char AP_Passwort[] PROGMEM =   "WLan_Passwort";
// Domainname zum Webserver mit beelogger-Skript, Bsp:"meineDomain.de";
const char serverName[] PROGMEM = "community.beelogger.de";
// GET mit Verzeichnis  Webserver-Skript und das PHP Skript für den jeweiligen beelogger
// Bsp: "GET /mein_ordner/beelogger6/beelogger_log.php?"
// Achtung: Stringlänge muss zur Variable "parameter" in send_data_via_wlan() passen
// Anzahl Byte:                       10        20        30        40        50
const char pfad[] PROGMEM = "GET /meinordner/beeloggerx/beelogger_log.php?";
// Passwort vom Webserver-Skript
const char Passwort[] PROGMEM =  "Log"; // Log = Default
//----------------------------------------------------------------
// Konfiguration beelogger
//----------------------------------------------------------------
#define HX711_SCK     A0    // HX711 S-Clock
#define Modul_CS      10    // Ethernet abschalten
#define Power_Pin      4    // Power On
//----------------------------------------------------------------
#define Seriell_Baudrate 9600
//----------------------------------------------------------------
// Konfiguration ESP-8266-01 WLAN Modul
//----------------------------------------------------------------
byte ESP_RX = 8;
byte ESP_TX = 9;
#define ESP_Baudrate 9600
#define ESP_RESET A2
#include <ESP_beelogger.h>
C_WLAN_ESP01 my_esp;
const char Str_Http[]  PROGMEM = " HTTP/1.1\r\n";
const char Str_Con[]   PROGMEM = "Connection: close\r\n\r\n";
//----------------------------------------------------------------
// Test-Messdaten (regulär kommen die Messdaten von den Sensoren)
float TempIn = 25.00;
float TempOut = 35.00;
float FeuchteIn = 40.00;
float FeuchteOut = 60.00;
float Licht = 50000.00;
long Gewicht = 25000;
float Batteriespannung = 3.70;
float Solarspannung = 1.70;
bool OK = true;
void setup() {
  char parameter[80], data[64];
  int Service = 0;
  digitalWrite (HX711_SCK, HIGH); //HX711 aus
  pinMode(HX711_SCK, OUTPUT);
  digitalWrite(Modul_CS, HIGH);   // Modul Ethernet usw. aus
  pinMode(Modul_CS, OUTPUT);
  digitalWrite(Power_Pin, HIGH);  // Power an
  pinMode(Power_Pin, OUTPUT);
  digitalWrite(ESP_RESET, HIGH);  // ESP8266 an
  pinMode(ESP_RESET, OUTPUT);
  Serial.begin(Seriell_Baudrate);
  Serial.println(F("ESP 8266-01 Test Sketch 08.04.2020"));
  Serial.flush();
  delay(1000);
  Serial.println(F("Abfrage Modul ... "));
  if (my_esp.init(ESP_Baudrate)) {
    Serial.println("i.O.");
    my_esp.mode();      // Station Mode permanent
    Serial.println();
    Serial.println(F("ESP Firmware:"));
    my_esp.firmware();  // firmware abfragen
    Serial.println(my_esp.buffer);
    Serial.println();
    Serial.println(F("WLAN Information:"));
    my_esp.signal(0);
    strcpy_P(parameter, Access_Point);
    my_esp.signal(parameter);           // hole Signalstärke
    strcpy(parameter, my_esp.buffer);
    char cc = ',';
    char *pos = strchr(parameter, cc); // Suche ','
    if (pos) {
      Service = atoi(pos + 1);
    }
    if ((Service > -10)) {
      Serial.print(F("Signalstärke unklar: "));
    }
    if ((Service < -90)) {
      Serial.print(F("Signal schwach: "));
    }
    if (Service) {
      Serial.print(F("Signalstaerke: "));
    }
    Serial.print(Service);
    Serial.println(F(" dB"));
    Serial.println();
    Serial.flush();
    delay(500);
    my_esp.send("AT+CWMODE_DEF=1");
    delay(1000);
  }
  else {
    OK = false;
    Serial.println(F("Modul konnte nicht abgefragt werden"));
    Serial.println(my_esp.buffer);
    Serial.println();
    ESP_Abschaltung();
  }
  if (OK) {
    strcpy_P(parameter, Access_Point);
    Serial.print(F("Verbinde zum WLAN: "));
    Serial.print(parameter);
    Serial.println(" ... ");
    strcpy_P(data, AP_Passwort);
    if (my_esp.join(parameter, data)) {
      Serial.println(F("WLAN Verbindung OK"));
      Serial.println();
      Serial.println();
    }
    else {
      OK = false;
      Serial.println(F("Verbindungsfehler!"));
      Serial.println();
      ESP_Abschaltung();
    }
  }
  if (OK) {
    Serial.println(F("Verbinde mit Server ... "));
    strcpy_P(parameter, serverName);
    Serial.print(parameter);
    if (my_esp.Connect(parameter)) {
      Serial.println(F("  ... connect: OK"));
      Serial.println();
    }
    else {
      OK = false;
      Serial.println(F(" connect fehlgeschlagen"));
      Serial.println();
      Serial.println(my_esp.buffer);
      Serial.println();
      ESP_Abschaltung();
    }
  }
#if 0
  if (OK) {
    unsigned long t;
    char c = 'x';
    Serial.println(F("Test beginnen j/n ?"));
    Serial.println(F("Eingabe von 'j' und bestätigen mit 'Enter' startet den"));
    Serial.println(F("Transfer der Testdaten"));
    Serial.println();
    t = millis();
    do {
      if (Serial.available() > 0) {
        c = Serial.read();
        Serial.print(c);
        Serial.println();
        break;
      }
    } while ((millis() - t) < 10000);  // 10 sec Zeit
    if (c == 'j') {
      OK = true;
    }
    else {
      ESP_Abschaltung();
      OK = false;
    }
  }
#endif
}
void loop() {
  char KonvertChar[15];
  char data[80];
  char parameter[64];
  if (OK) {
    long Check = round(TempIn + TempOut + FeuchteIn + FeuchteOut + Licht + Gewicht + Solarspannung + Batteriespannung);
    if (my_esp.prep_send(300)) { // fiktive Länge, senden wird mit 0x00 gestartet
      Serial.println(F("Uebertrage Daten zum Webserver ..."));
      Serial.flush();
      //"GET " + url + php + "?" + Daten + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
      // Wichtig: der String darf von der url bis Ende der Daten keine Leerzeichen enthalten
      strcpy_P(parameter, pfad);
      Serial.println(parameter);
      Serial.flush();
      my_esp.send(parameter);
      // erstelle Daten
      my_esp.send("Passwort=");
      strcpy_P(parameter, Passwort);
      my_esp.send(parameter);
      my_esp.send("&TempIn=");
      dtostrf(TempIn, 4, 2, KonvertChar);
      my_esp.send(KonvertChar);
      my_esp.send("&TempOut=");
      dtostrf(TempOut, 4, 2, KonvertChar);
      my_esp.send(KonvertChar);
      my_esp.send("&FeuchteIn=");
      dtostrf(FeuchteIn, 4, 2, KonvertChar);
      my_esp.send(KonvertChar);
      my_esp.send("&FeuchteOut=");
      dtostrf(FeuchteOut, 4, 2, KonvertChar);
      my_esp.send(KonvertChar);
      my_esp.send("&Licht=");
      dtostrf(Licht, 4, 2, KonvertChar);
      my_esp.send(KonvertChar);
      my_esp.send("&Gewicht=");
      dtostrf(Gewicht, 1, 0, KonvertChar);
      my_esp.send(KonvertChar);
      my_esp.send("&VBatt=");
      dtostrf(Batteriespannung, 4, 2, KonvertChar);
      my_esp.send(KonvertChar);
      my_esp.send("&VSolar=");
      dtostrf(Solarspannung, 4, 2, KonvertChar);
      my_esp.send(KonvertChar);
      my_esp.send("&Check=");
      dtostrf(Check, 6, 2, KonvertChar);
      my_esp.send(KonvertChar);
      // ende Daten
      //
      strcpy_P(parameter, Str_Http);
      my_esp.send( parameter);
      my_esp.send("Host: ");
      strcpy_P(parameter, serverName);
      my_esp.send( parameter);
      my_esp.send("\r\n");
      strcpy_P(parameter, Str_Con);
      my_esp.send( parameter);
      my_esp.send(0x00); // Startkommando senden
      OK = false;
      if (my_esp.sendCommand(0, 500, "SEND OK")) {
        //Serial.println(F("SEND OK"));
      }
      if (my_esp.sendCommand(0, 2000, "200 OK")) {
        //Serial.println(F("HTTP OK"));
        if (my_esp.sendCommand(0, 5000, "ok *")) {
          Serial.println(F("Quittung OK"));
          OK = true;
          // Empfangsbuffer auswerten
          // Format Quittung aus beelogger-log.php
          // echo "5ok*" = 5 Minuten
          // echo "25ok*" = 25 Minuten
          // echo "150ok*" = 150 Minuten -> 2,5 Stunden
          int n = atoi(my_esp.buffer); // Konvertiere str in int
          Serial.println();
          if (n > 0) {
            Serial.print("Intervallvorgabe vom Server:  ");
            Serial.print(n);
            Serial.println(" Minuten ");
          }
          else {
            Serial.print("Kein Intervall vom Server vorgegeben. ");
            Serial.println(my_esp.buffer);
            Serial.println();
            Serial.println(n);
          }
        }
        else {
          Serial.println(F("Quittung Fehler!"));
          Serial.println(my_esp.buffer);
          OK = false;
        }
      }
      if (my_esp.quit()) {
        Serial.println(F("Restart OK"));
      }
      else {
        OK = false;
      }
      Serial.flush();
      delay(2000);
      if (my_esp.init(ESP_Baudrate)) {  // baud rate
        Serial.println("...");
        strcpy_P(parameter, Access_Point);
        strcpy_P(data, AP_Passwort);
        if (my_esp.join(parameter, data)) {
          Serial.println("..");
          strcpy_P(parameter, serverName);
          if (my_esp.Connect(parameter))
            Serial.println(".");
          OK = true;
        }
      }
    } // prep_send
    if (OK) {
      // Test-Messdaten um 1 erhöhen
      TempIn++;
      TempOut++;
      TempOut++;
      FeuchteIn++;
      FeuchteOut++;
      FeuchteOut++;
      Licht++;
      Gewicht++;
      Batteriespannung++;
      Solarspannung++;
      if ((int)TempIn % 3) {
        TempOut = TempOut - 3;
        FeuchteIn = FeuchteIn - 2;
      }
      // Abschaltung nach 5 Datenübertragungen
      Serial.println(TempIn);
      if (TempIn >= 30.0) {
        Serial.println(F("Test erfolgreich beendet"));
        OK = false;
        ESP_Abschaltung();
      }
    }
    else {
      Serial.println(F("Fehler im Test!"));
      ESP_Abschaltung();
    }
  } // if OK
}
void ESP_Abschaltung() {
  Serial.println(F("Verbindungen werden getrennt"));
  Serial.println();
  my_esp.disConnect();
  my_esp.quit();
  delay(100);
  my_esp.end();
  Serial.end();
}
 
						
Lesezeichen