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