[Erledigt]Daten in MySQL sowie CCU2 schreiben

Guten Abend.
Da mir beim letzten mal so wundervoll geholfen wurde richte ich mich erneut an euch.

Ich habe jetzt so einige Dinge versucht. Leider komme ich nicht ans Ziel.

Ich benutze einen Wemos D1 mini pro mit DHT22 Shield.

Die Daten werden erfolgreich vom Sensor ausgelesen. Jetzt möchte ich die Daten zum einen in einer MySQL Datenbank speichern und zum anderen in einer CCU2 (HomeMatic Hausautomation)

Das speichern in der Datenbank hat vorher immer funktioniert. Nachdem ich den Teil für den Eintrag in der CCU eingepflegt habe, speichert er die besagten Dateien nicht mehr in der Datenbank.

Der serielle Monitor gibt mir allerdings den richtig generierten Link aus. Daher verstehe ich nicht ganz wieso er die Daten nicht in der DB ablegt.

Hier mein Code:

#include <ESP8266WiFi.h>
#include "DHT.h"

const char* ssid = "*****"; //SSID aus dem Router
const char* password = "****"; //Passwort für den Zugang zum WLAN
String Raum = "Wohnzimmer";
String CCUDevice = "CUX9002001";

WiFiServer server(80); //Port auf welchem der Server laufen soll.

#define DHT11PIN D3
#define DHT11TYPE DHT22
DHT dht(DHT11PIN, DHT11TYPE);

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

  Serial.print("Aufbau der Verbindung zu: "); //Ausgabe der SSID auf der Seriellen Schnittstelle.
  Serial.println(ssid);

  WiFi.begin(ssid, password); //Initialisieren der Wifi Verbindung.

  while (WiFi.status() != WL_CONNECTED) { //Warten bis die Verbindung aufgebaut wurde.
    delay(500);
    //Einen Punkt auf der Seriellen Schnittstelle ausgeben so das der Benutzer erkennt dass, das Sketch noch läuft.
    Serial.print(".");
  }

  if (WiFi.status() == WL_CONNECTED) {
    Serial.println("");
    Serial.println("Mit WiFi verbunden");
    Serial.println("IP Adresse: ");
    Serial.println(WiFi.localIP());
  }
  else {
    Serial.println("");
    Serial.println("Nicht mit WiFi verbunden");
    ESP.deepSleep(100000);
    Serial.println("Ich gehe schlafen");
  }

  server.begin(); // Starten des Servers.
  Serial.println("Server gestartet"); //Ausgabe auf der Seriellen Schnittstelle das der Server gestartet wurde.

  dht.begin();

  float tempValue = dht.readTemperature(); //Temperatur vom Sensor DHT22 lesen
  float LFValue = dht.readHumidity(); //relative Luftfeuchtigkeit vom Sensor DHT22 lesen

  if (isnan(tempValue) || isnan(LFValue)) {
    Serial.println("Der Sensor gibt keine Daten zurück!");
    return;
  }
  else
  {
    Serial.print("Luftfeuchte: ");
    Serial.print(LFValue);
    Serial.print(" %\t");
    Serial.print("Temperatur: ");
    Serial.print(tempValue);
    Serial.println(" C");

    storeData(tempValue,LFValue,Raum);
    setStateCCU("SET_TEMPERATURE", String(tempValue));
    setStateCCU("SET_HUMIDITY", String(LFValue));
    delay(10000);
  }
  Serial.print("Gehe schlafen für 15 Minuten");
  ESP.deepSleep(60 * 1 * 1000000);
  delay(100);
}

void loop()
{
}

void storeData(float tempValue, float LFValue, String Raum) {

  const char* host = "http://www.ha.su-s.de";
  const int httpPort = 80;
  // Use WiFiClient class to create TCP connections
  WiFiClient client;

  if (client.connect(host, httpPort)) {

    String url = "/temperatur.php?";
    url = url + "temp=" + tempValue;
    url = url + "&press=" + LFValue;
    url = url + "&raum=" + Raum;


    Serial.print("Requesting URL: ");
    Serial.println(url);

    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n\r\n");

  }
}

void setStateCCU(String type, String value) {

  const int CCUPort = 8181;
  const char* CCUIP = "******";
  WiFiClient client;

  if (client.connect(CCUIP, CCUPort)) {
    String url = "http://" + String(CCUIP) + ":8181/cuxd.exe?ret=dom.GetObject(%22CUxD." + CCUDevice + ":1." + type + "%22).State(" + value + ")";

    Serial.print("Requesting URL: ");
    Serial.println(url);

    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                 "Host: " + CCUIP + "\r\n" +
                 "Connection: close\r\n\r\n");
  }
}

Ich danke euch und ich wünsche euch ein schönes Wochenende!

Grüße
Sascha

Ecstasy:
Das speichern in der Datenbank hat vorher immer funktioniert. Nachdem ich den Teil für den Eintrag in der CCU eingepflegt habe, speichert er die besagten Dateien nicht mehr in der Datenbank.

Nur in der Datenbank?
Oder kommen die Daten schon in der "temperatur.php" nicht mehr an?

Gruß Fips

Ich nehme an das die nicht bis zur temperatur.php kommen.

Sonst würde er die Daten in der DB speichern? Wie könnte ich denn überprüfen ob die Daten dort ankommen?

Grüße und vielen Dank!
Sascha

Ecstasy:
Ich nehme an das die nicht bis zur temperatur.php kommen.

Sonst würde er die Daten in der DB speichern? Wie könnte ich denn überprüfen ob die Daten dort ankommen?

Grüße und vielen Dank!
Sascha

echo

php-tutorial/_get-und-_post/

Gruß Fips

Vielen Dank für die Tipps!

Ich habe das Script jetzt überarbeitet. Mir ist aufgefallen, dass ich die Verbindung nicht geschlossen hatte.

Da ich zu 2 verschiedenen Servern Daten schicke sollte man dies tun.

Jetzt funktioniert alles einwandfrei.

Vielen Dank für deine Tipps!

Grüße
Sascha

Hängst Du bitte die aktualisierte Version noch hier rein?

Gruß Tommy

Klar, kein Problem

#include <ESP8266WiFi.h>
#include "DHT.h"

const char* ssid = "*****"; //SSID aus dem Router
const char* password = "********"; //Passwort für den Zugang zum WLAN

String Raum = "Wohnzimmer";
String CCUDevice = "******";

const char* host = "*******";
const uint16_t port = ;

const char* CCUhost = "******";
const uint16_t CCUport = ;

WiFiServer server(80); //Port auf welchem der Server laufen soll.

#define DHT11PIN D3
#define DHT11TYPE DHT22
DHT dht(DHT11PIN, DHT11TYPE);

void setup()
{
  Serial.begin(115200);
  delay(5000);
  dht.begin();

  Serial.println();
  Serial.println();
  Serial.print("Verbinde mit ");
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("Mit WiFi verbunden");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());


  float tempValue = dht.readTemperature(); //Temperatur vom Sensor DHT22 lesen
  float LFValue = dht.readHumidity(); //relative Luftfeuchtigkeit vom Sensor DHT22 lesen

  if (isnan(tempValue) || isnan(LFValue)) {
    Serial.println("Der Sensor gibt keine Daten zurück!");
    return;
  }
  else
  {
    Serial.print("Luftfeuchte: ");
    Serial.print(LFValue);
    Serial.print(" %\t");
    Serial.print("Temperatur: ");
    Serial.print(tempValue);
    Serial.println(" C");

    float sensorValue = ESP.getVcc();

    storeData(tempValue, LFValue, Raum, sensorValue);
    setStateCCU("SET_TEMPERATURE", String(tempValue));
    setStateCCU("SET_HUMIDITY", String(LFValue));
    delay(3000);
    ESP.deepSleep(60 * 15 * 1000000);
  }
}

void loop()
{
}

void storeData(float tempValue, float LFValue, String Raum, int sensorValue) {

  Serial.print("Verbinde mit ");
  Serial.print(host);
  Serial.print(':');
  Serial.println(port);


  WiFiClient client;
  if (!client.connect(host, port)) {
    Serial.println("Verbindung fehlgeschlagen");
    delay(5000);
    return;
  }


  Serial.println("Sende die Daten zum MySQL Server");

  String url = "/temperatur.php?";
  url = url + "temp=" + tempValue;
  url = url + "&press=" + LFValue;
  url = url + "&raum=" + Raum;
  url = url + "&bat=" + sensorValue;

  Serial.print("URL = " + url);

  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n\r\n");

  unsigned long timeout = millis();
  while (client.available() == 0) {
    if (millis() - timeout > 5000) {
      Serial.println(">>> Client hat einen TimeOut !");
      client.stop();
      delay(60000);
      return;
    }
  }


  Serial.println("Daten die vom Server empfangen werden");
  while (client.available()) {
    char ch = static_cast<char>(client.read());
    Serial.print(ch);
  }

  Serial.println();
  Serial.println("closing connection");
  client.stop();
}

void setStateCCU(String type, String value) {

  Serial.print("Verbinde mit ");
  Serial.print(CCUhost);
  Serial.print(':');
  Serial.println(CCUport);

  WiFiClient client;
  if (!client.connect(CCUhost, CCUport)) {
    Serial.println("Verbindung fehlgeschlagen");
    delay(5000);
    return;
  }

  Serial.println("Sende die Daten an die CCU2");

  String url = "http://" + String(CCUhost) + ":8181/cuxd.exe?ret=dom.GetObject(%22CUxD." + CCUDevice + ":1." + type + "%22).State(" + value + ")";
  Serial.print("URL = " + url);
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + CCUhost + "\r\n" +
               "Connection: close\r\n\r\n");

  unsigned long timeout = millis();
  while (client.available() == 0) {
    if (millis() - timeout > 5000) {
      Serial.println(">>> Client hat einen TimeOut !");
      client.stop();
      delay(60000);
      return;
    }
  }

  Serial.println("Daten die vom Server empfangen werden");
  while (client.available()) {
    char ch = static_cast<char>(client.read());
    Serial.print(ch);
  }

  Serial.println();
  Serial.println("closing connection");
  client.stop();
}

Danke.

Gruß Tommy