INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
ESP8266 AP Mode, Client-IP feststellen
16.01.2020, 18:14 (Dieser Beitrag wurde zuletzt bearbeitet: 16.01.2020 18:16 von uk1408.)
Beitrag #1
ESP8266 AP Mode, Client-IP feststellen
Hallo,

ich bin mal wieder am WLAN probieren und schon wieder kommt eine Frage:
Ich habe einen AP und möchte wissen welche Clients (IP) sich angemeldet haben.
Folgender Sketch (den ich im WWW gefunden habe) läuft für den AP:
Code:
#include <ESP8266WiFi.h>

extern "C" {
#include<user_interface.h>
}

/* configuration  wifi */
const char *ssid = "Master1";
const char *pass = "12345678";

void setup() {
  delay(1000);
  Serial.begin(74880);
  Serial.println();
  Serial.print("Configuring access point...");

  WiFi.softAP(ssid, pass);

  IPAddress myIP = WiFi.softAPIP();

  Serial.print("AP IP address: ");
  Serial.println(myIP);
}

void loop() {
  delay(5000);
  client_status();
  delay(4000);
}

void client_status() {

  unsigned char number_client;
  struct station_info *stat_info;

  struct ip4_addr *IPaddress;
  IPAddress address;
  int i = 1;

  number_client = wifi_softap_get_station_num();
  stat_info = wifi_softap_get_station_info();

  Serial.print(" Total Connected Clients are = ");
  Serial.println(number_client);

  while (stat_info != NULL) {

    IPaddress = &stat_info->ip;
    address = IPaddress->addr;

    Serial.print("client= ");

    Serial.print(i);
    Serial.print(" IP adress is = ");
    Serial.print((address));
    Serial.print(" with MAC adress is = ");

    Serial.print(stat_info->bssid[0], HEX); Serial.print(" ");
    Serial.print(stat_info->bssid[1], HEX); Serial.print(" ");
    Serial.print(stat_info->bssid[2], HEX); Serial.print(" ");
    Serial.print(stat_info->bssid[3], HEX); Serial.print(" ");
    Serial.print(stat_info->bssid[4], HEX); Serial.print(" ");
    Serial.print(stat_info->bssid[5], HEX); Serial.print(" ");

    stat_info = STAILQ_NEXT(stat_info, next);
    i++;
    Serial.println();
  }
  delay(500);
}
Funktioniert auch prima, Ausgabe ist bei 2 Clients
Code:
Configuring access point...AP IP address: 192.168.4.1

Total Connected Clients are = 1
Total Connected Clients are = 1
client= 1 IP adress is = 192.168.4.2 with MAC adress is = EC FA BC 5E 54 FD
Total Connected Clients are = 1
client= 1 IP adress is = 192.168.4.2 with MAC adress is = EC FA BC 5E 54 FD
Total Connected Clients are = 2
client= 1 IP adress is = 192.168.4.2 with MAC adress is = EC FA BC 5E 54 FD
client= 2 IP adress is = 192.168.4.3 with MAC adress is = 74 DE 2B F 43 C8
Total Connected Clients are = 2
client= 1 IP adress is = 192.168.4.2 with MAC adress is = EC FA BC 5E 54 FD
client= 2 IP adress is = 192.168.4.3 with MAC adress is = 74 DE 2B F 43 C8
usw....

Code für den Client ist
Code:
#include <ArduinoOTA.h>

void setup()
{
  Serial.begin(74880);
  Serial.println("\n\nStart");
  ArduinoOTA.onStart([]() {
    Serial.println("OTA - Update");
  });

  ArduinoOTA.onEnd([]()
  {
    Serial.println("fertig...");
  });

  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total)
  {
    Serial.printf("\nProgress: % u % % \r", (progress / (total / 100)));
  });

  ArduinoOTA.setHostname("Slave");
  ArduinoOTA.setPassword("Slave");
  ArduinoOTA.begin();

  WiFi.disconnect();                                                // sicher getrennt
  WiFi.mode(WIFI_STA);                                              // Stations-Modus --> Esp8266 im Heimnetzwerk einloggen

  IPAddress addr(192, 168, 4, 10);
  IPAddress gateway(192, 168, 4, 1);
  IPAddress subnet(255, 255, 255, 0);
  IPAddress dns(192, 168, 4, 1);
//  WiFi.config(addr, dns, gateway, subnet);

  WiFi.begin("Master1", "12345678");                                 // einloggen
  Serial.println("STA-Mode, verbinden mit WLAN... ");
  int n = 0;
  while ((WiFi.status() != WL_CONNECTED) && (n <= 10))              // max. 10 Versuche
  {
    delay(2000);
    Serial.print(".");
    n++;
  }

  if (n <= 10)
  {

    Serial.print("\nverbunden, IP Addresse: ");
    Serial.println(WiFi.localIP());
  }
  else
  {
    WiFi.mode(WIFI_AP);                                             // Access-Point-Modus
    Serial.println("\nAchtung, kein Netz gefunden");
  }
  Serial.println("Setup fertig\n\n");
}

void loop()
{
  ArduinoOTA.handle();
  delay(10);
}

Soweit so gut. Wenn ich jetzt aber die Zeile 32
// WiFi.config(addr, dns, gateway, subnet);
wieder reinnehme bekommt der Client die IP 192.168.4.10 fest zugewiesen, aber im Monitor des Master kommt nur noch der Laptop (.4.3), der ESP verschwindet.

Code:
Total Connected Clients are = 2
client= 1 IP adress is = 192.168.4.3 with MAC adress is = 74 DE 2B F 43 C8
Total Connected Clients are = 2

Geht das nur wenn der AP DHCP macht oder weiß jemand wie das doch geht ?

Viele Grüße

Uwe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.01.2020, 18:18 (Dieser Beitrag wurde zuletzt bearbeitet: 16.01.2020 18:37 von Tommy56.)
Beitrag #2
RE: ESP8266 AP Mode, Client-IP feststellen
Wenn Du dem Client eine feste IP verpasst, meldet er sich nicht mehr per DHCP beim AP an und der AP weiß nichts von ihm.
Das ist auch im Heimnetz so.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.01.2020, 19:11
Beitrag #3
RE: ESP8266 AP Mode, Client-IP feststellen
(16.01.2020 18:18)Tommy56 schrieb:  Das ist auch im Heimnetz so.

Gruß Tommy
Danke... aber meine FRITZ-Box kennt die Client-IP mit und ohne Zeile 32. Mit der Zeile 32 kennt er sogar den Namen (Slave), ohne heißt er nur ESP-5E54FD.

Aber wenn es nicht geht dann geht die Welt auch nicht unter....

Viele Grüße

Uwe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.01.2020, 19:34 (Dieser Beitrag wurde zuletzt bearbeitet: 16.01.2020 19:34 von Tommy56.)
Beitrag #4
RE: ESP8266 AP Mode, Client-IP feststellen
Bei meiner ist es umgekehrt (7490). Bei DHCP kennt sie den Hostnamen und die IP, bei direkter Zuweisung nicht.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.01.2020, 21:01 (Dieser Beitrag wurde zuletzt bearbeitet: 16.01.2020 21:03 von uk1408.)
Beitrag #5
RE: ESP8266 AP Mode, Client-IP feststellen
ja, das sind so die Kleinigkeiten die einen dann erfreuen....

Vielleicht hast du mir trotzdem einen Tipp:
Ich bastle gerade an einer "Mini-Lichtsteuerung", eine Beleuchtung soll eine andere Steuern. Beleuchtung 1 gibt dabei den Ablauf vor, beide sollen auch noch über WLAN geschaltet werden können.
Also Nr. 1 schaltet ihr Licht ein und schickt an Nr. 2 einen Licht-ein-Befehl. Irgendwann später macht Licht 1 aus und sendet Licht-aus an Nr. 2. Alle 24 Std. wiederholt sich das. Jetzt kann ich mit Rechner via WLAN zur Nr. 1 verbinden und dort die Zeiten einstellen, aber auch quasi "von Hand" ein-oder ausschalten, dabei wird die Nr. 2 auch ein- oder ausgeschaltet. Via Nr.1 kann ich auch auf Nr. 2 zugreifen (war ja das Thema des letzten Threats) und nur dort ein/ausschalten.
Das mache ich jetzt mit einer festen IP bei Nr. 2, Nr. 1 hat ja die 192.168.4.1.

Jetzt wollte ich das mit DHCP am AP machen, aber wie kann der AP unterscheiden welches der Nr. 2 - ESP und welches ich mit den Rechner/Smartphone bin? Die Nr. 1 muss ja wissen zu welcher IP die Befehle gehen sollen.

Viele Grüße

Uwe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.01.2020, 21:05
Beitrag #6
RE: ESP8266 AP Mode, Client-IP feststellen
Über die MAC Adresse!!

Gruß Fips

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.01.2020, 21:12
Beitrag #7
RE: ESP8266 AP Mode, Client-IP feststellen
Aber woher weiß ich (bzw. der AP) wer welche MAC-Adresse hat? Oder ich muss die irgendwo eintragen, aber dann kann ich auch Adressen vorgeben....
Irgendwie laufe ich im Kreis herum...

(16.01.2020 21:05)Fips schrieb:  Über die MAC Adresse!!

Gruß Fips

Viele Grüße

Uwe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.01.2020, 21:27
Beitrag #8
RE: ESP8266 AP Mode, Client-IP feststellen
Irgendwelche Festlegungen musst Du schon treffen, wer 1 und wer 2 ist. Egal auf welchem Weg (Feste IP ist die nach meiner Meinung einfachste).
Von allein weiß das der arme MC nicht.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP8266-12E & Pullup I2C rev.antun 32 852 Heute 12:47
Letzter Beitrag: rev.antun
  Abgespeckter Sketch für ESP8266 -WLAN Anbindung / Anfänger mizieg 7 286 26.02.2021 17:45
Letzter Beitrag: N1d45
  ESP8266 OTA und Verwendung von TXD0/RXD0 rev.antun 27 849 22.02.2021 19:43
Letzter Beitrag: hotsystems
  GPS-Synchronisierung mit NodeMCU-ESP8266 Floke4 3 202 22.02.2021 19:33
Letzter Beitrag: rev.antun
  esp8266 zu html gk_1 9 402 19.02.2021 19:41
Letzter Beitrag: Tommy56
  ESP8266 SD CSV Datei Zeilen rückwärtz RobertHQ 7 406 14.02.2021 19:29
Letzter Beitrag: Corvus
  ESP32 Mail Client stefan.hild@t-online.de 20 1.190 06.02.2021 22:16
Letzter Beitrag: Corvus
  ESP8266 Webserver nach Zeit nicht mehr verfügbar. ESPWolf 21 1.936 02.02.2021 17:54
Letzter Beitrag: Tommy56
  ESP8266 - DLNA, Chromecast, Firestick & YouTube rev.antun 8 732 27.01.2021 21:31
Letzter Beitrag: nbk83
  Fernbedienung mit ESP8266 hardyy 3 458 27.01.2021 08:34
Letzter Beitrag: hardyy

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste