A WiFi sniffer can be very useful when testing the presence of a mobile phone or other device. The following example will return the MAC addresses of devices in range.
from network import WLAN
import ubinascii
def pack_cb(pack):
mac = bytearray(6)
pk = wlan.wifi_packet()
control = pk.data[0]
subtype = (0xF0 & control) >> 4
type = 0x0C & control
#print("Control:{}, subtype:{}, type:{}".format(control, subtype, type))
if subtype == 4:
for i in range (0,6):
mac[i] = pk.data[10 + i]
print ("Wifi Node with MAC: {}".format(ubinascii.hexlify(mac)))
wlan = WLAN(mode=WLAN.STA, antenna=WLAN.EXT_ANT)
wlan.callback(trigger=WLAN.EVENT_PKT_MGMT, handler=pack_cb)
wlan.promiscuous(True)