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

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 DeepSleep Reset unterscheiden N1d45 14 714 05.10.2020 05:01
Letzter Beitrag: N1d45
  7 Segmentanzeige Problem ESP8266 dani 43 1.419 28.09.2020 19:12
Letzter Beitrag: hotsystems
  ESP8266: ADC und Webserver stw 19 2.887 23.09.2020 01:03
Letzter Beitrag: Bitklopfer
  ESP8266 - MQTT Probleme mit SSL decrypt tenor 8 610 22.09.2020 19:33
Letzter Beitrag: tenor
  remoteIP() mit Client.h? miq19 6 539 11.09.2020 10:21
Letzter Beitrag: miq19
  ESP8266+PubSubClient und MQTT/ioBroker Arduino4Fun 10 6.241 08.09.2020 10:22
Letzter Beitrag: biologist
Lightbulb SPIFFS DOWNLOAD UPLOAD & DELETE Esp8266 NodeMCU Fips 31 24.755 05.09.2020 19:59
Letzter Beitrag: guenni71
  ESP8266 Datenlogger für Google Sheets xuino 3 565 31.08.2020 14:43
Letzter Beitrag: hotsystems
  Esp8266 GPIO default In- oder Out-put? N1d45 0 470 29.08.2020 06:58
Letzter Beitrag: N1d45
  WeMos D1 mini ESP8266 error: <bits/c++config.h> AnFi 17 5.337 27.08.2020 13:47
Letzter Beitrag: dna

Gehe zu:


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