# 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