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 IPv6 Fips 1 91 Gestern 17:12
Letzter Beitrag: Fips
  Anschluss CMOS Kamera an ESP8266 Stargazer 16 5.743 18.01.2020 17:33
Letzter Beitrag: Falke07
  ESP8266+PubSubClient und MQTT/ioBroker Arduino4Fun 8 831 14.01.2020 14:34
Letzter Beitrag: biologist
  ESP8266-myClock Displayproblem icepick72 18 1.756 12.01.2020 22:28
Letzter Beitrag: icepick72
  ESP8266 als Aktor SHesse 7 287 12.01.2020 18:31
Letzter Beitrag: SHesse
  Kann ein ESP8266 (ESP-12F) I2C Slave sein? ardu_arne 15 675 12.01.2020 15:32
Letzter Beitrag: ardu_arne
  Welche Firmware für ESP8266 (ESP-01)? hasch 28 1.273 09.01.2020 10:49
Letzter Beitrag: hasch
  STA und AP-Mode beim ESP8266 uk1408 19 765 05.01.2020 08:17
Letzter Beitrag: Fips
  OTA ESP8266 VolkerB 17 801 01.01.2020 12:21
Letzter Beitrag: VolkerB
  ESP8266 core for Arduino 2.6.0 - 2.6.1 Fips 9 1.210 18.12.2019 19:15
Letzter Beitrag: amithlon

Gehe zu:


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