ESP v rezimu AP - zjistovani klientu
hwnews konference
hwnews na cncnet.info
Čtvrtek Listopad 23 10:53:30 CET 2017
Pisu to v IDE Arduina a momnetalne tam mam pichnute ESP32.
Ted se mi podarilo najit tenhle kod tak to vyzkousim:
#include <ESP8266WiFi.h>// include plain C libraryextern "C" {
#include "user_interface.h"
}
#define YOUR_WIFI_SSID "******-******"
#define YOUR_WIFI_PASSWD "******-******"
boolean waitingDHCP=false;char last_mac[18];
// Manage incoming device connection on ESP access pointvoid
onNewStation(WiFiEventSoftAPModeStationConnected sta_info) {
Serial.println("New Station :");
sprintf(last_mac,"%02X:%02X:%02X:%02X:%02X:%02X", MAC2STR(sta_info.mac));
Serial.printf("MAC address : %s\n",last_mac);
Serial.printf("Id : %d\n", sta_info.aid);
waitingDHCP=true;
}
void setup() {
static WiFiEventHandler e1;
Serial.begin(115200);
Serial.println();
WiFi.mode(WIFI_AP_STA);
WiFi.begin(YOUR_WIFI_SSID, YOUR_WIFI_PASSWD);
// Event subscription
e1 = WiFi.onSoftAPModeStationConnected(onNewStation);
}
void loop() {
if (waitingDHCP) {
String cb;
if (deviceIP(last_mac,cb)) {
Serial.println("Ip address :");
Serial.println(cb); //do something
} else {
Serial.println("Problem during ip address request :");
Serial.println(cb); //do something else
}
}
delay(2000);
}
boolean deviceIP(char* mac_device, String &cb) {
struct station_info *station_list = wifi_softap_get_station_info();
while (station_list != NULL) {
char station_mac[18] = {0}; sprintf(station_mac,
"%02X:%02X:%02X:%02X:%02X:%02X", MAC2STR(station_list->bssid));
String station_ip = IPAddress((&station_list->ip)->addr).toString();
if (strcmp(mac_device,station_mac)==0) {
waitingDHCP=false;
cb = station_ip;
return true;
}
station_list = STAILQ_NEXT(station_list, next);
}
wifi_softap_free_station_info();
cb = "DHCP not ready or bad MAC address";
return false;
}
Dne 23. listopadu 2017 10:35 Jaroslav Buchta <jaroslav.buchta na hascomp.cz>
napsal(a):
> Dne 23.11.2017 v 10:30 hwnews konference napsal(a):
>
> Zdravim,
>
> vcera jsem prohlizel dokumentaci knihovny Wifi pro ESP a nejak v ni
> nevidim jak nejak jednoduse zjistit na jakych IP sedi klienti do AP
> prihlaseni.
>
> Je tam metoda jak zjistit jejich pocet, ale ne kde jsou...aspon to
> nevidim. A take jsem zatim nenasel jakym zpusobem AP v ESP prideluje IP
> adresy klientum.
>
> Libilo by se mi, kdybych cas od casu mohl vylistovat seznam klientu, abych
> jej mohl porovnat s aktualnim stavem a ty co pribyly mohl zacit vycitat.
>
> Takhle by mi nezbylo nez projizdet celej subnet a zkouset zda se neco ozve
>
> RV
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.czHw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>
> A v čem to programujete? Jedná se o ESP8266 nebo 32? U 8266 nevím jestli
> používá LWIP, pokud ano, mělo by to jít zjistit přes rozhraní této knihovny.
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20171123/de0f95fb/attachment.html>
Další informace o konferenci Hw-list