ESP v rezimu AP - zjistovani klientu
Tomáš Koželuh
mr.death na ipq.cz
Čtvrtek Listopad 23 11:10:20 CET 2017
Nepotřebuje ESP32 jinou knihovnu? Omylem jsem dvě koupil, mají být lepší než 8266 a současně jsem našel, že je potřeba jiná knihovna.
Pokud by měl někdo zájem, tak je klidně vyměním, vše mám na ESP8266 a teď jsem rozšířil působnost na Arduino Nano + eth modul tam, kde nedosáhne wifi, ale výkon ESP32 je pro mě zbytečný a nevyužiju ho. Navíc mám rád unifikované prostředí, abych nemusel přemýšlet, co kam nahrát a jestli to vůbec pojede.
> -----Original Message-----
> From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of hwnews konference
> Sent: Thursday, November 23, 2017 10:54 AM
> To: HW-news
> Subject: Re: ESP v rezimu AP - zjistovani klientu
>
> 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 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.cz
> 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
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list <http://list.hw.cz/mailman/listinfo/hw-
> list>
>
>
>
Další informace o konferenci Hw-list