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))