homecontrol/homecontrol.py

88 lines
2 KiB
Python
Raw Normal View History

2019-10-22 23:55:00 +02:00
#!/usr/bin/env python3
from flask import Flask, request, json, jsonify, abort, make_response
import argparse
import time
CONFIG_FILE='config.json'
PORT = 5000
def setup():
# arguments
parser = argparse.ArgumentParser(description='homecontrol')
parser.add_argument('-p', '--port', dest='port', type=int,
help='listening port')
parser.add_argument('-c', '--config', dest='config', type=str,
help='config file', default=CONFIG_FILE)
parser.add_argument('-d', '--debug', dest='debug', action='store_true',
help='debug mode')
# parse arguments
args = parser.parse_args()
# initialize config
config = {}
try:
config_file = open(args.config, 'r')
config = json.load(config_file)
except:
pass
# fill new keys with defaults
if not config.get('port'):
config['port'] = PORT
# overwrite with arguments
if args.port:
config['port'] = args.port
# save to file
with open(args.config, 'w') as config_file:
json.dump(config, config_file)
return args, config
class Core:
def __init__(self):
self.nodes = {}
def update(self):
pass
class Node:
def __init__(self, type):
self.type == type
self.values = {}
def add_value(self, value):
self.values[time.time()] = value
def get_values(self):
return self.values
def clean_values(self, n):
while len(self.values) > n:
self.values.pop(next(iter(self.values)))
app = Flask (__name__)
@app.route("/node/get", methods = [ 'GET' ])
def node_get():
ret = "yay"
return ret
@app.route("/node/add_value", methods = [ 'POST' ])
def node_add_value():
ret = {}
content = {}
try:
content = request.json
print(content)
except Exception as ex:
logger.error('Exception, Type:%s, args:\n%s' % (type(ex).__name__, ex.args))
return ret
if __name__ == "__main__":
args, config = setup()
app.run(host = '0.0.0.0', port=config['port'], debug=args.debug)