Files
pressureSensor/dataServer
2025-09-09 15:00:30 +08:00
..
2025-09-09 15:00:30 +08:00
2025-09-09 15:00:30 +08:00
2025-09-09 15:00:30 +08:00
2025-09-09 15:00:30 +08:00
2025-09-09 15:00:30 +08:00
2025-09-09 15:00:30 +08:00

压力数据接收服务器Flask + SQLite, uv 管理)

本服务用于接收 ESP32 固件上报的压力数据,并提供增删改查接口。

  • 语言/框架Python 3.10+、Flask
  • 存储SQLite本地文件 readings.db
  • 依赖管理uvPEP 标准 pyproject.toml

快速开始Windows PowerShell

  1. 安装 uv任选一种
irm https://astral.sh/uv/install.ps1 | iex

或使用 pipx

pipx install uv
  1. 安装依赖并创建虚拟环境:
cd dataServer
uv sync
  1. 启动服务(两种方式):
  • 方式 AFlask 命令(可热重载)
$env:FLASK_APP = "app.py"
uv run flask run --host 0.0.0.0 --port 5000
  • 方式 B直接运行 Python
uv run python app.py

如需我等待你手动启动服务:请直接告诉我,我会等待 30 秒再继续。

配置

  • 环境变量:
    • DB_PATHSQLite 文件路径,默认 ./readings.db
    • HOST:服务监听地址(用于 python app.py),默认 0.0.0.0
    • PORT:服务端口(用于 python app.py),默认 5000

接口说明

  • 健康检查:

    • GET /health
  • 接收上报(供 ESP32 固件使用):

    • POST /data
    • JSON 示例:
curl -X POST http://localhost:5000/data \
     -H "Content-Type: application/json" \
     -d '{"device_id":"test","timestamp":"2023-01-01T12:00:00Z","pressure":0.1,"voltage":2.5}'
  • 查询列表:

    • GET /api/readings?device_id=<id>&start=<iso>&end=<iso>&page=1&page_size=50&sort=desc
  • 获取单条:

    • GET /api/readings/<id>
  • 新增:

    • POST /api/readings(同 /data 体)
  • 更新:

    • PUT /api/readings/<id>(可部分字段)
  • 删除:

    • DELETE /api/readings/<id>

备注

  • 时间戳接受 ISO8601支持 Z(将归一化为 +00:00)。未提供时间戳则使用服务器当前 UTC 时间。
  • SQLite 采用 WAL 模式,适合多读少写。
  • 若需持久化到指定目录,请设置 DB_PATH 并确保写权限。