ESP-01 scan dei device connessi alla LAN

Ciao a tutti,

sono diversi giorni che sto cercando di realizzare con l'ESP8266 un modulo di rilevazione presenza smart, ossia verificare ogni tot minuti quali dei nostri cellulari è collegato alla rete domestica.
Ho provato con il ping ma quando i cellulari non sono in uso non rispondono al ping.
Ho cercato varie alternative ma non sono venuto a capo di nulla, in quanto le tracce che ho trovato (es. arp cache) sono troppo complicate da mettere in pratica per i miei skill (sdk, firmware ecc)
La soluzione che sarei in grado di utilizzare è quella di pubblicare un tweet con IFTTT dai cellulari che entrano o escono di casa, e con client twitter sull'ESP-01 avrei l'informazione ma è una soluzione macchinosa e "sporca".
Qualcuno sarebbe così gentile da mettere un volenteroso ignorante sulla giusta strada? C'è un modo per accedere alla cache ARP (ad esempio) senza iscriversi a una facoltà universitaria? :slight_smile:
grazie fin da ora.

La cosa ha incuriosito anche me ma non ho trovato risposta. Nel forum espressif c'è una domanda analoga ma non ha risposto nessuno.
Ho trovato solo questo post
https://forum.arduino.cc/index.php?topic=423460.0
dove c'è un link ad un progetto di Ray Burnette che usa la tecnica di sniffare il traffico Wifi invece di una scansione della rete.
Il progetto è questo
https://www.hackster.io/rayburne/esp8266-mini-sniff-f6b93a

Il Ping probabilmente non funziona bene perché è possibile che gli smartphone vadano in basso consumo e disattivino temporaneamente la connessione WiFi.
Del resto nella maggiornanza dei dispositivi android hai dei servizi che si connettono loro e nessuno che invece rimane in ascolto.

La parte arp dell'ESP8266 sta in questo file
https://github.com/esp8266/Arduino/blob/master/tools/sdk/lwip/src/netif/etharp.c
probilmente potresti fare una scansione di tutti gli ip vedendo cosa fa questa funzione

etharp_find_addr(struct netif *netif, ip_addr_t *ipaddr,
         struct eth_addr **eth_ret, ip_addr_t **ip_ret)

Oppure scansionare l'array arp_table[]

Io non so come fare se no lo avrei scritto qui.