paramod-rust/README.md
2025-11-20 20:11:48 +01:00

172 lines
3.3 KiB
Markdown

# Tabellen Webserver
Ein einfacher Rust-Webserver, der eine editierbare 3x3-Tabelle bereitstellt und in einer JSON-Konfigurationsdatei persistiert.
## Projektstruktur
```
table-server/
├── src/
│ └── main.rs
├── templates/
│ └── index.html
├── static/
│ ├── style.css
│ └── script.js
├── Cargo.toml
├── Dockerfile
├── .gitignore
└── README.md
```
## Funktionen
- Webbasierte Sensor-Konfigurationstabelle mit 6 Spalten
- Editierbare Textfelder (Bezeichnung, Adresse, Type, Faktor)
- Toggle-Schalter für Boolean-Werte (MQTT, InfluxDB)
- Persistierung in JSON-Datei
- Einfache REST-API
- Docker-Unterstützung
## Lokale Entwicklung
### Voraussetzungen
- Rust (Version 1.75 oder höher)
- Cargo
### Installation und Start
```bash
# Projekt erstellen
cargo new table-server
cd table-server
# Dependencies installieren und starten
cargo run
```
Der Server läuft dann auf `http://localhost:8080`
## Docker
### Container bauen
```bash
docker build -t table-server .
```
### Container starten
```bash
docker run -p 8080:8080 -v $(pwd)/data:/app/data table-server
```
Mit Volume-Mount bleibt die Konfigurationsdatei auch nach Container-Neustarts erhalten.
### Docker Compose (optional)
Erstelle eine `docker-compose.yml`:
```yaml
version: '3.8'
services:
table-server:
build: .
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
```
Starten mit:
```bash
docker-compose up -d
```
## Verwendung
1. Öffne `http://localhost:8080` im Browser
2. Bearbeite die Sensor-Konfigurationen:
- **Bezeichnung**: Name des Sensors
- **Adresse**: IP-Adresse oder Identifier
- **Type**: Sensor-Typ (z.B. Temperatur, Luftfeuchtigkeit)
- **Faktor**: Numerischer Korrekturfaktor
- **MQTT**: Toggle-Schalter für MQTT-Aktivierung
- **InfluxDB**: Toggle-Schalter für InfluxDB-Aktivierung
3. Klicke auf "Speichern" um die Änderungen zu persistieren
4. Die Daten werden in `table_config.json` gespeichert
## API Endpoints
- `GET /` - Zeigt die HTML-Seite mit der Tabelle
- `POST /api/save` - Speichert die Tabellendaten
### Beispiel API-Request
```bash
curl -X POST http://localhost:8080/api/save \
-H "Content-Type: application/json" \
-d '{
"rows": [
{
"bezeichnung": "Sensor 1",
"adresse": "192.168.1.100",
"type": "Temperatur",
"faktor": "1.0",
"mqtt": true,
"influxdb": false
},
{
"bezeichnung": "Sensor 2",
"adresse": "192.168.1.101",
"type": "Luftfeuchtigkeit",
"faktor": "0.5",
"mqtt": false,
"influxdb": true
}
]
}'
```
## Konfigurationsdatei
Die Sensor-Daten werden in `table_config.json` gespeichert:
```json
{
"rows": [
{
"bezeichnung": "Sensor 1",
"adresse": "192.168.1.100",
"type": "Temperatur",
"faktor": "1.0",
"mqtt": true,
"influxdb": false
},
{
"bezeichnung": "Sensor 2",
"adresse": "192.168.1.101",
"type": "Luftfeuchtigkeit",
"faktor": "0.5",
"mqtt": false,
"influxdb": true
},
{
"bezeichnung": "Sensor 3",
"adresse": "192.168.1.102",
"type": "Druck",
"faktor": "2.0",
"mqtt": true,
"influxdb": true
}
]
}
```
## Lizenz
MIT