Switch light function

fetchIP
E. Almqvist 4 years ago
parent c211c617c2
commit aa69abaf52
  1. 39
      hue_controller.py

@ -3,16 +3,26 @@ import json # API uses JSON
import asyncio # ASync stuff import asyncio # ASync stuff
import config # Configuration for the controller (/config.py <- change this file) import config # Configuration for the controller (/config.py <- change this file)
LIGHTS = {} # dictionary of all the lights
loop = asyncio.get_event_loop() # ASync loop loop = asyncio.get_event_loop() # ASync loop
def genUrl(params: str): def genUrl(params: str):
return "http://" + config.address + "/api/" + config.username + params return "http://" + config.address + "/api/" + config.username + params
boolStr = {
True: "true",
False: "false"
}
StrBool = { # because doing something else is too expensive
"true": True,
"false": False
}
def boolToString(v: bool): # To fix the dumb python syntax def boolToString(v: bool): # To fix the dumb python syntax
if(v): return boolStr[v]
return "true"
else:
return "false"
class APIrequest: class APIrequest:
# Get Req # Get Req
@ -46,6 +56,7 @@ class APIrequest:
class controller: class controller:
async def getLights(): async def getLights():
return await APIrequest.get("/lights") return await APIrequest.get("/lights")
@ -53,9 +64,25 @@ class controller:
return await APIrequest.get( "/lights/" + str(index) ) return await APIrequest.get( "/lights/" + str(index) )
async def toggleLight(index: int=1, isOn: bool=True): async def toggleLight(index: int=1, isOn: bool=True):
await APIrequest.put( "/lights/1/state", '{"on":' + boolToString(isOn) + '}' ) await APIrequest.put( "/lights/" + str(index) + "/state", '{"on":' + boolToString(isOn) + '}' )
def switchLight( index: int=1 ):
key = LIGHTS.get(str(index))
if(key):
if( key.get(state) ):
loop.run_until_complete( controller.toggleLight( index, boolToString(StrBool[LIGHTS[str(index)]["state"]["on"]]) ) )
else:
print("Error: Light index out of range")
def init():
jsonLights = loop.run_until_complete(APIrequest.get("/lights"))
global LIGHTS
LIGHTS = json.loads(jsonLights.text)
print(LIGHTS)
def testReq(): def testReq():
loop.run_until_complete( controller.toggleLight(1, True) ) # try to turn on/off a light controller.init()
controller.switchLight( 1 )
# loop.run_until_complete( controller.toggleLight(1, True) ) # try to turn on/off a light
loop.close() loop.close()

Loading…
Cancel
Save