sensor.evcs_consommation_jour_kwh : consommation du jour (sortie AC du MultiPlus), comme VRM

Delta depuis minuit de ac_in_1->ac_out + inverter->ac_out : 25,2 kWh a
17:11 le 26/09 pour ~25 dans VRM. Remise a zero -> indisponible, compteur
muet -> partiel. Tests 59/59, mutation qui mord.

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:
Tallagrand Thierry
2026-09-26 17:13:35 +02:00
parent f5f23c2464
commit affdcb3b43
3 changed files with 83 additions and 5 deletions

View File

@@ -473,3 +473,49 @@ export function importJour(courant, minuit) {
return { etat: 'indisponible', attributs: { statut: 'indisponible', ...commun,
explication: 'Compteurs d\'energie muets ou remis a zero : import du jour inconnu.' } };
}
// ---------------------------------------------------------------------
// Consommation du jour (« Consommation Total » de VRM), 26/09/2026
// ---------------------------------------------------------------------
// Ce que la sortie AC du MultiPlus a delivre depuis minuit : maison ET borne
// (la borne est cablee sur la sortie AC, comme dans VRM). Deux sources :
// depuis le reseau (ac_in_1 -> ac_out) et depuis l'onduleur (inverter ->
// ac_out, c'est-a-dire solaire + batterie). Verifie le 26/09 a 17:11 :
// 0,6 + 24,6 = 25,2 kWh pour ~25 affiches par VRM a 17 h. Compteurs VE.Bus a
// 0,1 kWh pres, sans last_reset : une valeur INFERIEURE a celle de minuit est
// une remise a zero (redemarrage du MultiPlus), jamais une conso negative.
export const COMPTEURS_CONSO = [
['depuis_reseau', 'sensor.airtria_mpii_v1_energy_from_ac_in_1_to_ac_out'],
['depuis_onduleur', 'sensor.airtria_mpii_v1_energy_from_inverter_to_ac_out'],
];
export function consoJour(courant, minuit) {
const detail = {};
const muets = [];
const remis = [];
let total = 0;
for (const [nom, id] of COMPTEURS_CONSO) {
const d = delta(courant[id], minuit[id]);
if (d.remis) { remis.push(nom); detail[nom] = null; continue; }
if (d.muet) { muets.push(nom); detail[nom] = null; continue; }
detail[nom] = Math.round(d.v * 10) / 10;
total += d.v;
}
total = Math.round(total * 10) / 10;
const commun = { detail_kwh: detail };
if (remis.length) {
return { etat: 'indisponible', attributs: { statut: 'indisponible', ...commun,
explication: 'Compteur du MultiPlus remis a zero depuis minuit : consommation du jour inconnue.' } };
}
if (muets.length === COMPTEURS_CONSO.length) {
return { etat: 'indisponible', attributs: { statut: 'indisponible', ...commun,
explication: 'Compteurs de consommation muets : consommation du jour inconnue.' } };
}
if (muets.length) {
return { etat: total, attributs: { statut: 'partiel', compteurs_muets: muets, ...commun,
explication: `Consommation partielle : au moins ${total} kWh depuis minuit (compteur ${muets.join(', ')} muet).` } };
}
return { etat: total, attributs: { statut: 'complet', ...commun,
explication: `${total} kWh consommes depuis minuit (maison et borne), dont ` +
`${detail.depuis_reseau} depuis le reseau.` } };
}