Systemvariable setzten per HTTP und ESP8266 - *gelöst*

Kabellose und kabelgebundene Sender und Empfänger der klassischen Homematic-Serie

Moderator: Co-Administratoren

Antworten
capitaen_z
Beiträge: 130
Registriert: 05.07.2015, 19:34
Wohnort: Hamburg
Danksagung erhalten: 3 Mal

Systemvariable setzten per HTTP und ESP8266 - *gelöst*

Beitrag von capitaen_z » 25.02.2018, 19:47

Hallo zusammen,

ich versuche eine Systemvariable auf der CCU2 (Raspberrymatic) per HTTP zu setzen.
Mit

Code: Alles auswählen

http://192.168.0.76:8181/x.exe?antwort=dom.GetObject("test").State("11")
aus dem Internetexplorer klappt es auch, aber ich bekomme es mit dem ESP8266 nicht hin.
Mein Problem ist die Formatierung des "Befehls"

So klappt es zumindest nicht:

Code: Alles auswählen

#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>
 
void setup() {
 
  Serial.begin(115200);                                  //Serial connection
  WiFi.begin("XXXXX", "XXXXX");   //WiFi connection
 
  while (WiFi.status() != WL_CONNECTED) {  //Wait for the WiFI connection completion
 
    delay(500);
    Serial.println("Waiting for connection");
 
  }
 
}
 
void loop() {
 
 if(WiFi.status()== WL_CONNECTED){   //Check WiFi connection status
 
   HTTPClient http;    //Declare object of class HTTPClient
 
   http.begin("http://192.168.0.76:8181/x.exe?antwort=dom.GetObject("test").State("11")" );      //Specify request destination
   http.addHeader("Content-Type", "text/plain");  //Specify content-type header
 
   int httpCode = http.POST("Message from ESP8266");   //Send the request
   String payload = http.getString();                  //Get the response payload
 
   Serial.println(httpCode);   //Print HTTP return code
   Serial.println(payload);    //Print request response payload
 
   http.end();  //Close connection
 
 }else{
 
    Serial.println("Error in WiFi connection");   
 
 }
 
  delay(30000);  //Send a request every 30 seconds
 
}
Hat jemand eine Idee wie ich es formatieren muss?

VG
Leif
Zuletzt geändert von capitaen_z am 26.02.2018, 17:01, insgesamt 1-mal geändert.

Matthias K.
Beiträge: 1172
Registriert: 14.02.2016, 12:32
System: Alternative CCU (auf Basis OCCU)
Wohnort: Heidenheim
Hat sich bedankt: 57 Mal
Danksagung erhalten: 226 Mal

Re: Systemvariable setzten per HTTP und ESP8266 - klappt nic

Beitrag von Matthias K. » 25.02.2018, 22:46

Ich meine, du musst im Header auch noch den Parameter "Host" setzen, dann sollte es funktionieren. Die Remote Script Schnittstelle erwartet seiti einigen Firmware-Versionen einen sauberen HTTP Header.

capitaen_z
Beiträge: 130
Registriert: 05.07.2015, 19:34
Wohnort: Hamburg
Danksagung erhalten: 3 Mal

Re: Systemvariable setzten per HTTP und ESP8266 - *gelöst*

Beitrag von capitaen_z » 26.02.2018, 17:00

Danke für den Tipp, aber ich habe es jetzt anders gelöst.
- Ich wollte zwar keine Zusatzpakete mehr, aber ich habe mir jetzt XML-API nachinstalliert.
- anschließend habe ich die ise_id ermittelt.
Die Übergabe von Werten klappt jetzt mit diesem Script:

Code: Alles auswählen

#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>

void setup() {

  WiFi.begin("SSID", "WLAN_PW");   //WiFi connection

  while (WiFi.status() != WL_CONNECTED) {  //Wait for the WiFI connection completion

    delay(500);

  }

}

void loop() {

 if(WiFi.status()== WL_CONNECTED){   //Check WiFi connection status

   HTTPClient http;    //Declare object of class HTTPClient

   http.begin("http://CCU_IP/config/xmlapi/statechange.cgi?ise_id=DIE_ID&new_value=EIN_WERT");      //Specify request destination
   http.addHeader("Content-Type", "text/plain");  //Specify content-type header

   int httpCode = http.POST("Message from ESP8266");   //Send the request
   String payload = http.getString();                  //Get the response payload

   http.end();  //Close connection

 }else{

 }

  delay(30000);  //Send a request every 30 seconds

}}
Jetzt muss ich den Code nur noch erweitern und einen Sensor anschließen - Fertig ist der günstige HM-Sensor ;-)

tüftler55
Beiträge: 25
Registriert: 08.05.2017, 15:23

Re: Systemvariable setzten per HTTP und ESP8266 - *gelöst*

Beitrag von tüftler55 » 10.08.2018, 21:25

Moin, das Thema ist zwar schon ein wenig her, aber ich versuche gerade einen esp01 mit nem dht11 an meine Homematic anzubinden.
Ich bin soweit das der esp die Variable setzten kann,aber ich komme nicht weiter.
Wie übergebe ich die Daten des Sensors an die Variable?
Hast du dafür evtl schon ein fertiges funktionierendes Sketch?
Für etwas Hilfe wäre ich echt dankbar.
Liebe Grüße, Jürgen

jp112sdl
Beiträge: 12115
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: Systemvariable setzten per HTTP und ESP8266 - *gelöst*

Beitrag von jp112sdl » 10.08.2018, 21:49

Ist zwar ewig nicht gepflegt, weil ich bei mir alle ESP und DHT wieder rausgeschmissen habe, aber hier ist noch mein alter Code:
https://github.com/jp112sdl/WemosD1_CCU ... _DHT22.ino
Allerding werden die Werte an ein CUxD Thermostat gesendet.

Alternativ kann ich wirklich empfehlen, ohne den WLAN-Umweg die Werte direkt an Homematic zu funken.
Du brauchst dafür nur einen Arduino Pro Mini und ein CC1101 Funkmodul. Dann könntest du dir den HM-WDS40-TH-I nachbauen.
https://github.com/jp112sdl/Beispiel_As ... TH-I-DHT22
https://github.com/jp112sdl/Beispiel_AskSinPP

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

tüftler55
Beiträge: 25
Registriert: 08.05.2017, 15:23

Re: Systemvariable setzten per HTTP und ESP8266 - *gelöst*

Beitrag von tüftler55 » 11.08.2018, 11:23

Oh je, erst einmal vielen Dank. Ich hatte mir das einfacher vorgestellt. Ich wollte einfach den Wert des Sensors auslesen, und in die variable(EIN_Wert) schreiben, der dann automatisch in
http.begin("http://CCU_IP/config/xmlapi/statechange.cgi?ise_id=DIE_ID&new_value=EIN_WERT");
Übernommen wird.
Ich sitze schon etliche Stunden , Tage daran, habe mit vielen Sketchen getestet, aber bei dem letzten Versuch mit deinem Sketch hatte ich soweit Erfolg, das ich einen festen Wert an die CCU übergeben konnte. Darauf wollte ich aufbauen, aber ich glaube mir fehlt dazu einfach das entsprechende Wissen.
Liebe Grüße, Jürgen

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren (klassisch)“