Ich benutze ein Wemos Lolin ESP32 Board welches ich mit Arduino programmiere.
Mein Ziel ist es, Json Daten mit HTTP via WLAN zu senden. Die Json Daten konnte ich auch korrekt zusammenstellen und ausgeben lassen.
Leider funktioniert es mit dem HTTP noch nicht so ganz. Ich erhalte keine Antwort, respektive nur eine leere Zeile. Erwartet wäre ein 200 OK ab der 9.Stelle. Daher gehe ich auch davon aus, dass die HTTP Verbindung noch nicht ganz korrekt ist. Die WLAN Verbindung hat funktioniert. Ich konnte das Gerät im WLAN sehen.
Ich hoffe Ihr könnt mir weiterhelfen. Vielen Dank!
Btw: Die Forumssuche habe ich natürlich schon fleissig genutzt. Habe jedoch keine Lösung zu meinem Problem gefunden.
#include <WiFi.h>
#include <ArduinoJson.h>
#include <ArduinoHttpClient.h>
//#include <HTTPClient.h>
const char* ssid = "XXXX";
const char* password = "XXXX";
//Create WiFi Object
WiFiClient client;
const char _ip_Adress[] = "XX.XXX.XXX.XXX";
String url = "POST";
int Length;
void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
} //End Setup
void loop() {
// put your main code here, to run repeatedly:
StaticJsonBuffer<300> JSONbuffer; //Declaring static JSON buffer
JsonObject& JSONencoder = JSONbuffer.createObject();
JSONencoder["DeviceId"] = "113";
JSONencoder["Name"] = "JsonTest";
JSONencoder["Serial"] = "5005191";
JSONencoder["Token"] = "0";
JsonArray& Index = JSONencoder.createNestedArray("Index"); //JSON array
Index.add(1); //Add value to array
JsonArray& Typ = JSONencoder.createNestedArray("Typ"); //JSON array
Typ.add(1); //Add value to array
JsonArray& Unit = JSONencoder.createNestedArray("Unit"); //JSON array
Unit.add("%rh"); //Add value to array
JsonArray& Value = JSONencoder.createNestedArray("Value"); //JSON array
Value.add(32.4); //Add value to array
char JSONmessageBuffer [512];
JSONencoder.prettyPrintTo(JSONmessageBuffer, sizeof(JSONmessageBuffer));
Serial.println(JSONmessageBuffer);
//Create url
url = "POST";
url += " ";
url += "/XXX/XXX.XXX.svc/";
url += "UpdateDataJson";
url += " HTTP/1.1";
Serial.println(url);
//Length output from Body -> used as Content Length
Length = sizeof(JSONmessageBuffer);
if (client.connect(_ip_Adress, 80))
{
//Send HTTP Header to Server
client.println(url);
client.println("Content-Type: application/json");
client.println("HOST: " + String(_ip_Adress));
client.print("Content-Length: ");
client.println(Length);
client.println("Connection: Close");
client.println();
//Send Json Data
client.println(JSONmessageBuffer);
//Check Answer
String answer = client.readStringUntil('\r');
Serial.println("Vor der Antwort");
Serial.println(answer);
Serial.println("Nach der Antwort");
if (answer.startsWith("200 OK", 9))
{
Serial.println("HTTP: OK");
}
}
delay(1000); //Send a request every 1 second
}