#from fastapi.responses import StreamingResponse, FileResponse # @app.get("/events") # async def sse_endpoint(): # """SSE endpoint to stream OPC UA updates""" # return StreamingResponse(event_stream(), media_type="text/event-stream") # Serve index.html #@app.get("/") #async def serve_frontend(): # return FileResponse("static/index.html") # @app.get("/modes/semiAuto/{strng}") # async def semiAutoStringEventStream(strng): # return StreamingResponse(strng_semi_auto_data_stream(), media_type="text/event-stream") # async def event_stream(): # # Send current value immediately if available # if latest_value["value"] is not None: # yield f"data: {json.dumps(latest_value)}\n\n" # while True: # await new_value_event.wait() # wait for new value # data = json.dumps(latest_value) # yield f"data: {data}\n\n" # new_value_event.clear() # reset event and wait for next update # async def strng_semi_auto_data_stream(): # while True: # await new_value_event.wait() # data # @app.get("/getMode") # async def set_mode(request: Request): # client = request.app.state.opcua_client # nsidx = request.app.state.ns_idx # #node = client.get_node(f"ns={nsidx};s=GVL_SCADA.eRequestedControlMode") # #node = client.get_node(f"ns={nsidx};s=GVL_SCADA.eCurrentControlMode") # try: # node = client.get_node(f"ns={nsidx};s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit1.stP11.rValue") # value = await node.read_value() # print(value) # return {"node_id": "GVL_SCADA.eCurrentControlMode", "value": value} # except: # return {"node_id": "GVL_SCADA.eCurrentControlMode", "value": 0.0}