progress
This commit is contained in:
@ -6,6 +6,7 @@ class SSH(object):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def __init__(self, devices):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
self.devices = {}
|
||||
for device in devices:
|
||||
self.devices[device] = {}
|
||||
self.devices[device]['user'] = devices[device]['user']
|
||||
@ -25,6 +26,30 @@ class SSH(object):
|
||||
if(command=="upgrade"):
|
||||
self.upgrade(device)
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def config(self):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
config = {
|
||||
"device" : {
|
||||
"name" : "",
|
||||
"ip" : "",
|
||||
"user" : ""
|
||||
},
|
||||
"shutdown" : {
|
||||
"device" : "name",
|
||||
"state" : "button"
|
||||
},
|
||||
"reboot" : {
|
||||
"device" : "name",
|
||||
"state" : "button"
|
||||
},
|
||||
"upgrade" : {
|
||||
"device" : "name",
|
||||
"state" : "button"
|
||||
}
|
||||
}
|
||||
return config
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def shutdown(self, device):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
|
@ -7,9 +7,23 @@ class WOL(object):
|
||||
def __init__(self, devices):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
count = 0
|
||||
self.devices= {}
|
||||
for device in devices:
|
||||
self.devices[device] = devices[device]['mac']
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def config(self):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
config = {
|
||||
"device" : {
|
||||
"name" : "",
|
||||
"mac" : ""
|
||||
},
|
||||
"wake" : {
|
||||
"device" : "name",
|
||||
"state" : "button"
|
||||
}
|
||||
}
|
||||
return config
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def wakeDevice(self, device):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
|
@ -26,6 +26,81 @@ class Yeelight(object):
|
||||
except:
|
||||
print(bulb + " ist in keiner Gruppe")
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def config(self):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
config = {
|
||||
"rgb" : {
|
||||
"device" : {
|
||||
"name" : "",
|
||||
"ip" : "",
|
||||
"type" : "rgb"
|
||||
},
|
||||
"power" : {
|
||||
"device" : "name",
|
||||
"state" : "switch"
|
||||
},
|
||||
"brightness" : {
|
||||
"device" : "name",
|
||||
"state" : "dimmer"
|
||||
},
|
||||
"temperature" : {
|
||||
"device" : "name",
|
||||
"state" : "dimmer"
|
||||
},
|
||||
"color" : {
|
||||
"device" : "name",
|
||||
"r" : "dimmer",
|
||||
"g" : "dimmer",
|
||||
"b" : "dimmer"
|
||||
}
|
||||
},
|
||||
"white" : {
|
||||
"device" : {
|
||||
"name": "",
|
||||
"ip" : "",
|
||||
"type" : "white"
|
||||
},
|
||||
"power" : {
|
||||
"device" : "name",
|
||||
"state" : "switch"
|
||||
},
|
||||
"brightness" : {
|
||||
"device" : "name",
|
||||
"state" : "dimmer"
|
||||
},
|
||||
"temperature" : {
|
||||
"device" : "name",
|
||||
"state" : "dimmer"
|
||||
}
|
||||
}
|
||||
}
|
||||
return config
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def state(self):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
state = {}
|
||||
for bulb in self.bulbs:
|
||||
state[bulb] = {}
|
||||
try:
|
||||
properties = self.bulbs[bulb].get_properties()
|
||||
except:
|
||||
state[bulb]['offline'] = True
|
||||
finally:
|
||||
state[bulb]['offline'] = False
|
||||
state[bulb]['power'] = properties['power']
|
||||
state[bulb]['brightness'] = properties['bright']
|
||||
state[bulb]['temperature'] = properties['ct']
|
||||
state[bulb]['color'] = properties['rgb']
|
||||
state[bulb]['groups'] = {}
|
||||
for group in self.groups:
|
||||
if(bulb in self.groups[group]):
|
||||
state[bulb]['groups'][group] = ""
|
||||
#r, g, b = tuple(int(properties['rgb'][i:i+2], 16) for i in (0, 2 ,4))
|
||||
#print("r:" + str(r) + " g: " + str(g) + " b: " + str(b))
|
||||
return state
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def command(self, data):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
|
@ -1,4 +1,4 @@
|
||||
from flask import Flask, request
|
||||
from flask import Flask, request, jsonify
|
||||
|
||||
|
||||
##---------------------------------------------------------------------------------------##
|
||||
@ -10,6 +10,29 @@ class Webserver(object):
|
||||
print("Webserver initialisiert")
|
||||
self.settings = config.read("settings")
|
||||
self.devices = config.read("devices")
|
||||
self.config = {}
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def createConfig(self, module, devices, config):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
#print("Module: " + str(module))
|
||||
#print("Devices: " + str(devices))
|
||||
#print("Config: " + str(config))
|
||||
self.config[module] = {}
|
||||
if(module == "yeelight"):
|
||||
for device in devices:
|
||||
self.config[module][device] = {}
|
||||
self.config[module][device] = self.devices[module][device]
|
||||
if(devices[device]['type'] == "rgb"):
|
||||
self.config[module][device]['config'] = config['rgb']
|
||||
if(devices[device]['type'] == "white"):
|
||||
self.config[module][device]['config'] = config['white']
|
||||
return
|
||||
|
||||
for device in devices:
|
||||
self.config[module][device] = {}
|
||||
self.config[module][device] = self.devices[module][device]
|
||||
self.config[module][device]['config'] = config
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def run(self):
|
||||
@ -20,8 +43,11 @@ class Webserver(object):
|
||||
print("Enabled Yeelight")
|
||||
from app.devices import yeelight
|
||||
self.yeelight = yeelight.Yeelight(self.devices['yeelight'])
|
||||
devices = self.devices['yeelight']
|
||||
config = self.yeelight.config()
|
||||
self.createConfig("yeelight", devices, config)
|
||||
|
||||
@app.route('/yeelight', methods=['POST'])
|
||||
@app.route('/rest/yeelight', methods=['POST'])
|
||||
def yeelight():
|
||||
app.logger.debug("JSON received...")
|
||||
app.logger.debug(request.json)
|
||||
@ -38,8 +64,11 @@ class Webserver(object):
|
||||
print("Enabled SSH")
|
||||
from app.devices import ssh
|
||||
self.ssh = ssh.SSH(self.devices['ssh'])
|
||||
devices = self.devices['ssh']
|
||||
config = self.ssh.config()
|
||||
self.createConfig("ssh", devices, config)
|
||||
|
||||
@app.route('/ssh', methods=['POST'])
|
||||
@app.route('/rest/ssh', methods=['POST'])
|
||||
def ssh():
|
||||
app.logger.debug("JSON received...")
|
||||
app.logger.debug(request.json)
|
||||
@ -56,8 +85,11 @@ class Webserver(object):
|
||||
print("Enabled WOL")
|
||||
from app.devices import wol
|
||||
self.wol = wol.WOL(self.devices['wol'])
|
||||
devices = self.devices['wol']
|
||||
config = self.wol.config()
|
||||
self.createConfig("wol", devices, config)
|
||||
|
||||
@app.route('/wol', methods=['POST'])
|
||||
@app.route('/rest/wol', methods=['POST'])
|
||||
def wol():
|
||||
app.logger.debug("JSON received...")
|
||||
app.logger.debug(request.json)
|
||||
@ -70,22 +102,29 @@ class Webserver(object):
|
||||
else:
|
||||
print("Disabled SSH")
|
||||
|
||||
if(self.devices['denon'] != None):
|
||||
print("Enabled Denon")
|
||||
from app.devices import denon
|
||||
self.denon = wol.WOL(self.devices['denon'])
|
||||
#if(self.devices['denon'] != None):
|
||||
# print("Enabled Denon")
|
||||
# from app.devices import denon
|
||||
# self.denon = denon.Denon(self.devices['denon'])
|
||||
# devices = self.devices['denon']
|
||||
# config = self.denon.config()
|
||||
# self.createConfig("denon", devices, config)
|
||||
|
||||
@app.route('/denon', methods=['POST'])
|
||||
def denon():
|
||||
app.logger.debug("JSON received...")
|
||||
app.logger.debug(request.json)
|
||||
if request.json:
|
||||
data = request.get_json(force=True)
|
||||
self.denon.command(data)
|
||||
return '200'
|
||||
else:
|
||||
return '500'
|
||||
else:
|
||||
print("Disabled Denon")
|
||||
# @app.route('/rest/denon', methods=['POST'])
|
||||
# def denon():
|
||||
# app.logger.debug("JSON received...")
|
||||
# app.logger.debug(request.json)
|
||||
# if request.json:
|
||||
# data = request.get_json(force=True)
|
||||
# self.denon.command(data)
|
||||
# return '200'
|
||||
# else:
|
||||
# return '500'
|
||||
#else:
|
||||
# print("Disabled Denon")
|
||||
|
||||
app.run(debug=False, host='0.0.0.0')
|
||||
@app.route('/rest/config', methods=['GET'])
|
||||
def config():
|
||||
return jsonify(self.config)
|
||||
|
||||
app.run(debug=True, host='0.0.0.0')
|
Reference in New Issue
Block a user