34 lines
789 B
Python
34 lines
789 B
Python
from flask import Flask, render_template, jsonify
|
|
import threading
|
|
import time
|
|
|
|
app = Flask(__name__)
|
|
current_state = "red"
|
|
lock = threading.Lock()
|
|
|
|
def reset_to_red():
|
|
global current_state
|
|
time.sleep(10)
|
|
with lock:
|
|
current_state = "red"
|
|
|
|
@app.route("/")
|
|
def index():
|
|
return render_template("site_template.j2", state=current_state)
|
|
|
|
@app.route("/status")
|
|
def status():
|
|
return jsonify({"state": current_state})
|
|
|
|
@app.route("/toggle", methods=["POST"])
|
|
def toggle():
|
|
global current_state
|
|
with lock:
|
|
if current_state != "green":
|
|
current_state = "green"
|
|
threading.Thread(target=reset_to_red, daemon=True).start()
|
|
return jsonify({"state": current_state})
|
|
|
|
if __name__ == "__main__":
|
|
app.run(host="0.0.0.0", port=8000)
|