|
|
@ -10,24 +10,25 @@ from os.path import expanduser # to get the home dir |
|
|
|
|
|
|
|
|
|
|
|
homedir = expanduser("~") # get the home directory of the current user |
|
|
|
homedir = expanduser("~") # get the home directory of the current user |
|
|
|
|
|
|
|
|
|
|
|
IP_FETCH_URL = "https://discovery.meethue.com/" # returns the HUE bridges local IP |
|
|
|
IP_FETCH_URL = "http://discovery.meethue.com/" # returns the HUE bridges local IP |
|
|
|
|
|
|
|
|
|
|
|
LIGHTS = {} # dictionary of all the lights |
|
|
|
LIGHTS = {} # dictionary of all the lights |
|
|
|
CONFIG = {} # the configuration |
|
|
|
CONFIG = {} # the configuration |
|
|
|
PRESETS = {} # the presets |
|
|
|
PRESETS = {} # the presets |
|
|
|
PRE_URL = "" # prefix |
|
|
|
BRIDGE_ADDRESS = "" |
|
|
|
|
|
|
|
|
|
|
|
loop = asyncio.get_event_loop() # ASync loop |
|
|
|
loop = asyncio.get_event_loop() # ASync loop |
|
|
|
|
|
|
|
|
|
|
|
def genUrl(params: str): |
|
|
|
def genUrl(params: str): |
|
|
|
return PRE_URL + params |
|
|
|
return f"http://{BRIDGE_ADDRESS}/api/{CONFIG['username']}{params}" |
|
|
|
|
|
|
|
|
|
|
|
class APIrequest: |
|
|
|
class APIrequest: |
|
|
|
|
|
|
|
|
|
|
|
async def fetchBridgeIP(): |
|
|
|
def fetchBridgeIP(): |
|
|
|
try: |
|
|
|
try: |
|
|
|
apiReq = req.get(IP_FETCH_URL) |
|
|
|
apiReq = req.get(IP_FETCH_URL) |
|
|
|
return apiReq.json()["internalipaddress"] |
|
|
|
data = apiReq.json() |
|
|
|
|
|
|
|
return data[0]["internalipaddress"] |
|
|
|
|
|
|
|
|
|
|
|
except req.exceptions.RequestException as err: |
|
|
|
except req.exceptions.RequestException as err: |
|
|
|
print("Unable to fetch HUE Bridge IP!") |
|
|
|
print("Unable to fetch HUE Bridge IP!") |
|
|
@ -170,16 +171,12 @@ class controller: |
|
|
|
global PRESETS |
|
|
|
global PRESETS |
|
|
|
PRESETS = presets |
|
|
|
PRESETS = presets |
|
|
|
|
|
|
|
|
|
|
|
global PRE_URL |
|
|
|
global BRIDGE_ADDRESS |
|
|
|
PRE_URL = "https://" |
|
|
|
# If there is no address in the config then get it via the API |
|
|
|
|
|
|
|
if( "address" in CONFIG ): |
|
|
|
if( "address" in CONFIG ): # check if there is an address |
|
|
|
BRIDGE_ADDRESS = CONFIG["address"] |
|
|
|
PRE_URL += f"{CONFIG['address']}" |
|
|
|
else: |
|
|
|
else: # else then fetch it |
|
|
|
BRIDGE_ADDRESS = APIrequest.fetchBridgeIP() |
|
|
|
PRE_URL += APIrequest.fetchBridgeIP() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PRE_URL += f"/api/{CONFIG['username']}" # append the rest |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
jsonLights = loop.run_until_complete(APIrequest.get("/lights")) |
|
|
|
jsonLights = loop.run_until_complete(APIrequest.get("/lights")) |
|
|
|
global LIGHTS |
|
|
|
global LIGHTS |
|
|
|