From 62b7cbbeabfda1ee24276f29881bcc7b3a0531b4 Mon Sep 17 00:00:00 2001 From: "E. Almqvist" Date: Tue, 6 Oct 2020 21:50:58 +0200 Subject: [PATCH] Added new config system --- default-config.json | 9 +++++++ default-presets.json | 41 ++++++++++++++++++++++++++++++++ modules/configloader/__init__.py | 1 + modules/configloader/__main__.py | 0 modules/configloader/loader.py | 12 ++++++++++ modules/hue/hue_controller.py | 26 ++++++++++++++++---- setup.sh | 7 ++++++ 7 files changed, 91 insertions(+), 5 deletions(-) create mode 100644 default-config.json create mode 100644 default-presets.json create mode 100644 modules/configloader/__init__.py create mode 100644 modules/configloader/__main__.py create mode 100644 modules/configloader/loader.py create mode 100755 setup.sh diff --git a/default-config.json b/default-config.json new file mode 100644 index 0000000..fd226bd --- /dev/null +++ b/default-config.json @@ -0,0 +1,9 @@ +{ + "hue": { + "address": "", + "username": "" + }, + "speech": { + "device_index": 30 + } +} diff --git a/default-presets.json b/default-presets.json new file mode 100644 index 0000000..619e55e --- /dev/null +++ b/default-presets.json @@ -0,0 +1,41 @@ +{ + "default": { + "color": {178, 199, 255}, + "brightness": 255 + }, + + "dim": { + "color": {178, 199, 255}, + "brightness": 111 + }, + + "dim": { + "color": {178, 199, 255}, + "brightness": 80 + }, + + "red": { + "color": {255, 0, 0}, + "brightness": 255 + }, + + "green": { + "color": {0, 255, 0}, + "brightness": 255 + }, + + "blue": { + "color": {0, 0, 255}, + "brightness": 255 + }, + + "ice" : { + "color": {80, 100, 255}, + "brightness": 120 + }, + + "sleep": { + "color": {185, 155, 25}, + "brightness": 60 + } +} diff --git a/modules/configloader/__init__.py b/modules/configloader/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/modules/configloader/__init__.py @@ -0,0 +1 @@ + diff --git a/modules/configloader/__main__.py b/modules/configloader/__main__.py new file mode 100644 index 0000000..e69de29 diff --git a/modules/configloader/loader.py b/modules/configloader/loader.py new file mode 100644 index 0000000..802520d --- /dev/null +++ b/modules/configloader/loader.py @@ -0,0 +1,12 @@ +import json + +def readconfig(path): + #try: + with open(path) as cfg: + data = json.load(cfg) + + return data + + #except: + #print("[Error] Something went wrong reading the configuration file.") + #print("--", path) diff --git a/modules/hue/hue_controller.py b/modules/hue/hue_controller.py index 629fd1e..bbc1b4a 100644 --- a/modules/hue/hue_controller.py +++ b/modules/hue/hue_controller.py @@ -5,15 +5,20 @@ import time from .lib.func import * # useful functions -from .config import * # Configuration for the controller (/config.py <- change this file) -from .presets import * # presets for the lights +from modules.configloader.loader import readconfig # used to read the config files +from os.path import expanduser # to get the home dir + +homedir = expanduser("~") # get the home directory of the current user LIGHTS = {} # dictionary of all the lights +CONFIG = {} # the configuration +PRESETS = {} # the presets +PRE_URL = "" # prefix loop = asyncio.get_event_loop() # ASync loop def genUrl(params: str): - return "http://" + hue_config.address + "/api/" + hue_config.username + params + return PRE_URL + params class APIrequest: # Get Req @@ -142,9 +147,20 @@ class controller: def delay(n:int): time.sleep(n) - def init(): - jsonLights = loop.run_until_complete(APIrequest.get("/lights")) + def init( cfgPath="{0}/.config/roomcomputer/config.json".format(homedir), presetPath="{0}/.config/roomcomputer/presets.json".format(homedir) ): + config = readconfig(cfgPath) + presets = readconfig(presetPath) + + global CONFIG + CONFIG = config["hue"] + global PRESETS + PRESETS = presets + + global PRE_URL + PRE_URL = "http://" + CONFIG["address"] + "/api/" + CONFIG["username"] + + jsonLights = loop.run_until_complete(APIrequest.get("/lights")) global LIGHTS LIGHTS = json.loads(jsonLights.text) diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..8b21409 --- /dev/null +++ b/setup.sh @@ -0,0 +1,7 @@ +#!/usr/bin/bash + +cfgPath="$HOME/.config/roomcomputer" + +mkdir $cfgPath +cp default-config.json $cfgPath/config.json +cp default-presets.json $cfgPath/presets.json