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!
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?