ManniP
21.04.2017, 22:20
Hallo,
dies ist der leicht abgewandelte Code eines http-Client auf einem NodeMCU-Board ohne LUA (mit Arduino-IDE rein) aus einem der mitgelieferten Beispiele:
/**
* BasicHTTPClient.ino
*
* Created on: 24.05.2015
*
*/
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#define USE_SERIAL Serial
#define SSID RTk66S
#define PASSWORD ddddd
ESP8266WiFiMulti WiFiMulti;
int ledState = LOW;
void setup() {
USE_SERIAL.begin(115200);
// USE_SERIAL.setDebugOutput(true);
USE_SERIAL.println();
USE_SERIAL.println();
USE_SERIAL.println();
for(uint8_t t = 4; t > 0; t--) {
USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
USE_SERIAL.flush();
delay(1000);
}
WiFiMulti.addAP("SSID", "PASSWORD");
USE_SERIAL.print("W-LAN-Zugang durch.\n");
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, ledState);
}
void loop() {
// wait for WiFi connection
if (ledState == LOW)
ledState = HIGH; // Note that this switches the LED *off*
else
ledState = LOW; // Note that this switches the LED *on*
digitalWrite(LED_BUILTIN, ledState);
if((WiFiMulti.run() == WL_CONNECTED)) {
HTTPClient http;
USE_SERIAL.print("[HTTP] begin...\n");
// configure traged server and url
http.begin("http://192.168.178.23/index.html"); //HTTP
USE_SERIAL.print("[HTTP] GET...\n");
// start connection and send HTTP header
int httpCode = http.GET();
// httpCode will be negative on error
if(httpCode > 0) {
// HTTP header has been send and Server response header has been handled
USE_SERIAL.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if(httpCode == HTTP_CODE_OK) {
String payload = http.getString();
USE_SERIAL.println(payload);
}
} else {
USE_SERIAL.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
}
else
{
USE_SERIAL.print("Keine Verbindung.\n");
}
delay(5000);
}
Anmerkung: Da da Internet ja nunmal für jeden offen ist, kasnn ich schlecht meine Netzwerk-Zugangsdaten einfach so hinausposaunen. Deshalb habe ich das Passwort hier geändert (aber nur hier). Beide Strings habe ich mit meinem Browser auf meinem DSL-Server (einer FritzBox) abgerufen und herauskopiert. Da sind also sicher keine Schreibfehler oder so drin. Trotzdem zeigt mir der serielle Monitor ständig (alle 5 sec, wie eingestellt) 'keine Verbindung.' an, also den String für den Fall, dass er nicht rein kommt.
Was mache ich da falsch?
Ach ja, der SSID-Wert ist auch kopiert, ich habe zuerst die SSID für das 2,4GHz-W-LAN eingetragen, dann für 5GHz. Die Passwörter sind da gleich. Es geht mit Beiden nicht.
Jemand 'ne Idee?
Tschüß
Manni
dies ist der leicht abgewandelte Code eines http-Client auf einem NodeMCU-Board ohne LUA (mit Arduino-IDE rein) aus einem der mitgelieferten Beispiele:
/**
* BasicHTTPClient.ino
*
* Created on: 24.05.2015
*
*/
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#define USE_SERIAL Serial
#define SSID RTk66S
#define PASSWORD ddddd
ESP8266WiFiMulti WiFiMulti;
int ledState = LOW;
void setup() {
USE_SERIAL.begin(115200);
// USE_SERIAL.setDebugOutput(true);
USE_SERIAL.println();
USE_SERIAL.println();
USE_SERIAL.println();
for(uint8_t t = 4; t > 0; t--) {
USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
USE_SERIAL.flush();
delay(1000);
}
WiFiMulti.addAP("SSID", "PASSWORD");
USE_SERIAL.print("W-LAN-Zugang durch.\n");
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, ledState);
}
void loop() {
// wait for WiFi connection
if (ledState == LOW)
ledState = HIGH; // Note that this switches the LED *off*
else
ledState = LOW; // Note that this switches the LED *on*
digitalWrite(LED_BUILTIN, ledState);
if((WiFiMulti.run() == WL_CONNECTED)) {
HTTPClient http;
USE_SERIAL.print("[HTTP] begin...\n");
// configure traged server and url
http.begin("http://192.168.178.23/index.html"); //HTTP
USE_SERIAL.print("[HTTP] GET...\n");
// start connection and send HTTP header
int httpCode = http.GET();
// httpCode will be negative on error
if(httpCode > 0) {
// HTTP header has been send and Server response header has been handled
USE_SERIAL.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if(httpCode == HTTP_CODE_OK) {
String payload = http.getString();
USE_SERIAL.println(payload);
}
} else {
USE_SERIAL.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
}
else
{
USE_SERIAL.print("Keine Verbindung.\n");
}
delay(5000);
}
Anmerkung: Da da Internet ja nunmal für jeden offen ist, kasnn ich schlecht meine Netzwerk-Zugangsdaten einfach so hinausposaunen. Deshalb habe ich das Passwort hier geändert (aber nur hier). Beide Strings habe ich mit meinem Browser auf meinem DSL-Server (einer FritzBox) abgerufen und herauskopiert. Da sind also sicher keine Schreibfehler oder so drin. Trotzdem zeigt mir der serielle Monitor ständig (alle 5 sec, wie eingestellt) 'keine Verbindung.' an, also den String für den Fall, dass er nicht rein kommt.
Was mache ich da falsch?
Ach ja, der SSID-Wert ist auch kopiert, ich habe zuerst die SSID für das 2,4GHz-W-LAN eingetragen, dann für 5GHz. Die Passwörter sind da gleich. Es geht mit Beiden nicht.
Jemand 'ne Idee?
Tschüß
Manni