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 core for Arduino 2.7.0 Fips 15 2.223 09.07.2020 07:01
Letzter Beitrag: Fips
  Erster Versuch mit "ESP8266 NodeMCU V3" Mathias 6 664 03.07.2020 18:14
Letzter Beitrag: Mathias
  ESP8266 (Wemos D1 Mini) - WifiManager und TimerInterrupt fiberman 10 1.115 30.06.2020 06:24
Letzter Beitrag: amithlon
  ESP8266: Power Loss erkennen und kontrolliert abschalten stw 12 1.487 21.06.2020 22:56
Letzter Beitrag: stw
  ESP8266: ADC und Webserver stw 13 1.349 21.06.2020 20:16
Letzter Beitrag: Tommy56
  ESP8266 im Betrieb zeitweise nicht mehr zu erreichen Faror 4 603 13.06.2020 18:10
Letzter Beitrag: elux011
  ESP8266 DHT22,SDS011, MYSQL Datenbank und veröffentlichen von Live werten. Bilderberg2020 15 1.582 07.06.2020 15:18
Letzter Beitrag: Tommy56
  ESP8266 Mobil mit Akku Gurke258 16 1.763 05.06.2020 09:28
Letzter Beitrag: rev.antun
  ESP8266 Democode bi-directional send / receive using ESP-NOW StefanL38 10 1.531 19.05.2020 16:23
Letzter Beitrag: Fips
  ESP8266 Reset Button ? Nicole 16 1.750 18.05.2020 11:33
Letzter Beitrag: N1d45

Gehe zu:


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