Revue : EDF absent en session, voiture payee par la batterie, interventions, kWh sur la puissance ; piles : hysteresis et acquittement
This commit is contained in:
@@ -33,7 +33,7 @@ import { creerSchemaKm, ingererReleves, ingererNiveauSaisi, ingererJeep } from '
|
||||
import { texteRapport, envoyer, donneesNuit, texteDepuis } from './rapport-nuit.mjs';
|
||||
import { donneesRevue, constatsRevue } from './revue-jour.mjs';
|
||||
import { detecterSituation, lireChoix, DUREE_MIN as ARBITRAGE_DUREE_MIN } from './arbitrage.mjs';
|
||||
import { pilesAAlerter } from './piles.mjs';
|
||||
import { pilesAAlerter, lireAcquittements } from './piles.mjs';
|
||||
import { DOMAINES, lireCertificat, certificatsAAlerter } from './certificats.mjs';
|
||||
import { diagnosticPv, etatCellules, productionJour, chargeSolaire, bilanNuit, etatReseau, importJour, minuitLocal, COMPTEURS_IMPORT, COMPTEUR_EDF, consoJour, COMPTEURS_CONSO, projectionSoir, previsionNuit, vrmVersCourbes, nuitMaisonPrevue } from './diagnostics-agent.mjs';
|
||||
import { transitionsDansSerie } from './allers-retours.mjs';
|
||||
@@ -138,6 +138,7 @@ const TRANSITIONS_SUIVIES = [
|
||||
['input_select.victron_evcs_vehicle', 'intervention','Vehicule selectionne'],
|
||||
['input_select.victron_evcs_strategy', 'intervention','Strategie'],
|
||||
['input_select.victron_evcs_night_charge_mode', 'intervention','Charge de la voiture la nuit'],
|
||||
['input_boolean.evcs_battery_manual_hc', 'intervention','Charge batterie manuelle en heures creuses'],
|
||||
['switch.tt_chauffe_eau_pleumeur_switch', 'chauffe_eau', 'Chauffe-eau sous tension'],
|
||||
['input_boolean.evcs_balance_ecs_nuit', 'chauffe_eau', 'Chauffe-eau en HC de nuit (jour faible)'],
|
||||
['input_text.evcs_balance_ecs_nuit_jour', 'chauffe_eau', 'Decision du jour pour le chauffe-eau'],
|
||||
@@ -1288,7 +1289,7 @@ async function publierRevueHistorique(client) {
|
||||
// relayee par SPARK sur WhatsApp, historisee dans revue_alerte. La voiture
|
||||
// bloquee reste a l'arbitre (pas de doublon). Un episode qui dure (EDF en heures
|
||||
// pleines) ne donne qu'une alerte : on prolonge la ligne existante.
|
||||
const CODES_GLISSANTS = new Set(['edf_heures_pleines', 'charge_max_bridee_en_cours', 'charge_max_bridee',
|
||||
const CODES_GLISSANTS = new Set(['edf_heures_pleines', 'charge_max_bridee_en_cours', 'charge_max_bridee', 'voiture_payee_par_batterie',
|
||||
'batterie_sous_objectif_nuit', 'batterie_sous_objectif_midi']);
|
||||
let revueGlissanteSchema = false;
|
||||
async function revueGlissante(sql, client, st) {
|
||||
@@ -2160,10 +2161,15 @@ async function publierPiles() {
|
||||
const etats = await r.json();
|
||||
const ign = String(etats.find((x) => x.entity_id === 'input_text.evcs_piles_ignorees')?.state || '')
|
||||
.split(',').filter((x) => x && x !== 'unknown');
|
||||
const p = pilesAAlerter(etats, Date.now(), ign);
|
||||
await publierCapteur('sensor.evcs_piles', p.alertes.length, {
|
||||
const avant = etats.find((x) => x.entity_id === 'sensor.evcs_piles')?.attributes?.alertes || [];
|
||||
const acquit = etats.find((x) => x.entity_id === 'input_text.evcs_piles_acquittees')?.state;
|
||||
const p = pilesAAlerter(etats, Date.now(), ign, {
|
||||
precedentes: avant.map((a) => a.entite), acquittements: lireAcquittements(acquit) });
|
||||
// Etat = alertes NON acquittees (13/10) : ce que le concierge doit rappeler.
|
||||
await publierCapteur('sensor.evcs_piles', p.a_rappeler.length, {
|
||||
friendly_name: 'Piles des capteurs a changer', icon: 'mdi:battery-alert-variant-outline',
|
||||
alertes: p.alertes, texte: p.texte, ignorees: ign,
|
||||
alertes: p.alertes, a_rappeler: p.a_rappeler, acquittees: p.acquittees, texte: p.texte, ignorees: ign,
|
||||
format_acquittement: 'input_text.evcs_piles_acquittees = cle:AAAA-MM-JJ[,cle:AAAA-MM-JJ] (cle = attribut cle de l alerte)',
|
||||
});
|
||||
pilesPubliees = true;
|
||||
return 1;
|
||||
|
||||
Reference in New Issue
Block a user