Suite a une reponse WhatsApp erronee du 16/09 (question SOC VW : grandeur absente, puis grandeurs voisines servies comme reponse - 5 faux sur 6, dont un compteur fige depuis 8 h cite comme "cette nuit", et une batterie dite qui "monte" alors qu'elle descendait). Corrections de domaine fournies par EVCS. - AGENTS.md 1.7 : ne JAMAIS substituer une grandeur absente (le dire et s'arreter) ; verifier last_changed avant de citer une valeur comme actuelle ; publier une grandeur directionnelle avec le SIGNE de sa puissance. - AGENTS.md 5ter : reference "ou lire quoi" (SOC maison + sens via battery_power, source_mode, cible de nuit vivante, compteurs gx_device_* empoisonnes a ne pas lire comme des deltas ; SOC voiture = n'existe pas). - airtria-charge-session.js : lecteur SQL lecture seule (role airtria_ro, reutilise makeClient) de la session de charge en cours, pour l'energie reellement prise par la voiture (dont reseau) sans lire un compteur HA fige. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
34 lines
1.6 KiB
JavaScript
34 lines
1.6 KiB
JavaScript
// airtria-charge-session.js — lecture seule : la session de charge EN COURS.
|
|
// -----------------------------------------------------------------------------
|
|
// Réutilise makeClient de concierge-detection.js (rôle airtria_ro, résolution du mot de
|
|
// passe, PG_BASE) : aucun autre droit, un seul SELECT. Airtria l'appelle via `exec` pour
|
|
// répondre « combien la voiture a pris cette nuit » sans SUBSTITUER un compteur HA figé
|
|
// (cf. AGENTS.md §1.7 et §5ter). En cas d'échec : le dire, ne rien inventer.
|
|
// SQL fourni par EVCS (16/09) ; `dont_reseau = 0` = la voiture ne coûte rien au réseau.
|
|
// -----------------------------------------------------------------------------
|
|
'use strict';
|
|
const { makeClient } = require('./concierge-detection.js');
|
|
|
|
const SQL = `
|
|
SELECT vehicule,
|
|
round(energie_kwh::numeric, 2) AS kwh_session,
|
|
round(energie_reseau_kwh::numeric, 2) AS dont_reseau,
|
|
to_char(debut, 'HH24:MI') AS depuis,
|
|
source_mode
|
|
FROM session_charge
|
|
WHERE NOT terminee
|
|
ORDER BY debut DESC
|
|
LIMIT 1`;
|
|
|
|
(async () => {
|
|
const c = makeClient();
|
|
await c.connect();
|
|
try {
|
|
const r = await c.query(SQL);
|
|
if (!r.rows.length) { console.log('Aucune session de charge en cours.'); return; }
|
|
const s = r.rows[0];
|
|
console.log(`${s.vehicule} : ${s.kwh_session} kWh pris cette session ` +
|
|
`(dont ${s.dont_reseau} kWh du réseau), depuis ${s.depuis}. Mode : ${s.source_mode}.`);
|
|
} finally { await c.end(); }
|
|
})().catch(e => { console.error('[charge-session]', e.message); process.exit(1); });
|