fix problems, add logging
parent
0204efc07c
commit
ac106890ac
|
@ -1,3 +1,4 @@
|
||||||
|
import logging
|
||||||
import flask
|
import flask
|
||||||
import threading
|
import threading
|
||||||
import paho.mqtt as mqtt
|
import paho.mqtt as mqtt
|
||||||
|
@ -25,27 +26,35 @@ application = flask.Flask(__name__)
|
||||||
application.msg="ab"
|
application.msg="ab"
|
||||||
application.lights = { lid: False for lid in config['lights'] }
|
application.lights = { lid: False for lid in config['lights'] }
|
||||||
|
|
||||||
|
application.logger.removeHandler(flask.logging.default_handler)
|
||||||
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
|
|
||||||
|
|
||||||
def on_message(client,userdata,message):
|
def on_message(client,userdata,message):
|
||||||
c.acquire()
|
c.acquire()
|
||||||
for lid, cfg in config['lights']:
|
for lid, cfg in config['lights'].items():
|
||||||
if cfg.mqtt_path == message.topic:
|
if cfg['mqtt_path'] == message.topic:
|
||||||
if message.payload == "true":
|
if message.payload == b'true':
|
||||||
application.lights[lid] = True
|
application.lights[lid] = True
|
||||||
elif message.payload == "false":
|
elif message.payload == b'false':
|
||||||
application.lights[lid] = False
|
application.lights[lid] = False
|
||||||
|
|
||||||
c.release()
|
c.release()
|
||||||
|
|
||||||
|
|
||||||
def on_connect(client, userdata, rc):
|
def on_connect(client, userdata, rc, l):
|
||||||
for lid, cfg in config['lights']:
|
logging.info(f"connected")
|
||||||
|
for lid, cfg in config['lights'].items():
|
||||||
|
logging.info(f"subscribing: {cfg}")
|
||||||
client.subscribe(cfg['mqtt_path'])
|
client.subscribe(cfg['mqtt_path'])
|
||||||
|
|
||||||
|
|
||||||
mc = mqtt.client.Client()
|
mc = mqtt.client.Client()
|
||||||
mc.username_pw_set(config['mqtt_rw_username'], config['mqtt_rw_password'])
|
mc.username_pw_set(config['mqtt_rw_username'], config['mqtt_rw_password'])
|
||||||
mc.on_connect = on_connect
|
mc.on_connect = on_connect
|
||||||
mc.on_message = on_message
|
mc.on_message = on_message
|
||||||
mc.connect(config["mqtt_server"])
|
mc.connect_async(config["mqtt_server"])
|
||||||
|
mc.enable_logger()
|
||||||
mc.loop_start()
|
mc.loop_start()
|
||||||
|
|
||||||
|
|
||||||
|
@ -73,28 +82,36 @@ def get_config():
|
||||||
})
|
})
|
||||||
|
|
||||||
def publish(path, payload):
|
def publish(path, payload):
|
||||||
mqtt.publish.single(
|
mc.publish(path, payload, qos=1)
|
||||||
path,
|
|
||||||
payload,
|
|
||||||
qos=1,
|
|
||||||
hostname=config["mqtt_server"],
|
|
||||||
auth = {
|
|
||||||
'username':config["mqtt_rw_username"],
|
|
||||||
'password':config["mqtt_rw_password"]
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
@application.route('/light/<lid>/on/set', methods=['POST'])
|
@application.route('/light/<lid>/on/set', methods=['POST'])
|
||||||
def set_light(lid):
|
def set_light(lid):
|
||||||
if lid in config["lights"]:
|
try:
|
||||||
publish(config["lights"][lid]["mqtt_path"] + "/set", "true")
|
path = config["lights"][lid]["mqtt_path"]
|
||||||
|
except KeyError:
|
||||||
|
return flask.jsonify({"ok": False})
|
||||||
|
|
||||||
|
publish(path + '/set', "true")
|
||||||
return flask.jsonify({"ok": True})
|
return flask.jsonify({"ok": True})
|
||||||
|
|
||||||
|
|
||||||
@application.route('/light/<lid>/on/toggle', methods=['POST'])
|
@application.route('/light/<lid>/on/toggle', methods=['POST'])
|
||||||
def toggle_light(lid):
|
def toggle_light(lid):
|
||||||
if lid in config["lights"]:
|
try:
|
||||||
publish(config["lights"][lid]["mqtt_path"] + "/toggle", "true")
|
cfg = config["lights"][lid]
|
||||||
|
toggle = cfg.get('toggle', False)
|
||||||
|
path = cfg["mqtt_path"]
|
||||||
|
except KeyError:
|
||||||
|
print(config["lights"])
|
||||||
|
logging.exception("toggle exception")
|
||||||
|
return flask.jsonify({"ok": False})
|
||||||
|
|
||||||
|
if toggle:
|
||||||
|
publish(path + '/toggle', "true")
|
||||||
|
elif application.lights[lid]:
|
||||||
|
publish(path + '/set', "false")
|
||||||
|
else:
|
||||||
|
publish(path + '/set', "true")
|
||||||
return flask.jsonify({"ok": True})
|
return flask.jsonify({"ok": True})
|
||||||
|
|
||||||
def run_development():
|
def run_development():
|
||||||
|
|
Loading…
Reference in New Issue