3.3 KiB
3.3 KiB
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
# 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
docker build -t table-server .
Container starten
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:
version: '3.8'
services:
table-server:
build: .
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
Starten mit:
docker-compose up -d
Verwendung
- Öffne
http://localhost:8080im Browser - 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
- Klicke auf "Speichern" um die Änderungen zu persistieren
- Die Daten werden in
table_config.jsongespeichert
API Endpoints
GET /- Zeigt die HTML-Seite mit der TabellePOST /api/save- Speichert die Tabellendaten
Beispiel API-Request
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:
{
"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