Bin gerade dabei mir eine Wetterstation für meine Homematic selbst zusammenzubauen. Die Daten sollen per WiFi an Systemvariablen weitergegeben werden. Da klappt, solange ich nur einen Wert sende. Wenn ich mehrere Werte senden will, wird entweder der erste oder der letzte übertragen, jenachdem ob ich mittels "http.begin" oder "serial.print" übertrage.
Vielleicht hat ja jemand eine Idee dazu?
Danke und LG
Thomas
Code: Alles auswählen
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
ESP8266WiFiMulti WiFiMulti;
WiFiClient client;
const char* ssid="XXXXXXXX";
const char* password = "YYYYYYYY";
const char* Homematic = "192.168.0.11";
void setup() {
Serial.begin(115200);
delay(50);
Serial.println();
Serial.print("Wifi verbindet zu ");
Serial.println( ssid );
WiFi.begin(ssid,password);
Serial.println();
Serial.print("Verbinde");
while( WiFi.status() != WL_CONNECTED ){
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("Wifi Verbunden!");
Serial.print("NodeMCU IP Addresse : ");
Serial.println(WiFi.localIP() );
Serial.println();
}
void loop() {
if (client.connect(Homematic,80)) {
// Testwerte
String Windrichtung = "70";
String Himmelsrichtung = "190";
String Windurl2 = "http://192.168.0.11/config/xmlapi/statechange.cgi?ise_id=12025&new_value=";
Windurl2 += Windrichtung;
Serial.print(String("GET ") + Windurl2 + " HTTP/1.1\r\n" +
"Host: " + Homematic + "\r\n" +
"Connection: close\r\n\r\n");
client.println(String("GET ") + Windurl2 + " HTTP/1.1\r\n" +
"Host: " + Homematic + "\r\n" +
"Connection: close\r\n\r\n");
delay(1000);
String Windurl = "http://192.168.0.11/config/xmlapi/statechange.cgi?ise_id=12024&new_value=";
Windurl += Himmelsrichtung;
Serial.print(String("GET ") + Windurl + " HTTP/1.1\r\n" +
"Host: " + Homematic + "\r\n" +
"Connection: close\r\n\r\n");
client.println(String("GET ") + Windurl + " HTTP/1.1\r\n" +
"Host: " + Homematic + "\r\n" +
"Connection: close\r\n\r\n");
delay(2000);
// Server-Antwort ausgeben
while(client.available()){
String antwort = client.readStringUntil('\r');
Serial.print(antwort);
}
delay(1000);
}
}