Reply To: Startschwierigkeiten – HTTP-Client

Forums (Deutsch) Sonstiges Startschwierigkeiten – HTTP-Client Reply To: Startschwierigkeiten – HTTP-Client

#2899
mkcoge
Participant

Bis vor einer Woche hatte ich ebenfalls nach einer Lösung des Problems gesucht und nichts gefunden. Nach einigem hin und her probieren und schierer verzweifelter Aufgabe habe ich nun eine funktionierende Lösung und die ist einfach: “http://” darf nicht mitgegeben werden. Es muss direkt die Ziel-Adresse angegeben werden, also http.sendRequest(1,"GET","192.168.1.1/ziel.php"); anstelle von http.sendRequest(1,"GET","http://192.168.1.1/ziel.php"); Dies war aber eigentlich noch der einfachere Teil. In meinem Fall möchte ich gleich mehrere Variablen mit der URL mitsenden. Der Aufbau http.sendRequest(1, "GET", "http://192.168.1.1/ziel.php?wert=" + String(wert)); hat für mich somit nicht ausgereicht, da ich Werte aus Variablen “Temperatur, Humidity und einer Raum-Bezeichnung” mitgeben wolle. Ich habe das ganze nun so gelöst, dass ich mehrere Abschnitte der URL in einzelne Variablen aufgeteilt und schlussendlich wieder in eine Variable zusammengesetzt habe. Klingt ziemlich unelegant und lässt sich sicher besser lösen aber fürs erste Funktioniert alles wie es soll, aussehen tut das ganze so:

//  Nano ESP Library and Initialize
#include <NanoESP.h>  // NanoESP Library
#include <NanoESP_HTTP.h> //  Library for NanoESP http-connection
NanoESP nanoesp = NanoESP();
NanoESP_HTTP http = NanoESP_HTTP(nanoesp);

// DHT11 Sensor
// Include and initialize
#include "DHT.h"
DHT dht;

// Onboard LED
#define LED 13

// WLAN settings
#define SSID "MySSID" // set SSID
#define WLANPW "MyWLANPW" // set WLAN password

// environment settings
String debug = "off"; // debug [on] or [off]
String senddata = "on"; // sendind data [on] or [off]
String wlan = "on"; // WLAN [on] or [off]
long var_delay = 30000;  // define loop run-time
String var_room; // define variable for room

// function: flashing onboard LED 15 times and then constant
void onboardLED() {
  for (int i = 0; i < 15; i++)
  {
    digitalWrite(LED, HIGH); // LED on
    delay(200); // wait 0.2 seconds
    digitalWrite(LED, LOW); // LED off
    delay(200); // wait 0.2 seconds
    digitalWrite(LED, HIGH); // LED on
  }
}

void setup() {
  Serial.begin(19200); //initialize Serial console and console speed
  Serial.println("booting...");
  Serial.println("initialisiere nanoesp");
  nanoesp.init(); // initialize NanoESP
  if(wlan == "on") {
    Serial.println("initialisiere WLAN");
    if (!nanoesp.configWifi(STATION, SSID, WLANPW)) {
      Serial.println("Error: WLAN not connected");
      Serial.println("restarting...");
      delay(5000); // wait 5 seconds
      asm volatile (" jmp 0");  // restart NanoESP if WLAN could not connect
    } else {
      Serial.println("WLAN connected");
      onboardLED(); // flasing and activate Onboard LED if WLAN connection is established
      Serial.println("");
      Serial.println("Connection info: ");
      Serial.println(nanoesp.getIp()); // show connection information (IP-Address and MAC-Address)
    }
  } else {
    Serial.println("WLAN deactivated");
  }

  if(senddata == "on") {
    Serial.println("sending Data on\n");    
  } else {
    Serial.println("sending data deactivated");
    Serial.println("\n");
  }

  //  initialize DHT11
  Serial.println("initialisiere DHT11");
  dht.setup(2); // data pin 2
  delay(5000); //wait 5 seconds
  Serial.print("Status DHT11 Sensor: ");
  Serial.println(dht.getStatusString());
  Serial.println("\n");
}

void loop() {
  if (senddata == "on") {
    var_room = "Estrich"; // define Sensor Name in variable
    float var_temperature = dht.getTemperature() -1; // DHT11 temperature with calibration -1
    float var_humidity = dht.getHumidity() -18; // DHT11 humidity with calibration -18
    if (debug == "on") {
      Serial.println("############## DHT11 Debug ##############");
      Serial.println(var_room);
      Serial.println(var_temperature);
      Serial.println(var_humidity);  
    }
    String url_val1 = "192.168.1.1/test-area/test-area.php?room="; // URL part 1 (target and room)
    String url_val2 = "&temperature="; // URL part 2 (temperature)
    String url_val3 = "&humidity="; // URL part 3 (humidity)
    String url = url_val1 + var_room + url_val2 + var_temperature + url_val3 + var_humidity; // URL complete with part 1-3 and room and DHT-variable
  
    Serial.println(url); // print complete string in console
    http.sendRequest(1,"GET",url); // send complete URL
    delay(var_delay); // wait in variable defined time for next loop run
  }
} 

Falls hier doch noch wer aktiv ist und gleich Verbesserungen angeben kann, die sind sehr Willkommen ;)

grüsse mkcoge

PS. hoffe es wurde kein doppelpost, das Forum hier ist irgendwie…, altbacken :/