File size: 1,219 Bytes
595094e
 
 
 
b8c72c0
595094e
 
 
 
 
 
 
 
b8c72c0
 
 
595094e
b3a2577
b8c72c0
 
cf34346
 
b3a2577
cf34346
 
595094e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b8c72c0
595094e
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import eventlet
from flask import Flask, request, send_from_directory
from flask_cors import CORS
from flask_socketio import SocketIO

# 1) static under /static
app = Flask(__name__, static_folder="static", static_url_path="/static")
CORS(app)

# 2) Socket.IO with wildcard CORS
socketio = SocketIO(app, cors_allowed_origins="*")

motor_states = {f"motor_{i}": 0.0 for i in range(6)}


@app.route("/")
def index():
    return send_from_directory("static", "index.html")


@app.route("/sinus")
def sinus():
    return send_from_directory("static", "sinus.html")


@app.route("/motor_control", methods=["POST"])
def http_control():
    data = request.json or {}
    motor_states.update(data)
    print("HTTP POST:", data)
    return {"status": "ok", "motor_states": motor_states}


@socketio.on("connect")
def on_connect():
    print("Client connected")


@socketio.on("motor_control")
def on_ws_control(data):
    motor_states.update(data)
    print("WS:", data)
    # broadcast new states back if you like
    socketio.emit("motor_states", motor_states)


if __name__ == "__main__":
    # 3) run under eventlet on port 7860 (HF Spaces HTTPS)
    eventlet.monkey_patch()
    socketio.run(app, host="0.0.0.0", port=7860)