Implement Bodenfeuchte app: MQTT listener, SQLite storage, chart UI, Docker

- Custom Next.js server starts MQTT listener on boot
- Subscribes to zigbee2mqtt/Bodenfeuchte_1, stores soil_moisture in SQLite
- API route /api/data returns last 6 hours of measurements
- Frontend shows current value + Recharts line chart, auto-refresh every 60s
- Dockerfile + docker-compose with persistent volume for SQLite DB

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-15 18:10:18 +02:00
parent de23825cf6
commit 635b3ce598
11 changed files with 1671 additions and 72 deletions
+9 -3
View File
@@ -3,24 +3,30 @@
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"dev": "ts-node --project tsconfig.server.json server.ts",
"build": "next build",
"start": "next start",
"start": "node dist/server.js",
"build:server": "tsc --project tsconfig.server.json",
"lint": "eslint"
},
"dependencies": {
"better-sqlite3": "^12.10.0",
"mqtt": "^5.15.1",
"next": "16.2.6",
"react": "19.2.4",
"react-dom": "19.2.4"
"react-dom": "19.2.4",
"recharts": "^3.8.1"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",
"@types/better-sqlite3": "^7.6.13",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "16.2.6",
"tailwindcss": "^4",
"ts-node": "^10.9.2",
"typescript": "^5"
}
}