A rewrite of https://github.com/unifi-hackers/unifi-lab in cleaner Python.
sudo pip install -U unifi
The following small utilities are bundled with the API:
Lists the currently active clients on the networks. Takes parameters for controller, username, password.
jb@unifi:~ % unifi-ls-clients -c localhost -u admin -p p4ssw0rd
NAME MAC AP CHAN RSSI RX TX
client-kitchen 00:24:36:9a:0d:ab Study 100 51 300 216
jborg-mbp 28:cf:da:d6:46:20 Study 100 45 300 300
jb-iphone 48:60:bc:44:36:a4 Living Room 1 45 65 65
jb-ipad 1c:ab:a7:af:05:65 Living Room 1 22 52 65
Periodically checks all clients for low SNR values, and disconnects those who
fall below the limit. The point being that these clients will then try to
reassociate, hopefully finding a closer AP. Take the same parameters as above,
plus settings for intervals and SNR threshold. Use unifi-low-snr-reconnect -h
for an option summary.
A good source of understanding for RSSI/SNR values is this article. According to that, an SNR of 15 dB seems like a good cutoff, and that's also the default value in the script. You can set a higher value for testing:
jb@unifi:~ % unifi-low-snr-reconnect -c localhost -u admin -p p4ssw0rd --minsnr 30
2012-11-15 11:23:01 INFO unifi-low-snr-reconnect: Disconnecting jb-ipad/1c:ab:a7:af:05:65@Study (SNR 22 dB < 30 dB)
2012-11-15 11:23:01 INFO unifi-low-snr-reconnect: Disconnecting Annas-Iphone/74:e2:f5:97:da:7e@Living Room (SNR 29 dB < 30 dB)
For production use, launching the script into the background is recommended...
from unifi.controller import Controller
c = Controller('192.168.1.99', 'admin', 'p4ssw0rd')
for ap in c.get_aps():
print 'AP named %s with MAC %s' % (ap['name'], ap['mac'])
See also the scripts unifi-ls-clients
and unifi-low-rssi-reconnect
for more
examples of how to use the API.
Interact with a UniFi controller.
Uses the JSON interface on port 8443 (HTTPS) to communicate with a UniFi controller. Operations will raise unifi.controller.APIError on obvious problems (such as login failure), but many errors (such as disconnecting a nonexistant client) will go unreported.
Create a Controller object.
host
-- the address of the controller host; IP or nameusername
-- the username to log in withpassword
-- the password to log in with
Add a client to the block list.
mac
-- the MAC address of the client to block.
Disconnects a client, forcing them to reassociate. Useful when the connection is of bad quality to force a rescan.
mac
-- the MAC address of the client to disconnect.
Return a list of all AP:s, with significant information about each.
Return a list of all active clients, with significant information about each.
Return a list of configured WLANs with their configuration parameters.
Restart an access point (by MAC).
mac
-- the MAC address of the AP to restart.
Restart an access point (by name).
name
-- the name address of the AP to restart.
Remove a client from the block list.
mac
-- the MAC address of the client to unblock.
MIT