ESP32 Http GET (Basics)

Hallo,

sorry, bin ganz neu mit allem hier und scheitere vermutlich an einem simplen Syntax Problem.

Ich verwende ein ESP 32 ESP32 NodeMCU (von AZ Electronics) und die letzte Arduino IDE. Perspektivisch sollen mal Messwerte an einen Server bei bplaced übertragen werden. Dazu habe ich zunächst ein kleines PHP Skript auf dem Server abgelegt, dass sich mit „xxx.bplaced.net/arduino1.php?daten=neutest“ auch aufrufen lässt und die Daten in einer ASCII-Datei ablegt.

Aus diversen Tutorials habe ich mir dann das folgende Skript zusammengebastelt.

#include <WiFi.h>
#include <HTTPClient.h>

WiFiClient client;
String myurl;
String testzeile = "DasIstEinTest";
void setup()
{
  Serial.begin(9600);

  WiFi.disconnect();
  delay(3000);
  Serial.println("programm startet");
  WiFi.begin("SSID", "PASSWORT");
  while ((!(WiFi.status() == WL_CONNECTED))) {
    Serial.println("...");
    delay(3000);

  }
  Serial.println("bin verbunden");
  Serial.println("Lokale IP:");
  Serial.println(WiFi.localIP());
}


void loop()
{

  if (client.connect("xxx.bplaced.net", 80))
  {
    myurl += "arduino1.php?daten=neutest12"; //damit funktioniert es
    //myurl += "arduino1.php?daten="; // das geht leider nicht
    //myurl += testzeile; //der Wert aus dieser Variablen soll eigentlich übertragen werden
    client.print(String("GET ") + myurl + " HTTP/1.1\r\n" +
                 "Host: " + "xxx.bplaced.net" + "\r\n" +
                 "Connection: close\r\n\r\n");

  }
}

Bis dahin funktioniert alles. Leider scheitere ich an der String Bearbeitung. Denn ich möchte gerne den zu übertragenen Wert durch den Wert in der String-Variable „testzeile“ ersetzen. Siehe die beiden auskommentierten Zeilen.

Was mache ich falsch? Leider beschränken sich meine „Programmierkenntnisse“ auf ein wenig VBA und PHP.

Vielen Dank im Voraus!

Peter

psciga:

void loop()

{

if (client.connect("xxx.bplaced.net", 80))
 {
   myurl += "arduino1.php?daten=neutest12"; //damit funktioniert es
   //myurl += "arduino1.php?daten="; // das geht leider nicht
   //myurl += testzeile; //der Wert aus dieser Variablen soll eigentlich übertragen werden
   client.print(String("GET ") + myurl + " HTTP/1.1\r\n" +
                "Host: " + "xxx.bplaced.net" + "\r\n" +
                "Connection: close\r\n\r\n");

}
}

Was du in loop() treibst hat mit dem http.client nichts zu tun. Die Library könntest du auch weglassen.
Du nutzt in loop() den wifi.client.

Bei mir kommt "neutest12" genauso auch "DasIstEinTest" auf dem Server an.

Einschränkung: Habe gerade keinen Esp32 frei und deshalb mit dem 8266 getestet. Das sollte aber in dem Fall keinen Unterschied machen.

Gruß Fips