6.9 KiB
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ürindexV3.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 perPlcProgram.Write. - Anmeldung über
Api.Loginmit Token (aktuell Benutzer111). - Status wird zyklisch gelesen und in
lastValuesgepuffert. - Schreibaktionen erfolgen direkt beim Klick auf Buttons/Inputs.
Module in indexV3.htm
- Stromzähler — Tacho, Werte (Bezug/Einspeisung/Wemos), Power-Chart, Daily-Chart.
- Licht — 14 Räume + WLED (Helligkeit/Farbe).
- Heizung — 9 Räume mit IST, SOLL min/max, heizt-Status.
- Rolladen — alle Räume + Urlaub-Modus.
- Steckdosen — 8 normale Steckdosen + 4 Funksteckdosen.
- Haus — Haustür + Garagentor.
- 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 / 1und bleiben scharf (HiDPI überfitCanvas).
Bekannte Einschränkungen / TODO
- Login-Daten (
user: '111',password: '1q2w3e$R') sind im Klartext intth_v3_api.jshinterlegt. - Heizungs-Validierung prüft nur
min < maxclientseitig. - Keine Rückmeldung, ob ein Schreibvorgang in der SPS tatsächlich wirksam wurde (nur API-Antwort).
Preview
indexV3_preview.htmenthält feste Dummy-Werte und kein Polling.- Wird verwendet, um das Layout offline zu testen.
- Taster in der Preview haben keine Funktion.