.
This commit is contained in:
BIN
app/.DS_Store
vendored
Normal file
BIN
app/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
app/__pycache__/config.cpython-36.pyc
Normal file
BIN
app/__pycache__/config.cpython-36.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/denon.cpython-36.pyc
Normal file
BIN
app/__pycache__/denon.cpython-36.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/linux.cpython-36.pyc
Normal file
BIN
app/__pycache__/linux.cpython-36.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/webserver.cpython-36.pyc
Normal file
BIN
app/__pycache__/webserver.cpython-36.pyc
Normal file
Binary file not shown.
BIN
app/__pycache__/yeelight.cpython-36.pyc
Normal file
BIN
app/__pycache__/yeelight.cpython-36.pyc
Normal file
Binary file not shown.
80
app/config.py
Normal file
80
app/config.py
Normal file
@ -0,0 +1,80 @@
|
||||
import os.path
|
||||
import json, codecs
|
||||
|
||||
##---------------------------------------------------------------------------------------##
|
||||
class Config(object):
|
||||
##---------------------------------------------------------------------------------------##
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def __init__(self):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
print("Config initialisiert")
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def defaultSettings(self):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
print("Returning Default-Settings")
|
||||
data = {
|
||||
"yeelight" : {
|
||||
"dunkel" : "1",
|
||||
"hell" : "100",
|
||||
"warm" : "1700",
|
||||
"normal" : "3000",
|
||||
"kalt" : "6500"
|
||||
}
|
||||
}
|
||||
return data
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def defaultDevices(self):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
print("Returning Default-Devices")
|
||||
data = {}
|
||||
return data
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def read(self, type):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
data = None
|
||||
if(type == "settings"):
|
||||
print("Reading 'settings.json'")
|
||||
if(os.path.isfile("config/settings.json")):
|
||||
with open('config/settings.json', encoding='utf-8') as data_file:
|
||||
try:
|
||||
data = json.loads(data_file.read())
|
||||
except:
|
||||
print("settings.json konnte nicht gelesen werden")
|
||||
data = self.defaultSettings()
|
||||
self.writeConfig("settings", data)
|
||||
print("Settings loaded")
|
||||
else:
|
||||
data =self.defaultSettings()
|
||||
self.writeConfig("settings", data)
|
||||
else:
|
||||
print("Reading 'devices.json'")
|
||||
if(os.path.isfile("config/devices.json")):
|
||||
with open('config/devices.json', encoding='utf-8') as data_file:
|
||||
try:
|
||||
data = json.loads(data_file.read())
|
||||
except:
|
||||
print("devices.json konnte nicht gelesen werden")
|
||||
data = self.defaultDevices()
|
||||
self.writeConfig("devices", data)
|
||||
print("Devices loaded")
|
||||
else:
|
||||
data = self.defaultDevices()
|
||||
self.writeConfig("devices", data)
|
||||
return data
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def writeConfig(self, type, data):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
if(type == "settings"):
|
||||
print("Writing 'settings.json'")
|
||||
with open('config/settings.json', 'w') as outfile:
|
||||
json.dump(data, outfile, indent=4)
|
||||
print("Settings written")
|
||||
else:
|
||||
print("Writing 'devices.json'")
|
||||
with open('config/devices.json', 'w') as outfile:
|
||||
json.dump(data, outfile, indent=4)
|
||||
print("Devices written")
|
BIN
app/devices/.DS_Store
vendored
Normal file
BIN
app/devices/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
app/devices/__pycache__/ssh.cpython-36.pyc
Normal file
BIN
app/devices/__pycache__/ssh.cpython-36.pyc
Normal file
Binary file not shown.
BIN
app/devices/__pycache__/yeelight.cpython-36.pyc
Normal file
BIN
app/devices/__pycache__/yeelight.cpython-36.pyc
Normal file
Binary file not shown.
25
app/devices/denon.py
Normal file
25
app/devices/denon.py
Normal file
@ -0,0 +1,25 @@
|
||||
import denonavr
|
||||
|
||||
##---------------------------------------------------------------------------------------##
|
||||
class Denon(object):
|
||||
##---------------------------------------------------------------------------------------##
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def __init__(self, device):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
self.device = denonavr.DenonAVR(device['ip'])
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def power(self, state=None):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
if(state==None):
|
||||
return -1
|
||||
|
||||
if(state=="on"):
|
||||
self.device.power_on()
|
||||
else:
|
||||
self.device.power_off()
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def setInput(self, input):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
self.device.input_func = input
|
44
app/devices/ssh.py
Normal file
44
app/devices/ssh.py
Normal file
@ -0,0 +1,44 @@
|
||||
from paramiko import SSHClient
|
||||
|
||||
##---------------------------------------------------------------------------------------##
|
||||
class SSH(object):
|
||||
##---------------------------------------------------------------------------------------##
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def __init__(self, devices):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
for device in devices:
|
||||
self.devices[device] = {}
|
||||
self.devices[device]['user'] = devices[device]['user']
|
||||
self.devices[device]['ip'] = devices[device]['ip']
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def command(self, device, command):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
self.client = SSHClient()
|
||||
self.client.load_system_host_keys()
|
||||
self.client.connect(self.devices[device]['ip'], self.devices[device]['user'])
|
||||
|
||||
if(command=="shutdown"):
|
||||
self.shutdown(device)
|
||||
if(command=="reboot"):
|
||||
self.reboot(device)
|
||||
if(command=="upgrade"):
|
||||
self.upgrade(device)
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def shutdown(self, device):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
self.connect()
|
||||
self.client.exec_command('poweroff')
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def reboot(self, device):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
self.connect()
|
||||
self.client.exec_command('reboot')
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def upgrade(self, device):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
self.connect()
|
||||
self.client.exec_command('apt update && apt upgrade -y')
|
19
app/devices/wol.py
Normal file
19
app/devices/wol.py
Normal file
@ -0,0 +1,19 @@
|
||||
from wakeonlan import wol
|
||||
|
||||
##---------------------------------------------------------------------------------------##
|
||||
class WOL(object):
|
||||
##---------------------------------------------------------------------------------------##
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def __init__(self, devices):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
count = 0
|
||||
for device in devices:
|
||||
self.devices[device] = devices[device]['mac']
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def wakeDevice(self, device):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
if(device in self.devices):
|
||||
wol.send_magic_packet(self.devices[device])
|
||||
|
||||
|
328
app/devices/yeelight.py
Normal file
328
app/devices/yeelight.py
Normal file
@ -0,0 +1,328 @@
|
||||
from yeelight import *
|
||||
import time
|
||||
|
||||
##---------------------------------------------------------------------------------------##
|
||||
class Yeelight(object):
|
||||
##---------------------------------------------------------------------------------------##
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def __init__(self, bulbs):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
self.bulbs = {}
|
||||
self.groups = {}
|
||||
for bulb in bulbs:
|
||||
try:
|
||||
self.bulbs.update({bulb : Bulb(bulbs[bulb]['ip'],auto_on=True)})
|
||||
except:
|
||||
print("ERROR: Config not saved for " + bulb)
|
||||
|
||||
try:
|
||||
for group in bulbs[bulb]['groups']:
|
||||
groupName = bulbs[bulb]['groups'][group]
|
||||
if(groupName not in self.groups):
|
||||
print("Create new Group " + groupName)
|
||||
self.groups[groupName] = {}
|
||||
|
||||
self.groups[groupName][bulb] = bulb
|
||||
except:
|
||||
print(bulb + " ist in keiner Gruppe")
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def command(self, data):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
for device in data:
|
||||
group = 0
|
||||
if device in self.groups:
|
||||
group = True
|
||||
if(device in self.bulbs or device in self.groups):
|
||||
if 'power' in data[device]:
|
||||
self.power(device, group, data[device]['power'])
|
||||
if(data[device]['power'] == "off"):
|
||||
return 0
|
||||
if 'brightness' in data[device]:
|
||||
self.brightness(device, group, data[device]['brightness'])
|
||||
if 'r' in data[device] or 'g' in data[device] or 'b' in data[device]:
|
||||
if 'r' in data[device]:
|
||||
r = data[device]['r']
|
||||
else:
|
||||
r = "0"
|
||||
if 'g' in data[device]:
|
||||
g = data[device]['g']
|
||||
else:
|
||||
g = "0"
|
||||
if 'b' in data[device]:
|
||||
b = data[device]['b']
|
||||
else:
|
||||
b = "0"
|
||||
self.color(device, group, r, g, b)
|
||||
if 'temperature' in data[device]:
|
||||
self.temperature(device, group, data[device]['temperature'])
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def power(self, device, group=None, state=None):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
if(state==None):
|
||||
return -1
|
||||
|
||||
if(device==None):
|
||||
for bulb in self.bulbs:
|
||||
self.powerBulb(device, state)
|
||||
if(group == True):
|
||||
for bulb in self.groups[device]:
|
||||
self.powerBulb(bulb, state)
|
||||
else:
|
||||
if(device in self.bulbs):
|
||||
self.powerBulb(device, state)
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def powerBulb(self, device, state):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
if(device in self.bulbs):
|
||||
error = False
|
||||
try:
|
||||
oldState = self.bulbs[device].get_properties()
|
||||
except:
|
||||
print(device + ": Konnte nicht angesteuert werden")
|
||||
error = True
|
||||
finally:
|
||||
if(str(oldState['power']) != str(state)):
|
||||
if(state=="on"):
|
||||
self.bulbs[device].turn_on()
|
||||
print(device + " turned on")
|
||||
else:
|
||||
self.bulbs[device].turn_off()
|
||||
print(device + " turned off")
|
||||
if(error == True):
|
||||
for count in range(0,10):
|
||||
try:
|
||||
oldState = self.bulbs[device].get_properties()
|
||||
except:
|
||||
print(device + ": Konnte nicht angesteuert werden")
|
||||
finally:
|
||||
if(str(oldState['power']) != str(state)):
|
||||
if(state=="on"):
|
||||
self.bulbs[device].turn_on()
|
||||
print(device + " turned on")
|
||||
else:
|
||||
self.bulbs[device].turn_off()
|
||||
print(device + " turned off")
|
||||
try:
|
||||
oldState = self.bulbs[device].get_properties()
|
||||
if(oldState['power'] == str(state)):
|
||||
break
|
||||
except:
|
||||
print(device + " keine Veraenderung")
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def brightness(self, device, group, state=None):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
if(state==None):
|
||||
return -1
|
||||
|
||||
if(device==None):
|
||||
for bulb in self.bulbs:
|
||||
self.brightnessBulb(device, state)
|
||||
if(group == True):
|
||||
for bulb in self.groups[device]:
|
||||
self.brightnessBulb(bulb, state)
|
||||
else:
|
||||
if(device in self.bulbs):
|
||||
self.brightnessBulb(device, state)
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def brightnessBulb(self, device, state):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
if(device in self.bulbs):
|
||||
error = False
|
||||
try:
|
||||
oldState = self.bulbs[device].get_properties()
|
||||
print(oldState)
|
||||
except:
|
||||
print(device + ": Konnte nicht angesteuert werden")
|
||||
error = True
|
||||
finally:
|
||||
if(str(oldState['bright']) != str(state)):
|
||||
self.bulbs[device].set_brightness(int(state))
|
||||
print(device + " turned brightness to " + str(state))
|
||||
if(error == True):
|
||||
for count in range(0,10):
|
||||
try:
|
||||
oldState = self.bulbs[device].get_properties()
|
||||
except:
|
||||
print(device + ": Konnte nicht angesteuert werden")
|
||||
finally:
|
||||
if(str(oldState['brigh']) != str(state)):
|
||||
self.bulbs[device].set_brightness(int(state))
|
||||
print(device + " turned brightness to " + str(state))
|
||||
try:
|
||||
oldState = self.bulbs[device].get_properties()
|
||||
if(oldState['bright'] == str(state)):
|
||||
break
|
||||
except:
|
||||
print(device + " keine Veraenderung")
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def temperature(self, device, group, state=None):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
if(state==None):
|
||||
return -1
|
||||
|
||||
if(device==None):
|
||||
for bulb in self.bulbs:
|
||||
self.temperatureBulb(device, state)
|
||||
if(group == True):
|
||||
for bulb in self.groups[device]:
|
||||
self.temperatureBulb(bulb, state)
|
||||
else:
|
||||
if(device in self.bulbs):
|
||||
self.temperatureBulb(device, state)
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def temperatureBulb(self, device, state):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
if(device in self.bulbs):
|
||||
error = False
|
||||
try:
|
||||
oldState = self.bulbs[device].get_properties()
|
||||
except:
|
||||
print(device + ": Konnte nicht angesteuert werden")
|
||||
error = True
|
||||
finally:
|
||||
if(str(oldState['ct']) != str(state)):
|
||||
self.bulbs[device].set_color_temp(int(state))
|
||||
print(device + " turned temperature to " + str(state))
|
||||
if(error == True):
|
||||
for count in range(0,10):
|
||||
try:
|
||||
oldState = self.bulbs[device].get_properties()
|
||||
except:
|
||||
print(device + ": Konnte nicht angesteuert werden")
|
||||
finally:
|
||||
if(str(oldState['ct']) != str(state)):
|
||||
self.bulbs[device].set_color_temp(int(state))
|
||||
print(device + " turned temperature to " + str(state))
|
||||
try:
|
||||
oldState = self.bulbs[device].get_properties()
|
||||
if(oldState['ct'] == str(state)):
|
||||
break
|
||||
except:
|
||||
print(device + " keine Veraenderung")
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def color(self, device, group, r, g, b):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
if(device==None):
|
||||
for bulb in self.bulbs:
|
||||
self.colorBulb(device, r, g, b)
|
||||
if(group == True):
|
||||
for bulb in self.groups[device]:
|
||||
self.colorBulb(bulb, r, g, b)
|
||||
else:
|
||||
if(device in self.bulbs):
|
||||
self.colorBulb(device, r, g, b)
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def colorBulb(self, device, r, g, b):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
bulbCount = 0
|
||||
bulbCheck = 0
|
||||
if(device in self.bulbs):
|
||||
error = False
|
||||
try:
|
||||
bulbCount = bulbCount + 1
|
||||
oldState = self.bulbs[device].get_properties()
|
||||
except:
|
||||
print(device + ": Konnte nicht angesteuert werden")
|
||||
error = True
|
||||
finally:
|
||||
self.bulbs[device].set_rgb(int(r), int(g), int(b))
|
||||
print(device + " color r:" + str(r) + " g:" + str(g) + " b:" + str(b))
|
||||
bulbCheck = bulbCheck + 1
|
||||
if(bulbCount != bulbCheck):
|
||||
for count in range(0,10):
|
||||
bulbCount = 0
|
||||
bulbCheck = 0
|
||||
try:
|
||||
bulbCount = bulbCount + 1
|
||||
oldState = self.bulbs[device].get_properties()
|
||||
except:
|
||||
print(device + ": Konnte nicht angesteuert werden")
|
||||
error = True
|
||||
finally:
|
||||
self.bulbs[device].set_rgb(int(r), int(g), int(b))
|
||||
print(device + " color r:" + str(r) + " g:" + str(g) + " b:" + str(b))
|
||||
bulbCheck = bulbCheck + 1
|
||||
if(bulbCheck==bulbCount):
|
||||
return 0
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def temperatureTransition(self, startTemp=1700, endTemp=6500, startBrightness=100,
|
||||
endBrightness=100, seconds=0, count=None):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
if(count==None):
|
||||
count=10
|
||||
|
||||
duration = seconds*1000
|
||||
transitions = [
|
||||
TemperatureTransition(startTemp, duration, startBrightness),
|
||||
SleepTransition(duration),
|
||||
TemperatureTransition(endTemp, duration, endBrightness)
|
||||
]
|
||||
flow = Flow(
|
||||
count=1,
|
||||
action=Flow.actions.recover,
|
||||
transitions=transitions
|
||||
)
|
||||
self.temperature(startBrightness)
|
||||
self.brightness(startBrightness)
|
||||
|
||||
bulbCount = 0
|
||||
bulbCheck = 0
|
||||
for bulb in self.bulbs:
|
||||
bulbCount = bulbCount + 1
|
||||
try:
|
||||
oldState = self.bulbs[bulb].get_properties()
|
||||
except:
|
||||
print(bulb + ": Konnte nicht angesteuert werden")
|
||||
finally:
|
||||
self.bulbs[bulb].start_flow(flow)
|
||||
print(bulb + " Flow")
|
||||
bulbCheck = bulbCheck + 1
|
||||
|
||||
if(bulbCount == bulbCheck):
|
||||
return 0
|
||||
else:
|
||||
if(count!=0):
|
||||
time.sleep(.250)
|
||||
temperatureTransition(startTemp, endTemp, startBrightness, endBrightness,seconds,count-1)
|
||||
else:
|
||||
print("Zu viele Versuche. Fehlgeschlagen!")
|
||||
return -1
|
||||
return 0
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def stopTransition(self, count=None):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
if(count==None):
|
||||
count=10
|
||||
bulbCount = 0
|
||||
bulbCheck = 0
|
||||
for bulb in self.bulbs:
|
||||
bulbCount = bulbCount + 1
|
||||
try:
|
||||
oldState = self.bulbs[bulb].get_properties()
|
||||
except:
|
||||
print(bulb + ": Konnte nicht angesteuert werden")
|
||||
finally:
|
||||
self.bulbs[bulb].stop_flow()
|
||||
bulbCheck = bulbCheck + 1
|
||||
|
||||
if(bulbCount == bulbCheck):
|
||||
return 0
|
||||
else:
|
||||
if(count!=0):
|
||||
time.sleep(.250)
|
||||
stopTransition(count-1)
|
||||
else:
|
||||
print("Zu viele Versuche. Fehlgeschlagen!")
|
||||
return -1
|
||||
return 0
|
91
app/webserver.py
Normal file
91
app/webserver.py
Normal file
@ -0,0 +1,91 @@
|
||||
from flask import Flask, request
|
||||
|
||||
|
||||
##---------------------------------------------------------------------------------------##
|
||||
class Webserver(object):
|
||||
##---------------------------------------------------------------------------------------##
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def __init__(self, config):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
print("Webserver initialisiert")
|
||||
self.settings = config.read("settings")
|
||||
self.devices = config.read("devices")
|
||||
|
||||
##-----------------------------------------------------------------------------------##
|
||||
def run(self):
|
||||
##-----------------------------------------------------------------------------------##
|
||||
app = Flask(__name__)
|
||||
|
||||
if(self.devices['yeelight'] != None):
|
||||
print("Enabled Yeelight")
|
||||
from app.devices import yeelight
|
||||
self.yeelight = yeelight.Yeelight(self.devices['yeelight'])
|
||||
|
||||
@app.route('/yeelight', methods=['POST'])
|
||||
def yeelight():
|
||||
app.logger.debug("JSON received...")
|
||||
app.logger.debug(request.json)
|
||||
if request.json:
|
||||
data = request.get_json(force=True)
|
||||
self.yeelight.command(data)
|
||||
return '200'
|
||||
else:
|
||||
return '500'
|
||||
else:
|
||||
print("Disabled Yeelight")
|
||||
|
||||
if(self.devices['ssh'] != None):
|
||||
print("Enabled SSH")
|
||||
from app.devices import ssh
|
||||
self.ssh = ssh.SSH(self.devices['ssh'])
|
||||
|
||||
@app.route('/ssh', methods=['POST'])
|
||||
def ssh():
|
||||
app.logger.debug("JSON received...")
|
||||
app.logger.debug(request.json)
|
||||
if request.json:
|
||||
data = request.get_json(force=True)
|
||||
self.ssh.command(data)
|
||||
return '200'
|
||||
else:
|
||||
return '500'
|
||||
else:
|
||||
print("Disabled SSH")
|
||||
|
||||
if(self.devices['wol'] != None):
|
||||
print("Enabled WOL")
|
||||
from app.devices import wol
|
||||
self.wol = wol.WOL(self.devices['wol'])
|
||||
|
||||
@app.route('/wol', methods=['POST'])
|
||||
def wol():
|
||||
app.logger.debug("JSON received...")
|
||||
app.logger.debug(request.json)
|
||||
if request.json:
|
||||
data = request.get_json(force=True)
|
||||
self.wol.command(data)
|
||||
return '200'
|
||||
else:
|
||||
return '500'
|
||||
else:
|
||||
print("Disabled SSH")
|
||||
|
||||
if(self.devices['denon'] != None):
|
||||
print("Enabled Denon")
|
||||
from app.devices import denon
|
||||
self.denon = wol.WOL(self.devices['denon'])
|
||||
|
||||
@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.run(debug=False, host='0.0.0.0')
|
Reference in New Issue
Block a user