sensor.evcs_bilan_nuit : le bilan de nuit de l'agent vient du code du rapport du matin
Incident 25/09 11:49 : l'agent sans source avait invente 0,56 kWh / zero reseau / 35 % pour une nuit a 7,9 kWh dont 2,2 reseau. donneesNuit() extrait de rapport-nuit.mjs (texte identique sur 5 nuits), publie pour l'agent. Tests 37/37. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011uJ47NxgfpGnuuMr3f2n7Z
This commit is contained in:
@@ -29,8 +29,8 @@ import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import pg from 'pg';
|
||||
import { texteRapport, envoyer } from './rapport-nuit.mjs';
|
||||
import { diagnosticPv, etatCellules, productionJour, chargeSolaire } from './diagnostics-agent.mjs';
|
||||
import { texteRapport, envoyer, donneesNuit, texteDepuis } from './rapport-nuit.mjs';
|
||||
import { diagnosticPv, etatCellules, productionJour, chargeSolaire, bilanNuit } from './diagnostics-agent.mjs';
|
||||
|
||||
const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
||||
const ONCE = process.argv.includes('--once');
|
||||
@@ -1848,6 +1848,20 @@ async function publierDiagnosticPv(st) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Bilan de la nuit pour l'agent vocal : les donnees du rapport du matin (meme
|
||||
// code, donc memes chiffres que le courriel). Toutes les 5 min suffit.
|
||||
let bilanNuitPublie = false; // publie des le premier cycle, puis toutes les 5 min
|
||||
async function publierBilanNuit(client) {
|
||||
if (DRY || !client) return 0;
|
||||
const d = await donneesNuit(client);
|
||||
const bn = bilanNuit(d, texteDepuis(d));
|
||||
await publierCapteur('sensor.evcs_bilan_nuit', bn.etat, {
|
||||
friendly_name: 'EVCS — bilan de la derniere nuit', icon: 'mdi:weather-night', ...bn.attributs,
|
||||
calcule_a: new Date().toISOString(),
|
||||
});
|
||||
return 1;
|
||||
}
|
||||
|
||||
async function publierCellulesHelpers(client) {
|
||||
if (DRY) return 0;
|
||||
// Base injoignable : on publie « muet » plutot que de laisser au capteur son
|
||||
@@ -1926,6 +1940,9 @@ async function cycle(client) {
|
||||
: await publierPrevisionContreReel(client).catch((e) => {
|
||||
console.error(`prevision contre reel : ${e.message}`); return 0;
|
||||
}),
|
||||
bilanNuit: (DRY || (bilanNuitPublie && new Date().getMinutes() % 5 !== 1)) ? 0 : await publierBilanNuit(client).then((n) => { bilanNuitPublie = true; return n; }).catch((e) => {
|
||||
console.error(`bilan de nuit : ${e.message}`); return 0;
|
||||
}),
|
||||
rapport: DRY ? 0 : await envoyerRapportDuMatin(sql, client).catch((e) => {
|
||||
console.error('rapport de nuit :', e.message); return 0;
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user