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