SDB : capteur muet et garde batterie (workflow sous controle du depot) ; alertes de piles des capteurs
This commit is contained in:
28
tests/piles/run.mjs
Normal file
28
tests/piles/run.mjs
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env node
|
||||
import { pilesAAlerter } from '../../tools/piles.mjs';
|
||||
const T = Date.parse('2026-10-10T00:30:00+02:00');
|
||||
const e = (entity_id, state, attrs = {}, last = '2026-10-09T22:00:00+02:00') => ({ entity_id, state, attributes: attrs, last_changed: last });
|
||||
// Extrait reel des etats HA du 10/10 00:30.
|
||||
const etats = [
|
||||
e('sensor.victron_battery_soc', '25', { device_class: 'battery', unit_of_measurement: '%' }),
|
||||
e('sensor.iphone_16_de_tt_battery_level', '15', { device_class: 'battery', unit_of_measurement: '%' }),
|
||||
e('sensor.jeep_renegade_phev_hvbattery_charge', '10', { device_class: 'battery', unit_of_measurement: '%' }),
|
||||
e('sensor.sdb_temp_hygro_batterie', '0.0', { device_class: 'battery', unit_of_measurement: '%', friendly_name: 'SDB TEMP HYGRO Batterie' }),
|
||||
e('sensor.kt_chambre_batterie', '12.0', { device_class: 'battery', unit_of_measurement: '%', friendly_name: 'SYLVIE CHAMBRE Batterie' }),
|
||||
e('sensor.salle_de_bain_bruz_batterie', '27.0', { device_class: 'battery', unit_of_measurement: '%', friendly_name: 'GRENIER Batterie' }),
|
||||
e('sensor.tt_chambre_batterie', 'unavailable', { device_class: 'battery', unit_of_measurement: '%', friendly_name: 'TT CHAMBRE Batterie' }, '2026-10-04T14:52:01+02:00'),
|
||||
e('sensor.garage_t_etat_batterie', 'middle', { device_class: 'enum', friendly_name: 'Garage T État batterie' }),
|
||||
e('sensor.cuisine_etat_batterie', 'low', { device_class: 'enum', friendly_name: 'TRETS CUISINE État batterie' }),
|
||||
e('sensor.chambre_danielle_etat_batterie', 'unavailable', { device_class: 'enum', friendly_name: 'Chambre danielle État batterie' }, '2026-10-09T23:00:00+02:00'),
|
||||
];
|
||||
let f = 0; const ok = (l, c, d = '') => { if (c) console.log(`✅ ${l}`); else { f++; console.log(`❌ ${l} ${d}`); } };
|
||||
const r = pilesAAlerter(etats, T);
|
||||
const ids = r.alertes.map((a) => a.entite);
|
||||
ok('exclus-victron-telephone-voiture', !ids.some((i) => /victron|iphone|jeep/.test(i)), ids.join(','));
|
||||
ok('pourcentage-faible', ids.includes('sensor.sdb_temp_hygro_batterie') && ids.includes('sensor.kt_chambre_batterie') && !ids.includes('sensor.salle_de_bain_bruz_batterie'));
|
||||
ok('enum-low', ids.includes('sensor.cuisine_etat_batterie') && !ids.includes('sensor.garage_t_etat_batterie'));
|
||||
ok('muet-plus-de-24h', r.alertes.find((a) => a.entite === 'sensor.tt_chambre_batterie')?.statut === 'muet');
|
||||
ok('muet-recent-pas-encore', !ids.includes('sensor.chambre_danielle_etat_batterie'));
|
||||
ok('ignorees', !pilesAAlerter(etats, T, ['sensor.kt_chambre_batterie']).alertes.some((a) => a.entite === 'sensor.kt_chambre_batterie'));
|
||||
ok('texte', /SYLVIE CHAMBRE Batterie : pile a 12 %/.test(r.texte) && /TT CHAMBRE Batterie ne publie plus depuis 5 j/.test(r.texte), r.texte);
|
||||
console.log(f ? `\n${f} ECHEC(S)` : '\nPILES OK'); process.exit(f ? 1 : 0);
|
||||
Reference in New Issue
Block a user