Go to file
2025-11-20 20:12:25 +01:00
src jetzt mit Header, 3 Tabellen 2025-11-20 20:12:25 +01:00
static jetzt mit Header, 3 Tabellen 2025-11-20 20:12:25 +01:00
templates jetzt mit Header, 3 Tabellen 2025-11-20 20:12:25 +01:00
.gitignore jetzt mit Header, 3 Tabellen 2025-11-20 20:12:25 +01:00
Cargo.lock jetzt mit Header, 3 Tabellen 2025-11-20 20:12:25 +01:00
Cargo.toml jetzt mit Header, 3 Tabellen 2025-11-20 20:12:25 +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 jetzt mit Header, 3 Tabellen 2025-11-20 20:12:25 +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
│   └── settings.html
├── static/
│   ├── style.css
│   ├── script.js
│   └── settings.js
├── Cargo.toml
├── Dockerfile
├── .gitignore
└── README.md

Funktionen

  • 3 separate Tabellen für verschiedene Sensor-Gruppen
  • Navigation mit aktivem Status-Indikator
  • Header mit Logo für professionelles Erscheinungsbild
  • Zeilen hinzufügen/löschen dynamisch zur Laufzeit
  • Einstellungsseite für MQTT und InfluxDB Konfiguration
  • Editierbare Textfelder (Bezeichnung, Adresse, Type, Faktor)
  • Toggle-Schalter für Boolean-Werte (MQTT, InfluxDB)
  • Zentrale JSON-Persistierung für alle Tabellen und Einstellungen
  • REST-API für Daten-Management
  • Docker-Unterstützung
  • Responsive Design

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. Navigiere zwischen den Tabellen über das Menü:
    • Tabelle 1, 2, 3: Verschiedene Sensor-Gruppen
    • ⚙️ Einstellungen: MQTT und InfluxDB Konfiguration
  3. In den Tabellen:
    • Zeile hinzufügen: Neue Sensor-Einträge erstellen
    • 🗑️ Löschen: Einzelne Zeilen entfernen
    • Felder bearbeiten:
      • 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
  4. 💾 Speichern: Änderungen persistieren
  5. Alle Daten werden zentral in table_config.json gespeichert

API Endpoints

  • GET / - Zeigt Tabelle 1
  • GET /table/table2 - Zeigt Tabelle 2
  • GET /table/table3 - Zeigt Tabelle 3
  • GET /settings - Zeigt Einstellungsseite
  • POST /api/save - Speichert eine Tabelle
  • POST /api/save-settings - Speichert die Einstellungen
  • GET /static/* - Statische Dateien (CSS, JS)

Beispiel API-Request (Tabelle speichern)

curl -X POST http://localhost:8080/api/save \
  -H "Content-Type: application/json" \
  -d '{
    "table_id": "table1",
    "rows": [
      {
        "bezeichnung": "Sensor 1",
        "adresse": "192.168.1.100",
        "type": "Temperatur",
        "faktor": "1.0",
        "mqtt": true,
        "influxdb": false
      }
    ]
  }'

Beispiel API-Request (Einstellungen speichern)

curl -X POST http://localhost:8080/api/save-settings \
  -H "Content-Type: application/json" \
  -d '{
    "mqtt_broker": "localhost",
    "mqtt_port": "1883",
    "influxdb_url": "http://localhost:8086",
    "influxdb_token": "your-token-here"
  }'

Konfigurationsdatei

Die komplette Anwendungskonfiguration wird in table_config.json gespeichert:

{
  "table1": [
    {
      "bezeichnung": "Temp Sensor 1",
      "adresse": "192.168.1.100",
      "type": "Temperatur",
      "faktor": "1.0",
      "mqtt": true,
      "influxdb": false
    },
    {
      "bezeichnung": "Temp Sensor 2",
      "adresse": "192.168.1.101",
      "type": "Temperatur",
      "faktor": "1.0",
      "mqtt": false,
      "influxdb": true
    }
  ],
  "table2": [
    {
      "bezeichnung": "Humidity Sensor 1",
      "adresse": "192.168.1.200",
      "type": "Luftfeuchtigkeit",
      "faktor": "0.5",
      "mqtt": true,
      "influxdb": true
    }
  ],
  "table3": [
    {
      "bezeichnung": "Pressure Sensor 1",
      "adresse": "192.168.1.300",
      "type": "Druck",
      "faktor": "2.0",
      "mqtt": true,
      "influxdb": false
    }
  ],
  "settings": {
    "mqtt_broker": "localhost",
    "mqtt_port": "1883",
    "influxdb_url": "http://localhost:8086",
    "influxdb_token": ""
  }
}

Lizenz

MIT