A simple Python wrapper for the TP-Link Omada Software Controller API

ghaberek, updated 🕥 2023-03-17 05:43:01

Omada API

A simple Python wrapper for the TP-Link Omada Software Controller API.

Test Python versions


Currently this is just the bare-minimum required to log in, get site settings, push site settings, and log out.

``` from omada import Omada

load our local config file

omada = Omada('omada.cfg')

or specify the baseurl and site name directly

omada = Omada(baseurl='https://...', site='Office')

log into the controller (username and password are in omada.cfg)


or specify the username and password directly

omada.login(username='apiuser', password='secretpassword')

get the site settings

settings = omada.getSiteSettings()

turn the LEDs off

settings['led']['enable'] = False

push the settings back


log out of the controller

omada.logout() ```



I use this in a cron schedule to turn my site LED setting off at night and back on in the morning.

Turn the LED on:

$ python led.py on led: on Turn the LED off:

$ python led.py off led: off

clients.py, devices.py

These are simple apps to display similar output to the "Clients" and "Devices" page on the web interface.

$ python clients.py USERNAME IP ADDRESS STATUS 00-11-22-33-44-55 CONNECTED ...

Make sure you have your Settings file configured correctly for these to work.


You can store your controller settings in a configuration file to avoid hard-coding them in your scripts.

Currently supported settings:

  • baseurl - the base url to the controller
  • site - the name of the site in the controller (usually Default)
  • verify - set this to False to ignore self-signed certificate errors
  • warnings - set this to False to hide urllib3 warnings when verify=False
  • verbose - set this to True to force low-level reqeusts to output debugging info
  • username - the username to log in as
  • password - the password for the user


[omada] baseurl = https://omadacontroller.local:8043 site = Default verify = False username = apiuser password = secretpassword


For my wife, who asked that I turn off the device LEDs at night. :heart:


Add functionality to allow for uploading SSL certificates to Controller

opened on 2023-03-17 05:43:01 by jsestrich

I was looking for a way to automate uploading new SSL certificates to my controller and found your API. I've been successfully using this code to update my SSL certificates on my controller, so I figured I'd contribute back what I added.

Tag the source

opened on 2022-11-12 11:04:47 by fabaff

In addition to #8 it would be nice to have tags as well. This would enable distributions who want to run your tests to fetch the package from GitHub instead of PyPI.


Publish to as Python Package to PyPI

opened on 2022-10-26 15:32:11 by warllo54

Hi. Any change you'd be willing to publish this to as a PyPI package?

Gregory Haberek
GitHub Repository