ESP v rezimu AP - zjistovani klientu

Milan B. milan na bastl.sk
Čtvrtek Listopad 23 12:32:05 CET 2017


Nebude tento kod fungovat nahodou len pre DHCP klientov (a vracat iba IP 
adresy klientom priradene DHCP, nie tie ktore tam su naozaj v pripade 
dodatocnej zmeny IP)

Pre klientov so statickou IP (a vlastne pre vsetkych) by sa IP mohla dat 
zistit podla MAC adresy z ARP tabulky, resp. ARP dotazmi.

Co som narychlo pozeral, ESP SDK neobsahuje funkcie pre pracu s ARP, 
zrejme by bolo treba preniknut SDK pod kozu a vyuzit ARP funkcie priamo 
z lwIP...  ale netusim ci sa to da a ako sa to da

-m-

On 11/23/2017 10:53 AM, hwnews konference wrote:
> 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 library
> extern  "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 point
> void  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  WiFiEventHandlere1;
>
>    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);
> }
>
> booleandeviceIP(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 <mailto: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 bywww.HW.cz <http://www.HW.cz>
>>     Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>>     http://list.hw.cz/mailman/listinfo/hw-list
>>     <http://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 <http://www.HW.cz>
>     Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>     http://list.hw.cz/mailman/listinfo/hw-list
>     <http://list.hw.cz/mailman/listinfo/hw-list>
>
>
>
>
> _______________________________________________
> 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 ---------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3980 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20171123/6ce26c0a/attachment.bin>


Další informace o konferenci Hw-list