Christian Mueller e706b22f31 Add design specification for LoRaWAN Web Portal
Based on Pflichtenheft v2.2, documents the full system design
including daemon, API, frontend, and infrastructure with agreed
deviations (Axum 0.8, SQLx 0.8, Vite 6, Tailwind 4).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 22:27:49 +01:00

178 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Konfiguration der Füllstandsmessung
## Übersicht
Der HC-SR04 Sensor wird **oberhalb des Tanks** montiert und misst die Distanz zur Flüssigkeitsoberfläche.
## Konfigurationsvariablen
In [src/main.cpp](src/main.cpp) (Zeile 14-16):
```cpp
#define TANK_HEIGHT 180.0 // Tank-Höhe in cm (innen)
#define SENSOR_MOUNT_OFFSET 20.0 // Montageabstand: Sensor über Tank-Oberkante in cm
#define SENSOR_MIN_DISTANCE 2.0 // HC-SR04 Mindestabstand (technische Grenze)
```
## Parameter-Erklärung
### 1. TANK_HEIGHT (Tank-Höhe)
**Die innere Höhe des Tanks von Boden bis Oberkante.**
- **Beispiel**: Tank ist 180 cm hoch → `#define TANK_HEIGHT 180.0`
- **Wichtig**: Nur die innere Höhe, ohne Montageabstand!
### 2. SENSOR_MOUNT_OFFSET (Montageabstand)
**Der Abstand vom Sensor bis zur Tank-Oberkante.**
- **Beispiel**: Sensor ist 20 cm über dem Tank montiert → `#define SENSOR_MOUNT_OFFSET 20.0`
- **Warum nötig?**: Sensor kann nicht direkt am Tank befestigt werden, braucht Montageabstand
### 3. SENSOR_MIN_DISTANCE (Mindestabstand)
**Technische Grenze des HC-SR04 Sensors (2 cm).**
- **Standard**: 2.0 cm (nicht ändern!)
- **Zweck**: Warnung wenn Flüssigkeit zu nah am Sensor ist
## Aufbau-Beispiel
```
|
[ HC-SR04 ] | ← Sensor montiert an Decke/Halterung
|
20 cm | ← SENSOR_MOUNT_OFFSET
|
╔═══════════════╗ ← Tank-Oberkante
║ ║
║ Flüssigkeit ║
║ ↕ ║ ← Füllstand (variabel)
║ ║
║ 180 cm ║ ← TANK_HEIGHT
║ ║
║ ║
╚═══════════════╝ ← Tank-Boden
```
## Berechnung
### Leerer Tank:
```
Gemessene Distanz = SENSOR_MOUNT_OFFSET + TANK_HEIGHT
= 20 cm + 180 cm = 200 cm
Füllhöhe = 0 cm
Füllstand = 0%
```
### Voller Tank:
```
Gemessene Distanz = SENSOR_MOUNT_OFFSET
= 20 cm
Füllhöhe = 180 cm (= TANK_HEIGHT)
Füllstand = 100%
```
### Halb voller Tank:
```
Gemessene Distanz = 110 cm
Füllhöhe = 200 cm - 110 cm = 90 cm
Füllstand = (90 / 180) × 100 = 50%
```
## Anpassung an Ihre Installation
### Schritt 1: Tank-Höhe messen
Messen Sie die **innere Höhe** Ihres Tanks von Boden bis Oberkante.
**Beispiel**: 180 cm → `#define TANK_HEIGHT 180.0`
### Schritt 2: Montageabstand messen
Messen Sie den Abstand vom Sensor bis zur Tank-Oberkante.
**Beispiel**: Sensor 20 cm über Tank → `#define SENSOR_MOUNT_OFFSET 20.0`
### Schritt 3: Code hochladen und testen
1. Bei **leerem Tank**:
- Display sollte **0%** anzeigen
- Serial Monitor zeigt Füllhöhe: 0 cm
2. Bei **vollem Tank**:
- Display sollte **100%** anzeigen
- Serial Monitor zeigt Füllhöhe: 180 cm (= TANK_HEIGHT)
3. Falls nicht korrekt:
- Überprüfen Sie TANK_HEIGHT und SENSOR_MOUNT_OFFSET
- Passen Sie die Werte an
## Fehlerdiagnose
### Problem: Füllstand zeigt negative Werte oder 0% bei halbvollem Tank
**Ursache**: SENSOR_MOUNT_OFFSET oder TANK_HEIGHT falsch konfiguriert
**Lösung**:
1. Messen Sie die tatsächliche Distanz bei leerem Tank
2. Berechnen Sie: `SENSOR_MOUNT_OFFSET + TANK_HEIGHT = gemessene Distanz`
3. Passen Sie die Werte entsprechend an
### Problem: Füllstand zeigt über 100%
**Ursache**: Tank ist voller als erwartet oder TANK_HEIGHT zu klein
**Lösung**:
1. Überprüfen Sie TANK_HEIGHT
2. Code begrenzt automatisch auf max. 100%
### Problem: "WARNUNG: Flüssigkeit zu nah am Sensor!"
**Ursache**: Flüssigkeit ist näher als SENSOR_MOUNT_OFFSET + SENSOR_MIN_DISTANCE
**Lösung**:
- Normal bei sehr vollem Tank (>95%)
- Sensor evtl. höher montieren wenn Warnung bei 100% auftritt
## Beispiel-Konfigurationen
### Kleiner Tank (100 cm, Sensor 10 cm darüber)
```cpp
#define TANK_HEIGHT 100.0
#define SENSOR_MOUNT_OFFSET 10.0
```
### Mittelgroßer Tank (180 cm, Sensor 20 cm darüber)
```cpp
#define TANK_HEIGHT 180.0
#define SENSOR_MOUNT_OFFSET 20.0
```
### Großer Tank (300 cm, Sensor 30 cm darüber)
```cpp
#define TANK_HEIGHT 300.0
#define SENSOR_MOUNT_OFFSET 30.0
```
## Kalibrierung
### Methode 1: Bei leerem Tank
1. Entleeren Sie den Tank komplett
2. Laden Sie den Code hoch und notieren Sie die gemessene Distanz
3. Berechnen Sie: `TANK_HEIGHT = gemessene Distanz - SENSOR_MOUNT_OFFSET`
### Methode 2: Bei vollem Tank
1. Füllen Sie den Tank komplett (bis Oberkante)
2. Laden Sie den Code hoch und notieren Sie die gemessene Distanz
3. Diese Distanz = SENSOR_MOUNT_OFFSET
### Methode 3: Mit Maßband
1. Messen Sie TANK_HEIGHT mit Maßband (innere Höhe)
2. Messen Sie SENSOR_MOUNT_OFFSET mit Maßband (Sensor bis Tank-Oberkante)
3. Tragen Sie beide Werte ein
## Genauigkeit
- **HC-SR04 Genauigkeit**: ±0.3 cm
- **Messbereich**: 2 cm - 400 cm
- **Empfohlener Tank-Bereich**: 50 cm - 300 cm
- **Messintervall**: 30 Sekunden (konfigurierbar via `TX_INTERVAL`)