No description
| static | ||
| .dockerignore | ||
| .gitignore | ||
| app.py | ||
| docker-compose.yml | ||
| Dockerfile | ||
| nginx.conf | ||
| README.md | ||
| requirements.txt | ||
ESP Temperature Monitor API
Eine vollständige Web-Anwendung zur Überwachung von Temperaturwerten von ESP-Geräten.
Features
- REST API zum Senden von Temperaturwerten mit API-Key Authentifizierung
- Live-Dashboard mit Echtzeit-Updates (ohne Seiten-Reload)
- Interaktiver Graph mit verschiedenen Zeiträumen (1 Min, 5 Min, 1 Std, Alltime)
- Einstellungen-Seite zur Konfiguration von Bluetooth MAC-Adresse und maximaler Temperatur
- Settings API für ESP-Geräte zum Abrufen der Konfiguration (ohne API-Key)
- PostgreSQL Datenbank zur Speicherung aller Messwerte und Einstellungen
- Docker Compose Setup für einfache Deployment
API-Dokumentation
POST /api/temp
Sendet einen neuen Temperaturwert an die API.
Headers:
X-API-Key: your-secret-api-key
oder
Authorization: Bearer your-secret-api-key
JSON-Struktur:
{
"temperature": 23.5,
"timestamp": "2024-01-15T10:30:00",
"time_since_last": 2.5,
"device_id": "ESP32-001"
}
Felder:
temperature(erforderlich): Temperaturwert als Floattimestamp(optional): ISO 8601 Zeitstempel, Standard: aktuelle Zeittime_since_last(optional): Zeit seit letzter Ausführung in Sekundendevice_id(optional): Identifikation des Geräts
GET /api/temp
Ruft Temperaturwerte ab.
Query-Parameter:
minutes: Filter für letzte X Minutenhours: Filter für letzte X Stunden
Beispiele:
/api/temp?minutes=5- Letzte 5 Minuten/api/temp?hours=1- Letzte Stunde/api/temp- Alle Werte
GET /api/temp/latest
Ruft den neuesten Temperaturwert ab.
GET /api/settings
Ruft die aktuellen Einstellungen ab. Kein API-Key erforderlich - öffentlich zugänglich für ESP-Geräte.
Response:
{
"id": 1,
"bluetooth_mac": "AA:BB:CC:DD:EE:FF",
"max_temperature": 30.0,
"updated_at": "2024-01-15T10:30:00"
}
Felder:
bluetooth_mac(optional): Bluetooth MAC-Adresse im Format XX:XX:XX:XX:XX:XXmax_temperature(optional): Maximale Temperatur in °C (0-200)updated_at: Zeitstempel der letzten Aktualisierung
PUT /api/settings
Aktualisiert die Einstellungen. API-Key erforderlich (nur über Web-UI).
Headers:
X-API-Key: your-secret-api-key
JSON-Struktur:
{
"bluetooth_mac": "AA:BB:CC:DD:EE:FF",
"max_temperature": 30.0
}
Felder:
bluetooth_mac(optional): Bluetooth MAC-Adresse im Format XX:XX:XX:XX:XX:XXmax_temperature(optional): Maximale Temperatur in °C (0-200),nullzum Löschen
Beispiel-Request:
curl -X PUT http://localhost:8910/api/settings \
-H "Content-Type: application/json" \
-H "X-API-Key: esp-temp-2024-Kx9mP2vQ7rT5wY8zN3bF6hJ1cL4dM0sA" \
-d '{
"bluetooth_mac": "AA:BB:CC:DD:EE:FF",
"max_temperature": 30.0
}'
Installation & Start
- Environment-Variablen setzen:
cp .env.example .env
# Bearbeite .env und setze einen sicheren API_KEY
- Docker Compose starten:
docker-compose up -d
- Services sind verfügbar:
- Frontend & API: http://localhost:8910
- API-Endpoint: http://localhost:8910/api/temp
Docker Services
- backend: Flask API mit statischem File-Serving (Port 8910 extern, 5000 intern)
- db: PostgreSQL Datenbank (Port 5432 intern)
Entwicklung
Lokale Entwicklung ohne Docker:
# Python Virtual Environment erstellen
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Dependencies installieren
pip install -r requirements.txt
# Environment-Variablen setzen
export API_KEY=esp-temp-2024-Kx9mP2vQ7rT5wY8zN3bF6hJ1cL4dM0sA
export DATABASE_URL=postgresql://postgres:postgres@localhost:5432/temp_db
# Datenbank initialisieren
python3 -c "from app import app, db; app.app_context().push(); db.create_all()"
# Server starten
python app.py
Datenbank
Die Datenbank wird automatisch beim ersten Start erstellt. Tabellen:
temperature_readings: Speichert alle Temperaturmessungensettings: Speichert die Systemeinstellungen (Bluetooth MAC, max. Temperatur)
Sicherheit
- Wichtig: Ändere den API-Key in der
.envDatei! - Für Produktion: HTTPS aktivieren (SSL-Zertifikat in nginx konfigurieren)
- Firewall-Regeln für Datenbank-Port setzen
Lizenz
MIT