From 3ff42624f08942b5334315c6da5fca075fd1b735 Mon Sep 17 00:00:00 2001 From: Patrick Schurig Date: Tue, 8 Sep 2026 09:28:43 +0200 Subject: [PATCH] =?UTF-8?q?docs(maquette):=20=C3=A9cran=20=C3=89nergie=20?= =?UTF-8?q?=E2=80=94=20le=20relev=C3=A9=20d'abord,=20la=20maquette=20ensui?= =?UTF-8?q?te?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Quatre demandes de Patrick. Sondé sur .75 avant de dessiner quoi que ce soit : Energy.GetThingPowerLogs répond, six Things demandés, cinq répondent. TRAÇABLE : Maison (dérivée Grid+PV), PAC-Meter, ECS-Meter, Simulated wallbox — tous quatre en smartmeterconsumer, tous à 0 W aujourd'hui sauf Grid et PV. PAS D'HISTORIQUE : V2C Trydan. Sa classe `trydan` ne déclare pas l'interface `smartmeter`, donc elle est ABSENTE de GetThingPowerLogs — la borne simulée, qui la déclare, répond. Sa puissance instantanée reste lisible, sa courbe n'existe pas. Une ligne à zéro dirait « elle n'a rien tiré », ce qui est autre chose. AUCUNE SOURCE : la batterie. Aucun Thing ne porte battery / energystorage / batterymonitor. Donc ni SOC ni charge/décharge — et le « Batterie 0 % » du tableau de bord est un zéro forgé de plus (EnergyData.batterySOC vaut 0 par défaut et personne ne l'écrase). À corriger dans le même lot. HORS NYMEA : la météo. Aucun Thing météo ; Open-Meteo serait un appel externe. Et les trois « on ne voit pas » du premier graphe ont trois causes distinctes, dont deux partagent une racine : `production` est publiée NÉGATIVE, donc la courbe est sous l'axe ET `selfConsumptionPower` (production − export, clampé à 0) rend zéro à tous les pas. Le SOC, lui, est correctement absent. Le signe se corrigera au RENDU, jamais au transport : la magnitude est vérifiée (identité sur 97 échantillons sur 97), mais un .abs() dans `fetchPowerBalanceLogs` effacerait la trace du défaut et masquerait un vrai zéro le jour d'un changement de convention. Maquette publiée : https://claude.ai/code/artifact/f90d71d0-b876-4477-9231-4089d521b8ea Aucune ligne de code écrite — quatre décisions attendent Patrick. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01GKM8FDNHZWogAsjjfB8pSw --- docs/mockups/ecran_energie_refonte.html | 387 ++++++++++++++++++++++++ 1 file changed, 387 insertions(+) create mode 100644 docs/mockups/ecran_energie_refonte.html diff --git a/docs/mockups/ecran_energie_refonte.html b/docs/mockups/ecran_energie_refonte.html new file mode 100644 index 0000000..0ecbbbc --- /dev/null +++ b/docs/mockups/ecran_energie_refonte.html @@ -0,0 +1,387 @@ +Écran Énergie — refonte + + + +
+ +
+
ETM PowerSync · maquette à valider · 8 septembre 2026
+

Écran Énergie — ce que la box permet, et ce qu'elle ne permet pas

+

Quatre demandes, quatre séries traçables, et + deux qui n'ont aucune source. Tout ce qui suit est mesuré sur + .75 ce matin — pas déduit d'un contrat.

+
+ +

01 — le relevéCe que la box publie, par consommateur

+

Energy.GetThingPowerLogs existe et répond. Sonde de +00:00 à 09:00, pas de 15 min, six Things demandés — cinq répondent.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Série demandéeSourceInterfaces du ThingRelevé ce matinVerdict
MaisonGrid + PV, dérivéesmartmeter284 → 3 095 Wtraçable
PACPAC-Metersmartmeterconsumer0 W toute la journéetraçable
ECSECS-Metersmartmeterconsumer0 W toute la journéetraçable
VE 2Simulated wallboxevcharger · smartmeterconsumer0 W toute la journéetraçable
VE 1V2C Trydanevcharger · power — pas smartmeterabsente de la réponsepas d'historique
Batterie (charge / décharge, SOC)—aucun Thing battery · energystorage · batterymonitor—aucune source
Prévision météo—aucun Thing météo sur la box—hors nymea
+
+ +
+ La V2C n'a pas d'historique de puissance, et ce n'est pas un oubli. + Sa classe trydan ne déclare pas l'interface smartmeter, + donc elle n'entre pas dans GetThingPowerLogs — la borne simulée, elle, + la déclare et répond. On peut afficher sa puissance instantanée + (currentPower, et measurement dans la télémétrie), + mais pas sa courbe. Deux bornes côte à côte dont une seule a un passé : l'écran + doit le dire, pas tracer une ligne à zéro. +
+ +
+ Il n'y a pas de batterie sur cette installation. Aucun Thing ne porte les + interfaces que l'app cherche. Donc ni SOC, ni charge, ni décharge — et le + Batterie 0 % affiché aujourd'hui sur le tableau de bord est un + zéro forgé : EnergyData.batterySOC vaut 0 par défaut et + personne ne l'écrase. À corriger dans le même lot. +
+ +

02 — le premier grapheTrois courbes invisibles, trois causes différentes

+

Aucune n'est un problème de dessin. Les trois sont dans les données ou dans leur +lecture, et deux partagent la même racine.

+ +
+
+

Production — sous l'axe

+

La box publie production négatif : −103 W ce matin. + Le transport garde les signes bruts (§7.1 du contrat, à raison), donc la courbe est tracée + à −0,1 kW pendant que l'échelle monte à 3,1 — invisible, collée à l'axe.

+
+
+

Autoconsommation — clouée à zéro

+

selfConsumptionPower calcule production − export + puis > 0 ? … : 0. Avec une production négative le résultat est + toujours zéro. Même racine que la précédente.

+
+
+

SOC — rien à tracer

+

batterySOCSource cherche un Thing + battery/energystorage/batterymonitor et n'en trouve aucun : il rend + null, la courbe n'est pas construite. Comportement correct — + ce qui manque, c'est de le dire.

+
+
+ +
+ Le signe se corrige au RENDU, jamais au transport. Le magnitude est juste : + l'identité acquisition = consommation − |production| tient sur + 97 échantillons sur 97. Mais poser un .abs() dans le transport + effacerait la seule trace qu'on ait du défaut, et masquerait un vrai zéro le jour où la box + changera de convention. La dérivation prend la magnitude ; le champ reste brut. +
+ +

03 — la propositionL'écran

+

Trois blocs. Les cartes disent la journée, le premier graphe dit les +flux, le second dit qui consomme. Chaque nombre porte de quoi il est la fraction.

+ +
+ + +
+
1 — cartes journalières + flux
+
+
Énergie08 sept.
+ +
Aujourd'hui depuis 00:00
+
+
0,08 kWh
Production
+
79 Wh — journée couverte
+
6,47 kWh
Consommation
+
0,02 kWh
Vers réseau
+
6,42 kWh
Depuis réseau
+
70 %
+
Autoconsommation
sur 79 Wh produits
+
1 %
+
Autonomie
sur 6,47 kWh consommés
+
+ +
Flux de la journée kW
+
+ + + + + + + 43 + 210 + 00h09h24h + + + + + + + + + +
+ Production + Consommation + Autoconsommation + SOC batterie +
+
+
SOC — non affichable
+
Aucune batterie déclarée sur cette installation. La courbe n'est pas + masquée : elle n'existe pas.
+
+
+
+
+ + +
+
2 — répartition par consommateur
+
+
Qui consomme kW empilés
+
+ + + + + + + 43 + 210 + 00h09h24h + + + + + + + + PAC · ECS · VE 2 — 0 W mesuré + +
+ Maison + PAC + ECS + VE 2 + VE 1 · Batterie +
+
+
VE 1 (V2C) — pas d'historique
+
La borne ne déclare pas d'interface de comptage : sa puissance + instantanée est lisible, sa courbe n'existe pas. Une ligne à zéro dirait + « elle n'a rien tiré », ce qui est une autre affirmation.
+
+
+
Batterie — aucune source
+
Ni charge ni décharge : rien à empiler.
+
+
+ +
Prévision solaire Open-Meteo
+
+
+ Hors nymea. Aucun Thing météo sur la box : la prévision + viendrait d'un appel HTTP direct de l'app à Open-Meteo, avec les coordonnées de + l'installation. C'est une source externe, donc une décision à part — + et une fonctionnalité de palier Auto. +
+
+
+
+ +
+ +

04 — à trancherCe que je ne décide pas seul

+ +
    +
  1. + Les couleurs des consommateurs n'existent pas dans le thème. +

    app_theme.dart fixe les couleurs de flux (solaire, maison, + réseau, batterie) mais rien pour PAC / ECS / VE. Je propose ambre pour la PAC, sarcelle pour + l'ECS, indigo pour les bornes — trois teintes qui ne rentrent en collision avec aucune + couleur de flux existante. À valider, elles deviendront des tokens.

    +
  2. +
  3. + Une série sans passé : ligne absente ou ligne à zéro ? +

    Je propose absente, et nommée sous le graphe. Une ligne plate à zéro affirme + « cette charge n'a rien tiré », ce que personne n'a mesuré. C'est la règle déjà appliquée + aux cartes de charge, portée au graphe.

    +
  4. +
  5. + Le taux avec son dénominateur — partout, ou seulement quand il est petit ? +

    Je propose partout. Un seuil demanderait une constante inventée, et celle que + j'avais proposée samedi (0,05 kWh) aurait laissé passer les 79 Wh de ce matin. « 70 % sur + 79 Wh produits » se lit juste toute l'année ; « 70 % » ne se lit juste que les bons jours.

    +
  6. +
  7. + La météo, maintenant ou plus tard ? +

    Elle sort du périmètre nymea : appel externe, coordonnées de l'installation à saisir, + gestion du hors-ligne. C'est un lot en soi. Je propose de finir les deux graphes d'abord + et de garder la place à l'écran.

    +
  8. +
+ + + +