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")