Files

178 lines
6.9 KiB
Markdown

# 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.