Startschwierigkeiten – HTTP-Client
- Dieses Thema hat 3 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 5 Jahren, 5 Monaten von mkcoge.
-
AutorBeiträge
-
Januar 14, 2017 um 22:32 Uhr #2037christian06Teilnehmer
Hallo zusammen,
würde gern die Sensordaten an meinen PC senden.
Mir fehlt noch ein bisschen als Anfänger der Überblick was mit dem ESP möglich ist.Auf dem PC läuft ein Webserver welche die Sensordaten einfach per GET oder POST entgegenehmen soll.
jedoch ist in den Kalender-Beispielen immer nur die Umgekehrte Variante enthalten.
Also der Browser ruft den ESP als Webserver auf.
Ich will jedoch im ca. 5 Minuten rythmus (im loop-Funktion) die Sonsor-Werte an den PC übertragen.
also quasi folgende URL aufrufen „http://192.168.1.40/sensor1.php?wert=123“#include <NanoESP.h>
#include <NanoESP_HTTP.h>
#include <SoftwareSerial.h>#define SSID „abc123“
#define PASSWORD „abcdef“NanoESP nanoesp = NanoESP();
NanoESP_HTTP http = NanoESP_HTTP(nanoesp);void setup() {
Serial.begin(19200);
nanoesp.init();
nanoesp.configWifiMode(STATION);
if (nanoesp.wifiConnected()) {
Serial.println(„WLAN verbunden“);
Serial.println(nanoesp.getIp());
} else {
Serial.println(„WLAN nicht verbunden“);
}
}void loop() {
int wert;
http.sendRequest(1, „GET“, „http://192.168.1.40/sensor1.php?wert=“ + String(wert));
delay(5000);
}Könnte ihr mir kurz ein Hinweis geben. Google gibt mir immer nur Seiten wie man den nanoESP im Browser erreicht.
Die URL soll aber vom ESP aufgerufen werden und so der Wert übertragen werden.Gruß Christian
Januar 15, 2017 um 18:04 Uhr #2042KlausTeilnehmerHast Du es denn mal ausprobiert? Ich kenne jetzt die aktuelle Bibliothek nicht. Früher musste man mal die PINs für den Softwareserial mit schicken. Mag aber sein, dass das inzwischen fest eingebaut ist, da ja eh fest verdrahtet. Ansonsten sieht es doch schon gut aus.
Januar 16, 2017 um 10:45 Uhr #2043christian06TeilnehmerJa, den Code habe ich aufgespielt auf den Nano, jedoch wird auf dem PC wird nix geloggt über einen Aufruf der URL.
Vom anderen PC und Handy ist dies kein Problem.Ist den die Funktion „sendRequest“ die richtige?
Juli 3, 2019 um 22:36 Uhr #2899mkcogeTeilnehmerBis 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 vonhttp.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 Aufbauhttp.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 :/
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.