172 lines
3.3 KiB
Markdown
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
|