From 220a16c13d7666812f8957caaba53edba76d12fe Mon Sep 17 00:00:00 2001 From: retr0 <42kdesigners@gmail.com> Date: Tue, 28 Apr 2026 22:27:35 +0200 Subject: [PATCH] =?UTF-8?q?Redesign:=20Kreuz-Layout=20=E2=80=94=20Solar=20?= =?UTF-8?q?oben,=20Grid=20links,=20Haus=20Mitte,=20Batterie=20rechts,=20EV?= =?UTF-8?q?=20unten=20(v1.6.5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- haos-addon/config.yaml | 2 +- haos-addon/src/web/index.html | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/haos-addon/config.yaml b/haos-addon/config.yaml index 3a56345..a23646b 100644 --- a/haos-addon/config.yaml +++ b/haos-addon/config.yaml @@ -1,5 +1,5 @@ name: ShineBridge -version: "1.6.4" +version: "1.6.5" slug: shinebridge description: Growatt Wechselrichter lokal in Home Assistant — Modbus TCP via ShineLAN-X, MQTT Discovery, Web UI url: https://gitea.bitfire.work/retr0/shinebridge diff --git a/haos-addon/src/web/index.html b/haos-addon/src/web/index.html index def201e..2f40b04 100644 --- a/haos-addon/src/web/index.html +++ b/haos-addon/src/web/index.html @@ -450,12 +450,12 @@ function renderEnergy(inverters, aggregates) { // Path segments (bezier from node-edge to node-edge) // Solar(145,75) bottom→ House(260,180) top; Grid(375,75) bottom→ House top // House bottom → Battery(145,292) top; House bottom → EV(375,292) top - // Alle 5 Nodes immer anzeigen — Batterie nur gedimmt wenn inaktiv + // Kreuz-Layout: Solar oben, Grid links, Haus Mitte, Batterie rechts, Wallbox unten const SEG = [ - { id:'ep-pv', d:`M 145,128 C 145,172 260,172 260,158`, col:C.pv, on:pvOn, rev:false }, - { id:'ep-grid', d:`M 375,128 C 375,172 260,172 260,158`, col:impOn?C.imp:C.exp, on:impOn||expOn, rev:expOn }, - { id:'ep-bat', d:`M 247,246 C 213,282 145,282 145,276`, col:C.bat, on:chOn||dchOn, rev:dchOn }, - { id:'ep-ev', d:`M 273,246 C 307,282 375,282 375,276`, col:C.ev, on:evOn, rev:false }, + { id:'ep-pv', d:`M 260,121 C 258,138 262,146 260,158`, col:C.pv, on:pvOn, rev:false }, + { id:'ep-grid', d:`M 140,200 C 162,197 192,203 214,200`, col:impOn?C.imp:C.exp, on:impOn||expOn, rev:expOn }, + { id:'ep-bat', d:`M 306,200 C 330,197 356,203 380,200`, col:C.bat, on:chOn||dchOn, rev:dchOn }, + { id:'ep-ev', d:`M 260,244 C 258,261 262,269 260,279`, col:C.ev, on:evOn, rev:false }, ]; const defs = SEG.map(s => ``).join(''); @@ -471,15 +471,16 @@ function renderEnergy(inverters, aggregates) { const batLbl = chOn ? 'LADEN' : dchOn ? 'ENTLADEN' : 'BATTERIE'; const batSub = batSoc != null ? Math.round(batSoc) + '%' : ''; - const svg = ` + // ViewBox: Grid-left=51, Bat-right=469, Solar-top=33, EV-bottom=367 → 520×410 + const svg = ` ${defs} ${lines} ${dotsSvg} - ${node(145, 84, 'solar', 'SOLAR', pvW, C.pv, pvOn, '')} - ${node(375, 84, 'grid', gridLbl, gridVal, gridCol, impOn||expOn, '')} - ${node(260, 202, 'house', 'HAUS', houseW, C.txt, true, '')} - ${node(145, 320, 'bat', batLbl, batVal, C.bat, chOn||dchOn, batSub)} - ${node(375, 320, 'ev', 'WALLBOX', evW, C.ev, evOn, '')} + ${node(260, 77, 'solar', 'SOLAR', pvW, C.pv, pvOn, '')} + ${node( 95, 200, 'grid', gridLbl, gridVal, gridCol, impOn||expOn, '')} + ${node(260, 200, 'house', 'HAUS', houseW, C.txt, true, '')} + ${node(425, 200, 'bat', batLbl, batVal, C.bat, chOn||dchOn, batSub)} + ${node(260, 323, 'ev', 'WALLBOX', evW, C.ev, evOn, '')} `; function kwhCard(label, val, col) {