From cf17479e1110c3a6d05032a0194f92a6919d1a31 Mon Sep 17 00:00:00 2001 From: charithag Date: Fri, 2 Aug 2024 10:59:39 +0530 Subject: [PATCH] Add options to make WAN port Internet State enable or disable --- internet-status.py | 31 +++++++++++++++++++++++++++++++ omada/omada.py | 17 +++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 internet-status.py diff --git a/internet-status.py b/internet-status.py new file mode 100644 index 0000000..35a53e8 --- /dev/null +++ b/internet-status.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 + +import sys +from omada import Omada + +def main(): + if len(sys.argv) < 2 or (len(sys.argv) > 1 and sys.argv[1] not in ('enable','disable')): + print( f"usage: {sys.argv[0]} [enable|disable]" ) + return + + omada = Omada() + omada.login() + + devices = omada.getSiteDevices() + if len(devices) > 0: + gateway = next((device for device in devices if device['type'] == 'gateway'), None) + print(f"Selected gateway: {gateway}") + if gateway: + mac = gateway['mac'] + else: + print( 'No gateway device found' ) + return + + omada.setInternetStatus(mac=mac, port_id=1, enable=sys.argv[1] == 'enable') + gateway = omada.getGatewayDevice(mac=mac) + print( f'Updated gateway: {gateway}' ) + + omada.logout() + +if __name__ == '__main__': + main() diff --git a/omada/omada.py b/omada/omada.py index fad4ca0..f1d1ef2 100644 --- a/omada/omada.py +++ b/omada/omada.py @@ -590,3 +590,20 @@ def getWirelessGroups(self, site=None): ## def getWirelessNetworks(self, group, site=None): return self.__get( f'/sites/{self.__findKey(site)}/setting/wlans/{group}/ssids' ) + + ## + ## Returns the gateway device specified by the MAC address. + ## + ## This is a Gateway device listed on Device List. + ## + def getGatewayDevice(self, mac, site=None): + return self.__get( f'/sites/{self.__findKey(site)}/gateways/{mac}' ) + + ## + ## Control the internet status of a WAN port in a gateway device specified by the MAC address. + ## + ## enable = True, Make WAN port connected. + ## enable = False, Make WAN port disconnected. + ## + def setInternetStatus(self, mac, port_id, enable, site=None): + return self.__post( f'/sites/{self.__findKey(site)}/cmd/gateways/{mac}/internetState', json={'portId': port_id, 'operation': 1 if enable else 0} ) \ No newline at end of file