Add Pico simulator and shared protocol layer
This commit is contained in:
+18
-30
@@ -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__":
|
||||
|
||||
Reference in New Issue
Block a user