Add Pico simulator and shared protocol layer

This commit is contained in:
root
2026-06-03 00:27:10 -06:00
parent cdff42ddd4
commit 2eb36a2d85
4 changed files with 244 additions and 30 deletions
+18 -30
View File
@@ -1,8 +1,11 @@
from flask import Flask, jsonify, render_template, request
from esp32_sim import esp32
from pico_sim import PicoSimulator
app = Flask(__name__)
pico = PicoSimulator(esp32)
@app.route("/")
def index():
@@ -11,75 +14,60 @@ def index():
@app.route("/status")
def status():
return jsonify(esp32.get_status())
return jsonify(pico.get_status())
@app.route("/battery")
def battery():
return jsonify(esp32.get_status()["battery"])
return jsonify(pico.get_status()["battery"])
@app.route("/temps")
def temps():
return jsonify(esp32.get_status()["temps"])
return jsonify(pico.get_status()["temps"])
@app.route("/relays")
def relays():
return jsonify(esp32.relays)
return jsonify(pico.get_status()["relays"])
@app.route("/relay/<name>", methods=["POST"])
def set_relay(name):
data = request.get_json(force=True)
success = esp32.set_relay(name, data.get("state", False))
response = pico.set_relay(name, data.get("state", False))
if not success:
return jsonify({"success": False, "error": "Unknown relay"}), 404
if not response["success"]:
return jsonify(response), 404
return jsonify({
"success": True,
name: esp32.relays[name]
})
return jsonify(response)
@app.route("/network")
def network():
return jsonify(esp32.get_status()["network"])
return jsonify(pico.get_status()["network"])
@app.route("/network/wifi", methods=["POST"])
def enable_wifi():
data = request.get_json(force=True)
minutes = int(data.get("minutes", 10))
esp32.enable_wifi(minutes)
return jsonify({
"success": True,
"expires_minutes": minutes
})
return jsonify(pico.enable_wifi(minutes))
@app.route("/vehicle/ignition", methods=["POST"])
def toggle_ignition():
return jsonify({
"success": True,
"ignition_on": esp32.toggle_ignition()
})
return jsonify(pico.toggle_ignition())
@app.route("/sensor/<name>/fault", methods=["POST"])
def toggle_sensor_fault(name):
failed = esp32.toggle_sensor_fault(name)
response = pico.toggle_sensor_fault(name)
if failed is None:
return jsonify({"success": False, "error": "Unknown sensor"}), 404
if not response["success"]:
return jsonify(response), 404
return jsonify({
"success": True,
"sensor": name,
"failed": failed
})
return jsonify(response)
if __name__ == "__main__":