2026-08-06 12:08:23 +08:00
2026-08-06 12:03:05 +08:00
2026-08-06 12:08:23 +08:00
2026-08-06 12:08:23 +08:00
2026-08-04 11:14:18 +08:00
2026-08-04 11:14:18 +08:00
2026-08-06 12:08:23 +08:00
2026-08-04 11:14:18 +08:00
2026-08-04 11:14:18 +08:00

E32C-Server

ESP32-CAM 图片接收、设备管理和唤醒策略后台。

当前版本:1.5.3

功能

  • ESP32-CAM 图片和设备状态上传
  • 设备、用户和分组管理
  • 定时与间隔唤醒策略
  • 按预计唤醒时间区分休眠中、等待上报和超期未上报
  • 按设备状态筛选并保留分页和排序条件
  • 设备选择跨分页保留,并支持选择当前筛选结果中的全部设备
  • 全站统一 Toast、危险操作确认对话框和按钮加载状态
  • 设备概览展示电压、信号和 TF 卡剩余空间的 7/30/90 天趋势
  • Bootstrap、Bootstrap Icons 和 Chart.js 均由服务器本地提供,不依赖外部 CDN
  • 历史照片画廊、日期筛选和页面内连续查看
  • 静态资源版本化与紧凑型后台界面
  • 设备详情顶部展示 ICCID 等设备身份信息
  • 设备详情按概览、照片和配置拆分为独立页签
  • 图片缩略图、历史记录和持久化批量导出
  • 导出前按日期估算照片数量和大小,下载确认后才允许删除归档源照片
  • 深度健康检查、运行指标和 systemd 自动恢复
  • 可配置告警阈值、故障归因和恢复事件记录
  • 后台操作审计、敏感字段脱敏和 CSV 导出
  • SQLite 数据存储

环境

  • Python 3.10+
  • Flask 3.1
  • Gunicorn 23
  • Pillow 11
  • Nginx(生产部署推荐)

本地运行

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

export LPEC_SECRET_KEY="$(python -c 'import secrets; print(secrets.token_hex(32))')"
export LPEC_ADMIN_USERNAME=root
export LPEC_ADMIN_PASSWORD=change-this-password

python server.py

首次创建数据库时必须设置 LPEC_ADMIN_PASSWORD。已有数据库不会覆盖现有用户密码。

生产部署

当前生产结构:

公网 :8765 -> Nginx -> Gunicorn 127.0.0.1:18765
                         |
                         -> SQLite 持久任务队列 -> 独立导出 Worker

部署示例位于:

  • deploy/clear_lpec_server.service
  • deploy/e32c-export-worker.service
  • deploy/e32c-watchdog.service
  • deploy/e32c-watchdog.timer
  • deploy/e32c-server.logrotate
  • deploy/nginx-8765.conf

服务器私有配置写入 /etc/esp-cam.env,权限建议设为 600。不要提交该文件。

数据目录

以下运行数据不纳入 Git:

data/platform.db
data/uploads/
data/thumbnails/
data/exports/
logs/

部署和升级前应单独备份 data/。

健康检查

curl http://127.0.0.1:8765/api/v1/health
curl http://127.0.0.1:8765/api/v1/health/deep
S
Description
ESP32-CAM image upload and device management server
Readme
636 KiB
0 Stars 1 Watchers 0 Forks
v1.5.3
Latest
2026-08-06 12:09:22 +08:00
Languages
Python 52.3%
HTML 26.5%
CSS 15%
JavaScript 6.2%