我在电能表上使用光学传感器。目前,我正在调用一个python脚本通过光学传感器每10秒获取新值。raspberry pi zero需要一些时间来启动python脚本(超过5秒)。
我想获取传感器数据现在每秒.
我想要的:
- 启动脚本一次,使用while循环获取新的传感器数据,并在获取 后休眠1秒
- 提供最新值的rest API端点(uvicorn和fastapi?!)
也许我可以得到一些帮助,让我开始。谢谢。
你可以做的是为最后一个传感器读取一个变量,并使用FastAPI的异步特性来运行异步后台任务,该任务每秒更新该变量。asyncio.create_task
可以用于此,您可以使用FastAPI的启动事件开始读取。
类似
的内容import asyncio
from fastapi import FastAPI
app = FastAPI()
sensor_data = None
async def read_optical_sensor():
global sensor_data
while True:
sensor_data = ... # Read your sensor here, preferably in an async way
await asyncio.sleep(1)
@app.on_event("startup")
async def startup():
asyncio.create_task(read_optical_sensor())
@app.get("/read")
async def get_sensor_data():
return {"data": sensor_data}