[NodeMCU V0.9]HtpClient kommt nicht in's W-LAN
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:
Code:
/**
* 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
Huch! Das kommt dabei heraus, wenn man keine Ahnung hat ...
Zitat:
Zitat von
piggituX
Es gibt also auch Wifi pur? Worin liegt der Unterschied? Ich probier's auf jeden Fall mal ohne Multi aus, mal sehen, was passiert.
Tschüß
Manni
- - - Aktualisiert - - -
Hallo,
da klappt was nicht. Im BME280-Beispiel steht das Ganze so:
Code:
// Web Server on port 80
WiFiServer server(80);
// only runs once on boot
void setup() {
// Initializing serial port for debugging purposes
Serial.begin(115200);
delay(10);
Wire.begin(D3, D4);
Wire.setClock(100000);
// Connecting to WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Das Problem: Die Variable WiFi ist nicht deklariert. Daher weis ich jetzt nicht, wie die typ-Variable in dem Fall heist. Einfach ohne Multi (also ESP8266WiFi ) jedenfalls nicht ... das habe ich erfolglos ausprobiert. Ich schätze, es hat mit der Variablen Server zu tun, doch da ich einen Client benutze, weis ich nicht, wie ich das nun ändern muss.
Ergänzung: Hab`'s rausbekommen. Nur WiFi ohne Deklaration benutzen (wie im Beispiel) und es geht. Zumindest wird ein Programm daraus. Verbinden kann es sich immer noch nicht. Das Netz ist WPA2-gesichert. Muss man da irgendwo etwas ändern oder macht er das von alleine?
Tschüß
Manni