Revert "Made code pep8 compliant"

This reverts commit 38077b155d.
pull/3/head
Alve Svarén 5 years ago
parent 1d336f5767
commit e7e5ed2bb8
  1. 2
      CONTRIBUTING.md
  2. 270
      hue_remote/hue_controller.py
  3. 144
      hue_remote/hue_remote.py
  4. 11
      hue_remote/lib/func.py
  5. 4
      hue_remote/presets.py
  6. 43
      speech/speech.py

@ -6,6 +6,6 @@
- Make actual quality PRs, no +1 etc. - Make actual quality PRs, no +1 etc.
## General format rules ## General format rules
- Use SPACES for indentation. - Use TABS for indentation.
- Try to follow the layout of the code. - Try to follow the layout of the code.
- Follow the file structure, don't deviate from it. - Follow the file structure, don't deviate from it.

@ -1,158 +1,152 @@
import requests as req # Used for HTTP requests for the Hue API import requests as req # Used for HTTP requests for the Hue API
import json # API uses JSON import json # API uses JSON
import asyncio # ASync stuff import asyncio # ASync stuff
import time import time
from lib.func import * # useful functions from lib.func import * # useful functions
# Configuration for the controller (/config.py <- change this file) import config # Configuration for the controller (/config.py <- change this file)
import config from presets import * # presets for the lights
from presets import * # presets for the lights
LIGHTS = {} # dictionary of all the lights 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
class APIrequest: class APIrequest:
# Get Req # Get Req
async def get(dest: str = "", payload: str = ""): async def get( dest: str="", payload: str="" ):
try: try:
apiReq = req.get(genUrl(dest), data=payload) apiReq = req.get( genUrl(dest), data = payload )
if(apiReq.status_code != 200): # print out the error if the status code is not 200 if( apiReq.status_code != 200 ): # print out the error if the status code is not 200
print(apiReq) print(apiReq)
print(apiReq.text) print(apiReq.text)
return apiReq return apiReq
except req.exceptions.RequestException as err: except req.exceptions.RequestException as err:
print(err) print(err)
# PUT Req # PUT Req
async def put(dest: str = "", payload: str = ""): async def put( dest: str="", payload: str="" ):
try: try:
apiReq = req.put(genUrl(dest), data=payload) # send the payload apiReq = req.put( genUrl(dest), data = payload ) # send the payload
if(apiReq.status_code != 200): if( apiReq.status_code != 200 ):
print(apiReq) print(apiReq)
print(apiReq.text) print(apiReq.text)
return apiReq return apiReq
except req.exceptions.RequestException as err: except req.exceptions.RequestException as err:
print(err) print(err)
class controller: class controller:
# Internal get functions # Internal get functions
async def getLights(): async def getLights():
return await APIrequest.get("/lights") return await APIrequest.get("/lights")
async def getLight(index: int = 1): async def getLight(index: int=1):
return await APIrequest.get("/lights/" + str(index)) return await APIrequest.get( "/lights/" + str(index) )
# Lower level light manipulation (async) # Lower level light manipulation (async)
async def toggleLight(index: int = 1, isOn: bool = True): async def toggleLight(index: int=1, isOn: bool=True):
await APIrequest.put("/lights/" + str(index) + "/state", '{"on":' + boolToString(isOn) + '}') await APIrequest.put( "/lights/" + str(index) + "/state", '{"on":' + boolToString(isOn) + '}' )
async def toggleLights(isOn: bool = True): async def toggleLights(isOn: bool=True):
for key in LIGHTS: for key in LIGHTS:
await controller.toggleLight(key, isOn) await controller.toggleLight(key, isOn)
async def setLightRGB(index: int, r: int, g: int, b: int): async def setLightRGB( index: int, r:int, g:int, b:int ):
h, s, v = rgbToHsv(r, g, b) h, s, v = rgbToHsv(r, g, b)
payload = '{"sat":' + str(s) + ', "bri":' + \ payload = '{"sat":' + str(s) + ', "bri":' + str(v) + ', "hue":' + str(h) + '}'
str(v) + ', "hue":' + str(h) + '}'
await APIrequest.put( "/lights/" + str(index) + "/state", payload )
await APIrequest.put("/lights/" + str(index) + "/state", payload)
# Normal functions
# Normal functions def switchLight( index: int=1 ):
def switchLight(index: int = 1): key = LIGHTS.get(str(index))
key = LIGHTS.get(str(index)) if(key):
if(key): if( key.get("state") ):
if(key.get("state")): curPower = LIGHTS[str(index)]["state"]["on"]
curPower = LIGHTS[str(index)]["state"]["on"] loop.run_until_complete( controller.toggleLight(index, not curPower))
loop.run_until_complete( else:
controller.toggleLight(index, not curPower)) print("Error: Light index '" + str(index) + "' out of range")
else:
print("Error: Light index '" + str(index) + "' out of range") def switchLights():
for key in LIGHTS:
def switchLights(): controller.switchLight(key)
for key in LIGHTS:
controller.switchLight(key) # Light control
def setLightColor( index:int, r:int, g:int, b:int ):
# Light control if( LIGHTS.get(str(index)) ):
def setLightColor(index: int, r: int, g: int, b: int): loop.run_until_complete( controller.setLightRGB(index, r, g, b) )
if(LIGHTS.get(str(index))): else:
loop.run_until_complete(controller.setLightRGB(index, r, g, b)) print("Error: Light index '" + str(index) + "' out of range")
else:
print("Error: Light index '" + str(index) + "' out of range") def setLightBrightness( index:int, b:int ):
if( LIGHTS.get(str(index)) ):
def setLightBrightness(index: int, b: int): payload = '{"bri":' + str(b) + '}'
if(LIGHTS.get(str(index))): loop.run_until_complete( APIrequest.put( "/lights/" + str(index) + "/state", payload ) )
payload = '{"bri":' + str(b) + '}' else:
loop.run_until_complete(APIrequest.put( print("Error: Light index '" + str(index) + "' out of range")
"/lights/" + str(index) + "/state", payload))
else: def setBrightness( b:int ):
print("Error: Light index '" + str(index) + "' out of range") for key in LIGHTS:
controller.setLightBrightness( key, b )
def setBrightness(b: int):
for key in LIGHTS: def setAllLightsColor( r:int, g:int, b:int ):
controller.setLightBrightness(key, b) for key in LIGHTS:
controller.setLightColor( key, r, g, b )
def setAllLightsColor(r: int, g: int, b: int):
for key in LIGHTS: def Power(isOn:bool=True): # Controlling the power of the lights
controller.setLightColor(key, r, g, b) loop.run_until_complete( controller.toggleLights(isOn) )
def Power(isOn: bool = True): # Controlling the power of the lights def powerLight( index:int, isOn:bool=True ):
loop.run_until_complete(controller.toggleLights(isOn)) loop.run_until_complete( controller.toggleLight( index, isOn ) )
def powerLight(index: int, isOn: bool = True): # Presets
loop.run_until_complete(controller.toggleLight(index, isOn)) def setLightPreset( index:int, p:str ):
if( LIGHTS.get(str(index)) ):
# Presets if( PRESETS.get(p) ):
def setLightPreset(index: int, p: str): preset = PRESETS[p]
if(LIGHTS.get(str(index))): r, g, b = preset["color"]
if(PRESETS.get(p)): brightness = preset["brightness"]
preset = PRESETS[p]
r, g, b = preset["color"] controller.setLightColor( index, r, g, b )
brightness = preset["brightness"] controller.setLightBrightness( index, brightness )
else:
controller.setLightColor(index, r, g, b) print("Error: Unknown preset '" + p + "'")
controller.setLightBrightness(index, brightness) else:
else: print("Error: Light index '" + str(index) + "' out of range")
print("Error: Unknown preset '" + p + "'")
else: def setPreset( presetID:str, index:int=-1 ):
print("Error: Light index '" + str(index) + "' out of range") if( PRESETS.get(presetID) ):
if( index == -1 ):
def setPreset(presetID: str, index: int = -1): for key in LIGHTS:
if(PRESETS.get(presetID)): controller.setLightPreset( key, presetID )
if(index == -1): else:
for key in LIGHTS: controller.setLightPreset( index, presetID )
controller.setLightPreset(key, presetID) else:
else: print("Error: Unknown preset '" + presetID + "'")
controller.setLightPreset(index, presetID)
else: def countLights():
print("Error: Unknown preset '" + presetID + "'") return len(LIGHTS)
def countLights(): # Controller "system" functions
return len(LIGHTS) def delay(n:int):
time.sleep(n)
# Controller "system" functions
def delay(n: int): def init():
time.sleep(n) jsonLights = loop.run_until_complete(APIrequest.get("/lights"))
def init(): global LIGHTS
jsonLights = loop.run_until_complete(APIrequest.get("/lights")) LIGHTS = json.loads(jsonLights.text)
global LIGHTS def end():
LIGHTS = json.loads(jsonLights.text) loop.close()
def end():
loop.close()

@ -3,111 +3,105 @@
import sys import sys
import hue_controller as hue # Actual controller import hue_controller as hue # Actual controller
cmd = "hue" cmd = "hue"
def help(): def help():
print("--Help page--") print("--Help page--")
print("'" + cmd + "' : Display this help page")
print("'" + cmd + " light (index)' ... : Specify light target, from 1-" +
str(hue.controller.countLights()))
print("'" + cmd + " lights' ... : Specify all lights\n")
print("--Commands--") print( "'" + cmd + "' : Display this help page" )
print("'on'/'off' : Turn light(s) on/off") print( "'" + cmd + " light (index)' ... : Specify light target, from 1-" + str(hue.controller.countLights()) )
print("'switch' : Switch the light(s) power") print( "'" + cmd + " lights' ... : Specify all lights\n" )
print("'set ...'")
print(" 'preset (preset ID)' : Set the preset (from presets.py)")
print(" 'color (red) (green) (blue)' : Set the color, from 0-255")
print(" 'brightness (brightness)' : Set the brightness, from 0-255")
print("\nExamples:\n'hue light 2 on' : Turn on light 2\n'hue lights set color 255 255 255' : Set all lights colors to white") print("--Commands--")
print( "'on'/'off' : Turn light(s) on/off" )
print( "'switch' : Switch the light(s) power" )
print( "'set ...'" )
print( " 'preset (preset ID)' : Set the preset (from presets.py)" )
print( " 'color (red) (green) (blue)' : Set the color, from 0-255" )
print( " 'brightness (brightness)' : Set the brightness, from 0-255" )
print("\nExamples:\n'hue light 2 on' : Turn on light 2\n'hue lights set color 255 255 255' : Set all lights colors to white")
boolConvert = { boolConvert = {
"on": True, "on": True,
"off": False "off": False
} }
# this is the most spaghetti-ish code I have ever written but it works # this is the most spaghetti-ish code I have ever written but it works
def parseCommand( cmd:list, pos:int, i=-1 ):
index = int(i)
try:
if( cmd[pos] == "on" or cmd[pos] == "off" ):
if( index == -1 ):
hue.controller.Power( boolConvert[cmd[pos]] )
else:
hue.controller.powerLight( index, boolConvert[cmd[pos]] )
def parseCommand(cmd: list, pos: int, i=-1): return
index = int(i)
try:
if(cmd[pos] == "on" or cmd[pos] == "off"):
if(index == -1):
hue.controller.Power(boolConvert[cmd[pos]])
else:
hue.controller.powerLight(index, boolConvert[cmd[pos]])
return elif( cmd[pos] == "switch" ):
if(index == -1):
hue.controller.switchLights()
else:
hue.controller.switchLight(index)
elif(cmd[pos] == "switch"): return
if(index == -1):
hue.controller.switchLights()
else:
hue.controller.switchLight(index)
return elif( cmd[pos] == "set" ):
if( cmd[pos+1] == "preset" ):
hue.controller.setPreset( cmd[pos+2], index )
return
elif(cmd[pos] == "set"): elif( cmd[pos+1] == "color" ):
if(cmd[pos+1] == "preset"): if( len(cmd) > pos+4 ):
hue.controller.setPreset(cmd[pos+2], index) r, g, b = int(cmd[pos+2]), int(cmd[pos+3]), int(cmd[pos+4])
return
elif(cmd[pos+1] == "color"): if( index == -1 ):
if(len(cmd) > pos+4): hue.controller.setAllLightsColor( r, g, b ) # this code is bad
r, g, b = int(cmd[pos+2]), int(cmd[pos+3]), int(cmd[pos+4]) else:
hue.controller.setLightColor( index, r, g, b )
if(index == -1): return
hue.controller.setAllLightsColor( else:
r, g, b) # this code is bad print("Error: Missing parameters")
else: help()
hue.controller.setLightColor(index, r, g, b)
return elif( cmd[pos+1] == "brightness" ):
else: if( len(cmd) > pos+2 ):
print("Error: Missing parameters") bri = int(cmd[pos+2])
help()
elif(cmd[pos+1] == "brightness"): if( index == -1 ):
if(len(cmd) > pos+2): hue.controller.setBrightness(bri)
bri = int(cmd[pos+2]) else:
hue.controller.setLightBrightness( index, bri )
if(index == -1): return
hue.controller.setBrightness(bri) help() # display help if function did nothing
else:
hue.controller.setLightBrightness(index, bri)
return except (RuntimeError, TypeError, NameError, IndexError) as err:
help() # display help if function did nothing help() # display the help page if parameters are missing (it will give out an IndexError)
print( "\n\nError: " + str(err) )
except (RuntimeError, TypeError, NameError, IndexError) as err:
help() # display the help page if parameters are missing (it will give out an IndexError)
print("\n\nError: " + str(err))
def parseCommandline(): def parseCommandline():
cmd = sys.argv cmd = sys.argv
if(len(cmd) > 1): if( len(cmd) > 1 ):
if(cmd[1] == "light"): if( cmd[1] == "light" ):
parseCommand(cmd, 3, cmd[2]) parseCommand( cmd, 3, cmd[2] )
elif(cmd[1] == "lights"): elif( cmd[1] == "lights" ):
parseCommand(cmd, 2) parseCommand( cmd, 2 )
else: else:
help() help()
def init(): def init():
hue.controller.init() # very important to initialize the controller hue.controller.init() # very important to initialize the controller
parseCommandline() parseCommandline()
hue.controller.end() # also to end it hue.controller.end() # also to end it
init() # actually call the init function init() # actually call the init function

@ -5,24 +5,19 @@ boolStr = {
False: "false" False: "false"
} }
def boolToString(v: bool): # To fix the dumb python syntax
def boolToString(v: bool): # To fix the dumb python syntax
return boolStr[v] return boolStr[v]
def rgbToDecimal( r:int, g:int, b:int ):
def rgbToDecimal(r: int, g: int, b: int):
return round(r/255, 1), round(g/255, 1), round(b/255, 1) return round(r/255, 1), round(g/255, 1), round(b/255, 1)
def svNumFix(n: float): def svNumFix(n: float):
return int(round(n*254, 0)) return int(round(n*254, 0))
def hueNumFix(n: float): def hueNumFix(n: float):
return int(round(n*65535, 0)) return int(round(n*65535, 0))
def rgbToHsv( r:int, g:int, b:int ):
def rgbToHsv(r: int, g: int, b: int):
R, G, B = rgbToDecimal(r, g, b) R, G, B = rgbToDecimal(r, g, b)
H, S, V = colorsys.rgb_to_hsv(R, G, B) H, S, V = colorsys.rgb_to_hsv(R, G, B)
return hueNumFix(H), svNumFix(S), svNumFix(V) return hueNumFix(H), svNumFix(S), svNumFix(V)

@ -30,8 +30,8 @@ PRESETS = {
"brightness": 255 "brightness": 255
}, },
"ice": { "ice" : {
"color": (80, 100, 255), "color": ( 80, 100, 255 ),
"brightness": 120 "brightness": 120
}, },

@ -1,39 +1,36 @@
import speech_recognition as sr import speech_recognition as sr
class sr_microphone(object): class sr_microphone(object):
recognizer = sr.Recognizer() recognizer = sr.Recognizer()
muted = True muted = True
def getInput(self): # use the object as a generator def getInput(self): # use the object as a generator
print("Awaiting input") print("Awaiting input")
if(not self.muted): if( not self.muted ):
try: try:
with sr.Microphone() as src: with sr.Microphone() as src:
self.recognizer.adjust_for_ambient_noise( self.recognizer.adjust_for_ambient_noise( src, duration=0.2 ) # adjust for ambient noise
src, duration=0.2) # adjust for ambient noise
audio = self.recognizer.listen(src) audio = self.recognizer.listen(src)
# Make audio -> text # Make audio -> text
# use googles recognizer and lower its output return (self.recognizer.recognize_google( audio )).lower() # use googles recognizer and lower its output
return (self.recognizer.recognize_google(audio)).lower()
except sr.RequestError as err: except sr.RequestError as err:
print("Unable to request results: {0}".format(err)) print("Unable to request results: {0}".format(err))
except sr.UnknownValueError as err: except sr.UnknownValueError as err:
print("Unknown Error: {0}".format(err)) print("Unknown Error: {0}".format(err))
def setMuted(self, setm: bool = True): def setMuted( self, setm: bool=True ):
self.muted = setm self.muted = setm
def switchMute(self): def switchMute( self ):
self.setMuted(not self.muted) self.setMuted( not self.muted )
# Small test # Small test
voice = sr_microphone() voice = sr_microphone()
voice.setMuted(False) voice.setMuted(False)
print(voice.getInput()) print( voice.getInput() )

Loading…
Cancel
Save