Add a Flask backend + SQLite + HTML/CSS/JS PWA that: - Polls the CYD /api/latest endpoint - Stores readings, sessions, and freeform notes in SQLite - Displays probe cards with target setpoints and preset options - Renders temperature history with Chart.js - Serves a PWA manifest and dark-themed dashboard Also update cyd-bridge/README.md with verified bringup instructions.
51 lines
1.3 KiB
Markdown
51 lines
1.3 KiB
Markdown
# ThermoPro CYD Frontend
|
|
|
|
A Progressive Web App (PWA) that consumes the CYD ThermoPro Bridge API, stores session history in SQLite, and displays probe temperatures with charts, target setpoints, and freeform notes.
|
|
|
|
## Architecture
|
|
|
|
```
|
|
LXC/container
|
|
├── Python backend (FastAPI/Flask)
|
|
│ ├── Polls CYD /api/latest periodically
|
|
│ ├── Stores readings + sessions + notes in SQLite
|
|
│ └── Serves the static PWA and API
|
|
└── PWA (HTML/CSS/JS)
|
|
├── Dashboard with probe cards
|
|
├── Temperature history charts
|
|
├── Target setpoint editor
|
|
└── Session notes
|
|
```
|
|
|
|
## Requirements
|
|
|
|
- Python 3.10+
|
|
- `flask`, `requests`, `gunicorn` (or `uvicorn` if FastAPI)
|
|
- SQLite (stdlib)
|
|
|
|
## Running locally
|
|
|
|
```bash
|
|
cd frontend
|
|
python -m venv .venv
|
|
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
|
pip install -r requirements.txt
|
|
python app.py
|
|
```
|
|
|
|
Then open `http://localhost:5000`.
|
|
|
|
## Configuration
|
|
|
|
The backend needs to know the CYD IP. Set the environment variable:
|
|
|
|
```bash
|
|
export CYD_BASE_URL=http://192.168.2.55
|
|
```
|
|
|
|
or edit the default in `config.py`.
|
|
|
|
## Deployment
|
|
|
|
Serve the app behind a reverse proxy (e.g. Caddy or Nginx) in an LXC. The backend will continue polling the CYD as long as it can reach the device.
|