87 lines
2.5 KiB
Python
87 lines
2.5 KiB
Python
|
from flask_mqtt import Mqtt
|
||
|
from flask import Blueprint, request, render_template, flash
|
||
|
import json
|
||
|
|
||
|
mqtt = Mqtt()
|
||
|
|
||
|
bp = Blueprint("mqtt", __name__, url_prefix="/")
|
||
|
|
||
|
from .db import get_db
|
||
|
|
||
|
|
||
|
@bp.route("/song", methods=("GET", "POST"))
|
||
|
def song():
|
||
|
db = get_db()
|
||
|
ids = db.cursor().execute("SELECT DISTINCT device_id FROM data").fetchall()
|
||
|
|
||
|
if request.method == "POST":
|
||
|
device_id = request.form["device_id"]
|
||
|
data = request.form["song"]
|
||
|
|
||
|
error = ""
|
||
|
if not device_id:
|
||
|
error = "device_id required"
|
||
|
if error:
|
||
|
flash(error)
|
||
|
return render_template("data/song.html", data=enumerate(ids))
|
||
|
|
||
|
j = {"device_id": device_id, "song": data}
|
||
|
msg = json.dumps(j)
|
||
|
mqtt.publish("buzzer", str.encode(msg))
|
||
|
print(msg)
|
||
|
flash("Song is playing")
|
||
|
return render_template("data/song.html", data=enumerate(ids))
|
||
|
return render_template("data/song.html", data=enumerate(ids))
|
||
|
|
||
|
|
||
|
@bp.route("/oled", methods=("GET", "POST"))
|
||
|
def oled():
|
||
|
db = get_db()
|
||
|
ids = db.cursor().execute("SELECT DISTINCT device_id FROM data").fetchall()
|
||
|
|
||
|
if request.method == "POST":
|
||
|
device_id = request.form["device_id"]
|
||
|
data = request.form["text"]
|
||
|
|
||
|
error = ""
|
||
|
if not device_id:
|
||
|
error = "device_id required"
|
||
|
if error:
|
||
|
flash(error)
|
||
|
return render_template("data/oled.html", data=enumerate(ids)), 400
|
||
|
|
||
|
j = {"device_id": device_id, "text": data}
|
||
|
msg = json.dumps(j)
|
||
|
mqtt.publish("oled", str.encode(msg))
|
||
|
print(msg)
|
||
|
flash("OK")
|
||
|
return render_template("data/oled.html", data=enumerate(ids))
|
||
|
|
||
|
return render_template("data/oled.html", data=enumerate(ids))
|
||
|
|
||
|
|
||
|
@bp.route("/led", methods=("GET", "POST"))
|
||
|
def led():
|
||
|
db = get_db()
|
||
|
ids = db.cursor().execute("SELECT DISTINCT device_id FROM data").fetchall()
|
||
|
|
||
|
if request.method == "POST":
|
||
|
device_id = request.form["device_id"]
|
||
|
data = request.form["period"]
|
||
|
|
||
|
error = ""
|
||
|
if not device_id:
|
||
|
error = "device_id required"
|
||
|
if error:
|
||
|
flash(error)
|
||
|
return render_template("data/led.html", data=enumerate(ids)), 400
|
||
|
|
||
|
j = {"device_id": device_id, "period": data}
|
||
|
msg = json.dumps(j)
|
||
|
mqtt.publish("led", str.encode(msg))
|
||
|
print(msg)
|
||
|
flash("OK")
|
||
|
return render_template("data/led.html", data=enumerate(ids))
|
||
|
|
||
|
return render_template("data/led.html", data=enumerate(ids))
|