Files
haus-steuerung/PROJECT.md
T

6.9 KiB

Haussteuerung V2 - Projekt Dokumentation

Projektübersicht

Webbasierte Haussteuerung für SPS-Steuerung (AWP-Webserver)

Dateistruktur

web/
├── indexV2.htm           # Hauptseite mit Iframes
├── form.css              # Zentrales CSS
├── lichtV2.htm           # Lichtsteuerung
├── heizungV2.htm         # Heizungssteuerung
├── steckdosenV2.htm      # Steckdosensteuerung
├── rolladen.htm          # Rolladensteuerung
├── stromzaehler.htm      # Stromzähler mit Chart
├── licht_state.html      # Licht Status (wird von SPS befüllt)
├── heizung_state.html    # Heizung Status
├── steckdosen_state.html # Steckdosen Status
├── stromzaehler_state.html # Stromzähler Status
├── WebAppConfig.json     # AWP-Webserver Konfiguration
├── Script/
│   └── tth_script.js     # JavaScript Funktionen
└── images/               # Bilder und Icons

AWP Variablen

Licht (lichtV2.htm)

  • "Lichtmerker Küche"
  • "Lichtmerker Essen"
  • "Lichtmerker Wohnen 1"
  • "Lichtmerker Wohnen 2"
  • "Lichtmerker HWR"
  • "Lichtmerker Arbeiten"
  • "Lichtmerker Kind 3"
  • "Lichtmerker Dusche"
  • "Lichtmerker Abstellraum"
  • "Lichtmerker Eltern"
  • "Lichtmerker Noah"
  • "Lichtmerker Niko"
  • "Lichtmerker Bad"
  • "Kickertaste"
  • "wled_DB".Helligkeit
  • "wled_DB".Befehl
  • "wled_DB".RGB_hex

Heizung (heizungV2.htm)

  • "Temp Wohnen", "Temp Arbeiten", "Temp HWR", "Temp Bad", "Temp Eltern", "Temp Noah", "Temp Mika", "Temp Niko", "Temp Dusche"
  • "Einstellungen".Heizung."Heizung Wohnen min/max"
  • "Einstellungen".Heizung."Heizung Arbeiten min/max"
  • "Einstellungen".Heizung."Heizung HWR min/max"
  • "Einstellungen".Heizung."Heizung Bad min/max"
  • "Einstellungen".Heizung."Heizung Eltern min/max"
  • "Einstellungen".Heizung."Heizung Kind1 min/max"
  • "Einstellungen".Heizung."Heizung Kind2 min/max"
  • "Einstellungen".Heizung."Heizung Gäste min/max"
  • "Einstellungen".Heizung."Heizung Dusche min/max"

Steckdosen (steckdosenV2.htm)

  • "Steckdose Deele Garder"
  • "Steckdose Wohnen"
  • "Steckdose Essen"
  • "Steckdose Arbeiten"
  • "Steckdose Kind 1"
  • "Steckdose Kind 2"
  • "Steckdose Gäste"
  • "Steckdose Eltern"
  • "Arduino Settimio"."Funksteckdose 1 an/aus"
  • "Arduino Settimio"."KDY 1 an/aus"
  • "Arduino Settimio"."KDY 2 an/aus"
  • "Arduino Settimio"."Funksteckdose 4 an/aus"

Rolladen (rolladen.htm)

  • "Rolladenmerker Ess l/r/m auf/ab"
  • "Rolladenmerker Woh l/r auf/ab"
  • "Rolladenmerker Wohtü auf/ab"
  • "Rolladenmerker Arbei auf/ab"
  • "Rolladenmerker HWR auf/ab"
  • "Rolladenmerker Küc l/r auf/ab"
  • "Rolladenmerker Elter auf/ab"
  • "Rolladenmerker Noah auf/ab"
  • "Rolladenmerker Bad auf/ab"
  • "Rolladenmerker Niko auf/ab"
  • "Rolladenmerker Mika auf/ab"
  • "Rolladenmerker Dusche au/ab"
  • "Rolladen alle auf/ab"
  • "Jalousie_DB".Urlaub

Stromzähler (stromzaehler.htm)

  • 12 Zählerwerte aus stromzaehler_state.html
  • Berechnung: -1 bis -8 als Differenzwerte

Sonstige (indexV2.htm)

  • "Aufgang_Untergang".aktuelle_CPU_Zeit.*
  • "Aufgang_Untergang".Aufgang.HOUR/MINUTE
  • "Aufgang_Untergang".Untergang.HOUR/MINUTE
  • "Aufgang_Untergang".Aufgang_offset
  • "Aufgang_Untergang".Untergang_offset
  • "Türöffner Handy"
  • "Arduino Settimio".Garagentor 1
  • "Arduino Settimio".Garagentor 2

CSS (form.css)

  • .ui-card - Card-Container mit Hintergrund
  • .ui-table - Tabellen-Styling
  • .ui-btn - Button-Styling (primary, on, off)
  • .ui-iconbtn - Icon-Buttons
  • .auto-style6 - Versteckte Status-Elemente (color: transparent, font-size: 1px)

JavaScript

  • tth_script.js - Icon-Funktionen (leuchtet_icon, heizt_icon, strom_icon, urlaub_icon)
  • Iframe-Resize in indexV2.htm
  • Stromzähler: Differenzberechnung für -1 bis -8
  • Stromzähler: Canvas-basierter Leistungs-Chart (letzte 5 Min.)

Wichtige Änderungen

  • OutputArea in allen Seiten mit clip:rect(0,0,0,0) versteckt
  • Header-Zeile "Raum | Taster" aus steckdosenV2.htm und rolladen.htm entfernt
  • Erste Tabellenzeile nicht mehr hervorgehoben
  • Stromzähler-Werte untereinander angeordnet
  • Stromzähler: -1 bis -8 als Differenzwerte

Server

  • AWP-Webserver auf SPS (192.168.0.90)
  • Standard-Seite: indexV2.htm

V3 (Single-Page, neu)

Parallel zu V2, lässt V2 unangetastet. Erreichbar über indexV3.htm.

Dateien V3

  • indexV3.htm — Produktivseite mit SPS-Web-API-Anbindung.
  • indexV3_preview.htm — reine Optik-Vorschau ohne SPS, mit Dummy-Daten.
  • formV3.css — CSS für V3 (Grid, Karten, responsive Stromzähler-Bereich).
  • Script/tth_v3_api.js — JavaScript für indexV3.htm.

Architektur

  • Keine Iframes, keine AWP-Formulare.
  • Kommunikation mit der S7-1500 über die integrierte Web-API (/api/jsonrpc).
  • Lesen per PlcProgram.Read (Batch), schreiben per PlcProgram.Write.
  • Anmeldung über Api.Login mit Token (aktuell Benutzer 111).
  • Status wird zyklisch gelesen und in lastValues gepuffert.
  • Schreibaktionen erfolgen direkt beim Klick auf Buttons/Inputs.

Module in indexV3.htm

  1. Stromzähler — Tacho, Werte (Bezug/Einspeisung/Wemos), Power-Chart, Daily-Chart.
  2. Licht — 14 Räume + WLED (Helligkeit/Farbe).
  3. Heizung — 9 Räume mit IST, SOLL min/max, heizt-Status.
  4. Rolladen — alle Räume + Urlaub-Modus.
  5. Steckdosen — 8 normale Steckdosen + 4 Funksteckdosen.
  6. Haus — Haustür + Garagentor.
  7. Uhrzeit — CPU-Uhr, Sonnenauf-/untergang.

Wichtige Variablen-Unterschiede

  • Licht: Lesen aus licht_state.html ("Licht Küche" etc.), Schreiben auf "Lichtmerker ..." etc. (unterschiedliche Variablen!).
  • Steckdosen: Lesen und Schreiben identisch. Normale Steckdosen sind Bool: false = an, true = aus. Funksteckdosen haben separate an/aus-Variablen.
  • Rolladen: Separate auf/ab-Variablen, Schreibwert true.
  • Heizung: SOLL-Werte werden als Float geschrieben.
  • WLED: "wled_DB".Helligkeit (Int), "wled_DB".RGB_hex (String), "wled_DB".Befehl (Int).

Charts

  • Tacho (v3_gauge): Canvas, 180°-Skala, -8000 bis +8000 W, grün=Einspeisung, rot=Bezug.
  • Power-Chart (v3_power_chart): Letzte 5 Minuten Leistung, weiche Kurve, Legende "akt. Leistung: xx W".
  • Daily-Chart (v3_daily_chart): Balken für die letzten 8 Tage, Wochentage als X-Achse, heute gelb hervorgehoben, blaue Linie für täglichen Bezug.

Responsive Verhalten

  • Stromzähler-Bereich bricht auf kleinen Bildschirmen um.
  • Canvas-Elemente skalieren mit aspect-ratio: 2 / 1 und bleiben scharf (HiDPI über fitCanvas).

Bekannte Einschränkungen / TODO

  • Login-Daten (user: '111', password: '1q2w3e$R') sind im Klartext in tth_v3_api.js hinterlegt.
  • Heizungs-Validierung prüft nur min < max clientseitig.
  • Keine Rückmeldung, ob ein Schreibvorgang in der SPS tatsächlich wirksam wurde (nur API-Antwort).

Preview

  • indexV3_preview.htm enthält feste Dummy-Werte und kein Polling.
  • Wird verwendet, um das Layout offline zu testen.
  • Taster in der Preview haben keine Funktion.