Go to file
2025-11-20 20:11:48 +01:00
src Erste Version 2025-11-20 20:11:48 +01:00
static Erste Version 2025-11-20 20:11:48 +01:00
templates Erste Version 2025-11-20 20:11:48 +01:00
Cargo.lock Erste Version 2025-11-20 20:11:48 +01:00
Cargo.toml Erste Version 2025-11-20 20:11:48 +01:00
Dockerfile Erste Version 2025-11-20 20:11:48 +01:00
LICENSE Initial commit 2025-11-20 19:16:32 +01:00
README.md Erste Version 2025-11-20 20:11:48 +01:00

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

  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

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