PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ESP8266 Taucht in DHCP Liste nicht auf?



Ferdinand
12.08.2018, 16:24
Warum sehe ich das ESP8266 Modul (ESP-01) nicht im Router in der DHCP Liste so das ich die MAC und die IP sehen kann, und kann ich eine Feste IP dem ESP-01 Zuweisen?. zum programmiren nehme ich ein USB TTL Wandler und die IDE ist Arduino ich verwende C als Programirsprache danke für die Hilfe. Mit freundlichen Grüßen Ferdinand.

HaWe
12.08.2018, 17:20
Warum sehe ich das ESP8266 Modul (ESP-01) nicht im Router in der DHCP Liste so das ich die MAC und die IP sehen kann, und kann ich eine Feste IP dem ESP-01 Zuweisen?. zum programmiren nehme ich ein USB TTL Wandler und die IDE ist Arduino ich verwende C als Programirsprache danke für die Hilfe. Mit freundlichen Grüßen Ferdinand.

hallo,
schreib mal deinen Code hier rein!
(Wenn er im Router nicht auftaucht, hat er sich wschl nicht verbunden)

welche esp8266 core Version hast du über den Board-Manager installiert?
Hast du einen ESP12-E?
Und dann welche Board-Bezeichnung ganz genau in der Board-Auswahl ?

(Arduino verwendet allerdings C++, nicht C ;) )

Ferdinand
12.08.2018, 17:45
Das Program ist das Beispilprogram WiFiTelnetToSerial
aber egal weches ich neme wen ich w-lan nutze nicht als AP natürlich

und verbunden hat er sich ja, ich sehe ihn nur nicht, ich kan daten hin und her senden



/*
WiFiTelnetToSerial - Example Transparent UART to Telnet Server for esp8266

Copyright (c) 2015 Hristo Gochkov. All rights reserved.
This file is part of the ESP8266WiFi library for Arduino environment.

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <ESP8266WiFi.h>

//how many clients should be able to telnet to this ESP8266
#define MAX_SRV_CLIENTS 1
const char* ssid = "mein_wlan_router";
const char* password = "mein_passwort";

WiFiServer server(23);
WiFiClient serverClients[MAX_SRV_CLIENTS];

void setup() {
Serial1.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial1.print("\nConnecting to "); Serial1.println(ssid);
uint8_t i = 0;
while (WiFi.status() != WL_CONNECTED && i++ < 20) {
delay(500);
}
if (i == 21) {
Serial1.print("Could not connect to"); Serial1.println(ssid);
while (1) {
delay(500);
}
}
//start UART and the server
Serial.begin(115200);
server.begin();
server.setNoDelay(true);

Serial1.print("Ready! Use 'telnet ");
Serial1.print(WiFi.localIP());
Serial1.println(" 23' to connect");
}

void loop() {
uint8_t i;
//check if there are any new clients
if (server.hasClient()) {
for (i = 0; i < MAX_SRV_CLIENTS; i++) {
//find free/disconnected spot
if (!serverClients[i] || !serverClients[i].connected()) {
if (serverClients[i]) {
serverClients[i].stop();
}
serverClients[i] = server.available();
Serial1.print("New client: "); Serial1.print(i);
break;
}
}
//no free/disconnected spot so reject
if (i == MAX_SRV_CLIENTS) {
WiFiClient serverClient = server.available();
serverClient.stop();
Serial1.println("Connection rejected ");
}
}
//check clients for data
for (i = 0; i < MAX_SRV_CLIENTS; i++) {
if (serverClients[i] && serverClients[i].connected()) {
if (serverClients[i].available()) {
//get data from the telnet client and push it to the UART
while (serverClients[i].available()) {
Serial.write(serverClients[i].read());
}
}
}
}
//check UART for data
if (Serial.available()) {
size_t len = Serial.available();
uint8_t sbuf[len];
Serial.readBytes(sbuf, len);
//push UART data to all connected telnet clients
for (i = 0; i < MAX_SRV_CLIENTS; i++) {
if (serverClients[i] && serverClients[i].connected()) {
serverClients[i].write(sbuf, len);
delay(1);
}
}
}
}



versions nummer 2.4.2 die aktuellste

33569

- - - Aktualisiert - - -

ich benutze das ganz einfache esp01

33570

HaWe
12.08.2018, 17:50
ok, dazu kann ich dann nichts sagen, telnet kenn ich auch nicht.
Welche core-Version hast du jetzt?

ich könnte dir auch nur ein Beispielprogramm für ESP-12E (board nodemcu 1.0) anbieten, das bei mir läuft, auch mit fester IP.

Ferdinand
12.08.2018, 18:17
nodemcu 1.0 das habe ich auch eins aber da ist jetzt das selbe problem ich kann ja dien code mal testen

HaWe
12.08.2018, 19:23
nein, ich meine die core-Version. Die siehst du, wenn du im Boardverwalter das esp8266 auswählst, unter "Mehr Info" steht dann die Version.
Hatte ich auch erst nicht gefunden bei meinem eigenen nodemcu-Problem, und da kommt es auch auf die genaue Version an.

PS,
ach ja: welche Arduino-IDE Version benutzt du?

- - - Aktualisiert - - -

ok, 2.4.2, jetzt habe ichs entdeckt.
die 2.4.2 funktioniert bei mir nicht richtig.
Probier mal die 2.4.0 aus!

- - - Aktualisiert - - -

ansonsten kannst du auch mal diesen Beispielcode laden, um zu sehen, ob der ESP8266 im Router auftaucht:


#include <ESP8266WiFi.h>

const char* ssid = "Magesh";
const char* password = "jayakumar";

int ledPin = 13; // GPIO13
WiFiServer server(80);

void setup() {
Serial.begin(115200);
delay(10);

pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);

// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

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

// Start the server
server.begin();
Serial.println("Server started");

// Print the IP address
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");

}

void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}

// Wait until the client sends some data
Serial.println("new client");
while(!client.available()){
delay(1);
}

// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();

// Match the request

int value = LOW;
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, HIGH);
value = HIGH;
}
if (request.indexOf("/LED=OFF") != -1) {
digitalWrite(ledPin, LOW);
value = LOW;
}

// Set ledPin according to the request
//digitalWrite(ledPin, value);

// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");

client.print("Led pin is now: ");

if(value == HIGH) {
client.print("On");
} else {
client.print("Off");
}
client.println("<br><br>");
client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />");
client.println("</html>");

delay(1);
Serial.println("Client disonnected");
Serial.println("");

}


//--------------------------------------------------------------------
// END OF FILE
//--------------------------------------------------------------------




Im seriellen Monitor kannst du seine IP erkennen.

https://2.bp.blogspot.com/-CGIpvP584pM/VnQBt1OY5mI/AAAAAAAAAvU/DUuHZ5aQsV0/s640/perfect.PNG

- - - Aktualisiert - - -

für eine feste IP definierst du
IPAddress this_ip(192, 168, 2, 200); // <<< Feste lokale IP dieses ESP8266
IPAddress gateway(192, 168, 2, 1); // <<< LAN Router IP
IPAddress subnet(255, 255, 255, 0); // <<< LAN Subnet Mask

dann kommt der folgende Befehl nach WiFi.begin:
WiFi.begin(ssid, password);
WiFi.config(this_ip, gateway, subnet); // feste IP

Ferdinand
12.08.2018, 19:50
ok hab jetzt ein neues Problem gefunden die LED ist auf Gipo 16 und ist aber negiert das heißt bei LOW leuchtet die.

ich finde in aber immer noch nicht in meinem Router

HaWe
12.08.2018, 19:57
dann weiß ich auch nicht weiter O_o

Ferdinand
12.08.2018, 20:04
ok das mit der Festen IP funktioniert schon mal Vilen dank, mich wundert nur, warum der ESP nicht im Router auftaucht

HaWe
12.08.2018, 20:15
welche Geräte tauchen denn auf?
Liste sie mal auf - manchmal vergeben die Router komische ESP-Namen!

oder:
esp Stromversorgung aus -
10 sek warten
Router: Liste aktualisieren
alle Heimnetz clients aufschreiben

esp Stromversorgung ein-
10 sek warten
Router: Liste aktualisieren
alle Heimnetz clients aufschreiben

Dann beide Listen vergleichen

Ferdinand
12.08.2018, 22:22
Also mit fester IP finde ich in in der ARP Tabelle auch mit der MAC
nur eben im DHCP Mod taucht nichts auf Ist schon komisch den ich meine das ich ihn Mal gesehen habe als ich die Dinger neu bekommen hab und erste versuche damit begann,
zur Not bind ich im Router einfach die MAC mit der IP Dan kann ich sie immer finden und zuordnen.
Ist trotzdem komisch ich werde Mal dranbleiben und das Mal beobachten

- - - Aktualisiert - - -

Ok erst nach einem Ping erschein er in der DHCP Liste und jetzt geht es auch ohne Ping, was mich wundert die Kommunikation hat ohne Ping gut funktioniert aber er war nicht in der DHCP Liste erst nach dem ich in einmalig an gePingt habe ist er sicht bar geworden.

Ceos
13.08.2018, 05:24
ich hab mich nie zu sehr mit dem DHCP Protokoll beschäftigt, womöglich senden andere (übliche) Geräte einfach eine (man verzeihe mir den Ausdruck) Riesenscheißladung and Discovery Paketen und irgendwelchen Rummsbumms der von Apps und Crap auf dem Gerät gefunkt wird um nach Hause zu telefonieren, während dein fein säuberlich und spartanisch arbeitender ESP eben einfach nur sich in das WLAN einwählt und sonst wie ein wauwau da hockt und auf Befehle wartet.

Dein Router hat also den Handshake mitgemacht aber mehr auch nicht und deswegen dein Gerät vielleicht nicht erkannt :)

Könnte vll. auch eine Methode sein um Angriffe gegen den Router zu unterdrücken, vll. gibt es eine Methode mittels Replay Attacke oder so dem Rotuer falsche Clients unterzuschieben und damit der Router da kein Einfallstor ist, wartet er halt auf ein aktives (und verschlüsseltes, ergo nicht per Replay fakebares) PAket von dem Clienten bevor er ihn auch listet.

Hauptunterschied wird sein dass der ESP einfach zu brav ist denk ich, das nächste mal im Login-Script einfach einen Ping zum Router sobald der Status auf Connected ist, vielleicht hilft das :)


PS: was für ein Router issn das? Wenn das wirklich Methode hat würde mich das stark interessieren :D

Ferdinand
13.08.2018, 19:46
TP-Link Archer C20

Ceos
14.08.2018, 05:51
hahaha zu geil, den hab ich auch, werd ich heute mal versuchen zu verifizieren ... nachdem ich eines der wichtigsten Möbel in meiner Wohung zusammengeflickt habe ....

Ceos
15.08.2018, 16:06
mh .. bei mir taucht er auf ... seltsam