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
This commit is contained in:
82
HANDOFF.md
82
HANDOFF.md
@@ -5614,9 +5614,28 @@ tels quels a `curl`, d'ou le 401. Retirer les guillemets encadrants suffit :
|
||||
|
||||
```sh
|
||||
V=$(sudo sed -n 's/^GRAFANA_ADMIN_PASSWORD=//p' .env | tr -d '\r\n')
|
||||
PW=$(printf '%s' "$V" | sed -e 's/^"//' -e 's/"$//')
|
||||
PW=$(printf '%s' "$V" | sed -e "s/^['\"]//" -e "s/['\"]$//")
|
||||
```
|
||||
|
||||
⚠️ **CORRECTION du 17/09/2026 : ce sont des apostrophes SIMPLES, pas des
|
||||
guillemets doubles** — verifie a l'octet (`od -c` sur le premier et le dernier
|
||||
caractere). La commande ci-dessus a ete elargie aux deux formes ; celle que
|
||||
j'avais ecrite le 08/09 ne retirait rien et rendait donc toujours 401.
|
||||
|
||||
⚠️ **ET GRAFANA BLOQUE LE COMPTE APRES QUELQUES ECHECS** :
|
||||
`too many consecutive incorrect login attempts for user - login for user
|
||||
temporarily blocked`. En sondant le mot de passe le 17/09 j'ai verrouille
|
||||
`admin` pour quelques minutes — **le proprietaire ne pouvait plus se
|
||||
connecter a son interface non plus**. Ne jamais essayer un mot de passe en
|
||||
boucle sur cette API : extraire, verifier la longueur, essayer UNE fois.
|
||||
Consequence pratique : une fois le compte bloque, un mot de passe CORRECT est
|
||||
lui aussi refuse, donc l'echec ne prouve plus rien.
|
||||
|
||||
**Et l'API n'est pas necessaire pour verifier un tableau provisionne** : le
|
||||
fournisseur lit les FICHIERS montes (`updateIntervalSeconds: 30`), pas l'API.
|
||||
Il suffit donc de controler le contenu du fichier vu de l'interieur du
|
||||
conteneur et l'absence de ligne `provision` en erreur dans son journal.
|
||||
|
||||
L'API repond alors du premier coup. Interroger un panneau se fait par
|
||||
`/api/ds/query` depuis l'interieur du conteneur `evcs-grafana` :
|
||||
|
||||
@@ -6951,3 +6970,64 @@ la confiance dans la detection.**
|
||||
|
||||
---
|
||||
*Document mis a jour le : 17/09/2026 (~02:20) — chien de garde : `startedAt` absent lu comme une panne, valeur de repos divergente, confirmation sur deux cycles*
|
||||
|
||||
## 71. Session du 17/09/2026 — La prevision entre dans les tableaux Grafana
|
||||
|
||||
Suite du correctif de l'onglet « Prevision vs reel » de Home Assistant : le
|
||||
proprietaire a choisi **« La journee » d'abord, puis la ligne sur le
|
||||
telephone**.
|
||||
|
||||
### « La journee » (`evcs-journee`)
|
||||
Ce tableau avait exactement le meme angle mort : cadre sur `now/d`, il
|
||||
s'arretait a l'heure en cours. Une journee dont on ne montre que la moitie
|
||||
ecoulee ne repond pas a la question qu'on se pose en l'ouvrant a 10 h.
|
||||
|
||||
- Fenetre portee a **`now/d` → `now/d`** (la journee ENTIERE, fin du jour
|
||||
comprise). `dashboard()` gagne un parametre `jusqu`.
|
||||
- Le graphe horaire gagne une serie **« Encore attendu »**, gris translucide,
|
||||
a la suite des barres mesurees.
|
||||
- Le bandeau du haut gagne une colonne **« Reste attendu »**, a cote de
|
||||
« Solaire produit ». Deux chiffres cote a cote : ce qui est fait, ce qui vient.
|
||||
|
||||
### « Sur le telephone » (`evcs-telephone`)
|
||||
Aucun panneau ajoute — la contrainte de ce tableau est qu'un panneau de plus
|
||||
est un ecran de plus a faire defiler. Les deux chiffres rejoignent donc des
|
||||
bandeaux existants, chacun la ou il sert :
|
||||
- **« Soleil restant »** dans *Maintenant*, a cote de « Excedent » : ce qui
|
||||
reste a capter aujourd'hui ;
|
||||
- **« Soleil demain »** dans *La nuit qui vient* : c'est lui qui decide jusqu'ou
|
||||
la batterie peut descendre cette nuit.
|
||||
|
||||
Releve au deploiement : 60 % de batterie, marge +18,6, **37,0 kWh restants
|
||||
aujourd'hui**, 4,6 kWh a couvrir, relais du solaire a 09 h, **28,4 kWh annonces
|
||||
demain**.
|
||||
|
||||
### ⚠️ TROIS PIEGES RENCONTRES, tous dans la meme direction
|
||||
1. **La mesure ne doit pas suivre la fenetre dans le futur.** `ENERGIE_SQL`
|
||||
construisait son axe entre `$__timeFrom()` et `$__timeTo()` puis reportait la
|
||||
derniere valeur connue. Etendre la fenetre a la fin du jour 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())`.
|
||||
`BILAN_BASE` etait deja immunise : il derive ses bornes de `min(ts)/max(ts)`
|
||||
des donnees, pas des macros.
|
||||
2. **`FULL OUTER JOIN`, pas `LEFT`.** Une periode a venir n'a AUCUNE ligne de
|
||||
mesure et une periode passee aucune prevision ; un `LEFT JOIN` depuis la
|
||||
mesure aurait fait disparaitre toutes les barres de prevision.
|
||||
3. **Borne haute STRICTE.** Avec `<=`, « La journee » affichait une barre
|
||||
`18/09 00 h`. Une periode qui commence pile a la fin de la fenetre appartient
|
||||
a la suivante.
|
||||
|
||||
Et une regle de contenu : **l'heure EN COURS n'a pas de barre de prevision**.
|
||||
Elle est deja mesuree pour ses minutes ecoulees ; y superposer une prevision
|
||||
d'heure pleine ferait compter deux fois la meme heure.
|
||||
|
||||
### Verification
|
||||
`verifier-dashboards.mjs` : 73/73. Mais — troisieme rappel — il prouve qu'une
|
||||
requete s'EXECUTE, pas qu'elle rend la bonne grandeur. Les deux requetes de
|
||||
« La journee » ont donc ete rejouees a la main avec la vraie fenetre
|
||||
(`date_trunc('day', now())` → +1 jour) : 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 piege n°3.
|
||||
|
||||
---
|
||||
*Document mis a jour le : 17/09/2026 (~02:40) — prevision dans « La journee » et sur le telephone, 73/73*
|
||||
|
||||
Reference in New Issue
Block a user