PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [NodeMCU V0.9]HtpClient kommt nicht in's W-LAN



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

piggituX
23.04.2017, 13:15
hi,

ich bin mir nicht ganz sicher, ob man sich nicht entscheiden musste zwischen Wifi und WifiMulti....in meinen Test Projekt habe ich nur mit WiFi gearbeitet


WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");


Hier ein Beispiel Link eines anderen Projektes -> http://embedded-lab.com/blog/making-simple-weather-web-server-using-esp8266-bme280/ und noch http://www.esp8266.com/viewtopic.php?f=29&t=6731

ManniP
23.04.2017, 15:34
hi,

ich bin mir nicht ganz sicher, ob man sich nicht entscheiden musste zwischen Wifi und WifiMulti....in meinen Test Projekt habe ich nur mit WiFi gearbeitet


WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");


Hier ein Beispiel Link eines anderen Projektes -> http://embedded-lab.com/blog/making-simple-weather-web-server-using-esp8266-bme280/ und noch http://www.esp8266.com/viewtopic.php?f=29&t=6731

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:



// 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