Execute API calls to Omada Controller from python code
Project description
omada-client
Python client for Tp-Link Omada Controller (Omada Software Controller). Allows executing API calls to the Omada Controller from Python code.
Installation
pip install omada-client
Quick Start
Using direct credentials
from omada_client import OmadaClient
omada = OmadaClient(
"OMADA_DOMAIN", # URL of Omada WebUI
"OMADA_USER", # Username
"OMADA_PASSWORD", # Password
"SITE_ID" # Site identify (Optional. Default: First site in list)
)
Using environment variables
from dotenv import load_dotenv
import os
from omada_client import OmadaClient
load_dotenv()
omada = OmadaClient(
os.getenv("OMADA_DOMAIN"),
os.getenv("OMADA_USER"),
os.getenv("OMADA_PASSWORD"),
os.getenv("SITE_ID")
)
print(omada.get_devices())
Methods Reference
| Category | Method | Parameters | Description |
|---|---|---|---|
| WAN Ports | get_all_wan_ports() |
None | List all WAN ports |
get_wan_ports_by_name(name) |
name: str |
Get WAN port by name | |
get_wan_ports_by_desc(desc) |
desc: str |
Get WAN port by description | |
| Wireless | get_all_wlan() |
None | List all Wi-Fi networks |
get_wlan_by_ssid(ssid) |
ssid: str |
Get Wi-Fi network by SSID | |
| Static Routes | create_static_route(route_name, destinations, interface_id, next_hop_ip, enable=False, metricId=0) |
route_name: str, destinations: list[str], interface_id: str, next_hop_ip: str |
Create a single static route |
create_static_route_to_inteface_with_big_data(data_static_routes, interface_id, next_hop_ip, enable=False, metricId=0) |
data_static_routes: list, interface_id: str, next_hop_ip: str |
Create static routes from large data | |
| Devices & Clients | get_devices() |
None | List all devices |
get_clients() |
None | List all clients | |
get_client_by_mac(mac) |
mac: str |
Get client by MAC | |
get_client_by_ip(ip_address) |
ip_address: str |
Get client by IP | |
create_group_ip_v4(group_name, ip_v4_list) |
group_name: str, ip_v4_list: list[GroupMemberIpv4Model] |
Create new group IPv4 addresses | |
delete_ipv4_from_group_by_name(group_name, ip_v4) |
group_name: str, ip_v4: GroupMemberIpv4Model |
Remove IPv4 address from group by name | |
| Groups | get_all_groups() |
List all groups | |
get_group_by_id(id) |
id: str |
Get group port by ID | |
get_group_by_name(name) |
name: str |
Get group port by Name | |
| IP Assignment | set_client_fixed_address_by_mac(mac, ip_address=None) |
mac: str, ip_address: str |
Assign fixed IP by MAC |
set_client_fixed_address_by_ip(ip_address) |
ip_address: str |
Assign fixed IP by IP | |
set_client_dymanic_address_by_mac(mac) |
mac: str |
Assign dynamic IP by MAC |
Advanced Example
Create static routes from large data sets
from dotenv import load_dotenv
import os
from omada_client import OmadaClient
load_dotenv()
omada = OmadaClient(
os.getenv("OMADA_DOMAIN"),
os.getenv("OMADA_USER"),
os.getenv("OMADA_PASSWORD")
)
data = [
{"name": "group_1", "ips": "99.99.99.99/24, 88.88.88.88/24"},
{"name": "group_2", "ips": "99.99.99.99/24, 88.88.88.88/24"}
]
wan = omada.get_wan_ports_by_desc("openwrt")
omada.create_static_route_to_inteface_with_big_data(
data_static_routes=data,
interface_id=wan.port_uuid,
next_hop_ip=wan.wan_port_ipv4_setting.get("ipv4Static").get("gateway"),
enable=False
)
Notes
- Replace all IPs, MAC addresses, and credentials with real values.
- Environment variables help keep sensitive credentials out of code.
- Use badges above to quickly check test status and PyPI version.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
omada_client-1.2.16.tar.gz
(12.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file omada_client-1.2.16.tar.gz.
File metadata
- Download URL: omada_client-1.2.16.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c13127d2abab173948dc663abda577a2d4ac72a71e0fa0400bdfadf1c3d44e47
|
|
| MD5 |
3a17861459fa76d00625b3c70ccc27c3
|
|
| BLAKE2b-256 |
4c99bc1e3a771edb31f24f8153ab0410d901a669723759f3744948152e92e514
|
File details
Details for the file omada_client-1.2.16-py3-none-any.whl.
File metadata
- Download URL: omada_client-1.2.16-py3-none-any.whl
- Upload date:
- Size: 11.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ddbd479db6830066c39ab23bb5329c2c663a847f6269d7de22e09a2b4a59bc4
|
|
| MD5 |
6aedb55a35a344e5cc12c037c5c43a03
|
|
| BLAKE2b-256 |
35bb75eb26125c61170b0d8728c356bb1c6fb649d678e18677cc5d7a2f906001
|