Usage
Basic Usage
To use the UniFi Controller API:
from unifi_controller_api import UnifiController
# Initialize the client with your controller's details
controller = UnifiController(
host="unifi.example.com",
username="admin",
password="password",
port=8443,
verify_ssl=True
)
# Get a list of sites
sites = controller.get_unifi_site()
# Get site ID (usually "default")
site_id = sites[0].name
# Get devices at a site
devices = controller.get_unifi_site_device(site_id)
# Get clients connected to a site
clients = controller.get_unifi_site_client(site_id)
# Display client information
for client in clients:
print(f"Client: {client.name}, MAC: {client.mac}, IP: {client.ip}")
Working with Models
The API returns data as model objects with properties:
# Working with site model
site = sites[0]
print(f"Site name: {site.description}, ID: {site.name}")
# Working with device model
device = devices[0]
print(f"Device: {device.name}, Model: {device.model}, Status: {device.state}")
# Working with client model
client = clients[0]
print(f"Client: {client.name}, MAC: {client.mac}, IP: {client.ip}")
Exporting Data
You can export data to different formats:
from unifi_controller_api.export import export_to_json, export_to_csv
# Export devices to JSON
export_to_json(devices, "devices.json")
# Export clients to CSV
export_to_csv(clients, "clients.csv")
Error Handling
Handle API errors:
from unifi_controller_api.exceptions import UnifiLoginError, UnifiConnectionError
try:
controller = UnifiController(
host="unifi.example.com",
username="admin",
password="incorrect",
port=8443,
verify_ssl=True
)
except UnifiLoginError:
print("Login failed - check credentials")
except UnifiConnectionError:
print("Connection failed - check host and port")