Detecting WiFi clients on TP-LINK routers using Python and telnetlib
My router is a cheapo TP-LINK, but it does come with a "currently connected MAC addresses" page in the web interface so my first thought was using BeautifulSoup to do some parsing. Then I found references to a telnet interface.
Connecting to the Telnet interface I quickly found that the command "wlctl assoclistinfo" gave me this output:
Associated stations:4
Num Mac Address Time
1 F0:C1:F1:22:xx:xx 00:02:30:04
2 90:21:55:B0:xx:xx 01:02:20:26
3 00:0F:54:10:xx:xx 03:09:17:28
4 74:E1:B6:2C:xx:xx 30:04:37:48
Firing up Python and the telnetlib telnet-automation module meant that 10 minutes later I was printing comma-separated MAC addresses to the console using this snippet of code:
Finally, I am triggering this in my Raspberry Pi via a simple crontab entry:
* * * * * logger `python /home/pi/wlan_sensor/sense.py`
This gives me per-minute logging of WiFi clients, giving me the information I need to the first of my home-automation projects - turning on the lights when I get home.