Initial commit: Haussteuerung V2/V3 Web-Interface
This commit is contained in:
+177
@@ -0,0 +1,177 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user