Commit Graph

8 Commits

Author SHA1 Message Date
Tallagrand Thierry
1541ccf7b4 La prevision entre dans « La journee » et sur le telephone
Suite du correctif de l onglet Home Assistant. « La journee » avait le meme
angle mort : cadre sur le jour civil, il s arretait a l heure en cours.

Fenetre portee a la journee ENTIERE (dashboard() gagne un parametre `jusqu`),
serie « Encore attendu » en gris translucide a la suite des barres mesurees,
et colonne « Reste attendu » dans le bandeau du haut, a cote de « Solaire
produit ».

Sur le telephone, aucun panneau ajoute — un panneau de plus y est un ecran de
plus a faire defiler. « Soleil restant » rejoint le bandeau Maintenant, a cote
de Excedent ; « Soleil demain » rejoint La nuit qui vient, puisque c est lui
qui decide jusqu ou la batterie peut descendre.

Trois pieges, tous dans la meme direction. La mesure ne doit pas suivre la
fenetre dans le futur : ENERGIE_SQL construisait son axe entre les deux macros
puis reportait la derniere valeur connue, ce qui aurait rempli les heures a
venir avec la puissance de l instant et gonfle l energie du jour — sa borne
haute est desormais least($__timeTo(), now()). FULL OUTER JOIN et non LEFT :
une periode a venir n a aucune ligne de mesure. Et borne haute stricte, sans
quoi une barre « 18/09 00 h » apparaissait dans La journee.

L heure EN COURS n a volontairement pas de barre de prevision : elle est deja
mesuree pour ses minutes ecoulees.

73/73 requetes valides — mais ce controle prouve l execution, pas la grandeur.
Les deux requetes de La journee ont donc ete rejouees a la main avec la vraie
fenetre : 24 lignes, mesures jusqu a 02 h, prevision de 03 h a 23 h, somme des
barres 36,95 kWh contre 37,0 annonces par le bandeau. C est ce recoupement qui
a fait apparaitre le troisieme piege.

Corrige au passage la note du 08/09 sur l acces a l API Grafana : les
apostrophes du .env sont SIMPLES et non doubles, verifie a l octet.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
2026-09-17 02:37:43 +02:00
Tallagrand Thierry
c42b29c76f Le bilan se lit en colonnes : les titres, puis les valeurs
Le format « une ligne par grandeur » etait illisible, et la hauteur du panneau
n'en montrait que trois sur sept. Le tableau rend desormais une ligne
d'en-tetes et une ligne de valeurs, ce qui est la forme attendue pour un
resume.

C'est toujours un panneau `table` et pas un `stat` : ce dernier, sur exactement
cette requete, affichait sept « — » alors que l'API montrait qu'il recevait
sept champs de type number avec leurs valeurs. Une note le rappelle dans le
generateur pour ne pas y revenir.

Les unites reviennent en overrides puisque les libelles n'ont plus a les
porter, avec deux colorations utiles : le reseau importe passe a l'ambre au-dela
de 3 kWh et a l'orange au-dela de 8, l'autonomie a un fond vert au-dessus de
85 %.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
2026-09-08 00:24:00 +02:00
Tallagrand Thierry
2569718ddd Le bilan devient un tableau, parce que le panneau stat ne le rendait pas
Quatre tentatives sur le panneau stat : selecteur de champs, unites, bornes de
l'axe, GROUP BY, retrait de la colonne texte et de son override. A chaque fois
sept « — » a l'ecran.

L'acces a l'API Grafana, obtenu entre-temps, a tranche : /api/ds/query montre
que le serveur renvoyait bien sept champs de type number avec leurs valeurs, y
compris sur la fenetre exacte de la derniere capture. Ce n'etait donc ni la
requete, ni le cache du navigateur, ni le provisioning — md5 du fichier servi
et version en base verifies. Le panneau recevait les donnees et ne les rendait
pas.

Le bilan sort desormais en LIGNES, une par grandeur, dans un panneau table :
celui-ci affiche toujours ce qu'il recoit, et le format se lit tres bien pour un
bilan. L'unite est portee par le libelle, ce qui permet de melanger kWh et
pourcentage dans la meme colonne.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
2026-09-08 00:19:46 +02:00
Tallagrand Thierry
c387415c4f Le bilan n expose plus que des nombres
L'API Grafana, enfin accessible, a montre que le serveur renvoyait bien une
ligne de valeurs au panneau : le defaut etait donc dans le rendu, pas dans la
donnee. Restaient deux elements que le panneau « Sur la periode » des vehicules,
lui fonctionnel, n'a pas : une colonne de texte dans le resultat, et un override
`custom.hidden` pose pour la masquer — propriete qui n'existe pas sur un
panneau stat.

Les deux disparaissent. Le GROUP BY, lui, reste necessaire et s'ecrit desormais
sur une expression constante, `GROUP BY (1 = 1)`, qui ne demande aucune colonne
dans le SELECT. PostgreSQL refuse `GROUP BY true` (non-integer constant) mais
accepte cette forme.

Verifie par l'API sur la fenetre « Last 24 hours » : sept champs, tous de type
number, valeurs presentes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
2026-09-08 00:14:20 +02:00
Tallagrand Thierry
41fa2c9b3b Le bilan groupe sur une colonne constante, et s affiche
Le panneau rendait sept « — » malgre trois tentatives : correction du selecteur
de champs, ajout des unites, bornes de l'axe tirees des donnees au lieu des
macros de temps. Verifie entre-temps que ce n'etait ni le cache du navigateur
ni le rechargement — le md5 du fichier servi par Grafana est identique a celui
du depot — et que le serveur ne journalisait aucune erreur de requete.

Il ne restait qu'une difference structurelle avec l'histogramme du meme
tableau, qui partage exactement les memes CTE et s'affiche sans probleme :
celui-ci groupe par heure, le bilan agregeait globalement. Le bilan groupe
desormais sur une colonne constante, masquee a l'affichage.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
2026-09-07 23:57:00 +02:00
Tallagrand Thierry
686c2bad57 Le bilan tire ses bornes des donnees, plus des macros de temps
Le panneau rendait sept « — » alors que sa requete donnait les bons totaux en
psql, avec la substitution exacte que Grafana applique, et que le serveur ne
journalisait aucune erreur : une ligne de NULL, donc un axe de minutes vide
cote Grafana.

Les bornes de generate_series venaient de $__timeFrom() et $__timeTo(). Elles
viennent desormais du min et du max de la table sur la fenetre, et la seule
macro restante est $__timeFilter(ts) — exactement la forme du panneau « Sur la
periode » des vehicules, qui lui a toujours fonctionne.

C'est aussi plus juste physiquement : on n'extrapole plus au-dela de la
derniere mesure observee.

Note d'exploitation : le GRAFANA_ADMIN_PASSWORD du .env n'est pas celui en
service. Grafana n'applique cette variable qu'a la creation initiale de
l'admin, jamais a un compte deja existant — l'API refuse donc ce mot de passe.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
2026-09-07 23:49:47 +02:00
Tallagrand Thierry
44eb415cb8 Les deux panneaux du haut affichent enfin quelque chose
Le bilan rendait sept tirets et l'histogramme « No numeric fields found », alors
que verifier-dashboards donnait les deux requetes vertes : il prouve qu'une
requete s'execute, pas qu'elle s'affiche.

FILTRE_VUE ne se recopie pas d'un tableau a l'autre : cette transformation ne
garde que les colonnes nommees par la variable $vue, propre a « Le systeme ».
Sur un tableau qui n'a pas cette variable, elle filtre tout. Retiree.

champs="/.*/" est reserve aux etats d'alarme, qui sont du texte ; sur des
colonnes numeriques il empeche le rendu. Remis a "" comme le panneau « Sur la
periode » des vehicules, et les unites kWh et % ajoutees en overrides — sans
elles les chiffres etaient nus.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
2026-09-07 23:41:36 +02:00
Tallagrand Thierry
fa5ad0d98a Un tableau pour la journee, et le report cesse de fabriquer des kilowattheures
Il manquait le bilan qu'on cherche en premier : ce qui a ete produit, consomme,
achete, et ou c'est alle. « La journee » (evcs-journee) le donne sur la fenetre
now/d — le jour civil, pas les 24 dernieres heures, sinon deux journees se
melangent et le total de production n'est plus comparable d'un jour a l'autre.

En controlant ses chiffres, un defaut bien plus large est apparu : la voiture
annoncait 6,9 kWh la ou le compteur cumulatif de la borne et la table des
sessions donnent tous deux 3,6.

Le report de la derniere valeur connue propageait la MOYENNE de la minute au
lieu de sa DERNIERE valeur. Le 07/09 a 14:28 la borne passe de 1577 a 0 W dans
la meme minute : cette minute vaut 788 W en moyenne, et le report la maintenait
pendant les heures sans ecriture qui suivaient — 0,79 kWh fabriques sur la
seule heure de 15 h, exactement 788 x 60 / 1000.

Le defaut ne se voyait ni sur le solaire ni sur la maison, ecrits en continu.
Il frappe les grandeurs intermittentes, au premier rang la borne qui passe
l'essentiel de la journee a zero. Les colonnes « Voiture » de « Le systeme » et
« Les vehicules » etaient donc fausses depuis leur creation, en surestimation.

Corrige dans les trois constructeurs de requetes : la minute observee garde sa
moyenne, juste pour l'energie consommee dans cette minute, mais le report
propage la derniere valeur reellement lue. Aucun seuil, aucune peremption
arbitraire. Apres correction la voiture tombe a 3,6 kWh, egal au centieme a la
somme des sessions.

verifier-dashboards annoncait 73/73 avec le chiffre faux : il prouve qu'une
requete s'execute, pas qu'elle rend la bonne grandeur. Deuxieme fois en trois
jours qu'une source independante est le seul controle qui attrape le defaut.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
2026-09-07 23:10:55 +02:00