Releve du pack 1 (US5000) sur yd-5CG6110DG0 : service, regle udev, suffixe de fichier

Le cable du pack 1 est a puce Prolific, sans pilote sur DSM : lu par un
portable a noyau recent. --suffixe pack1 separe les CSV des deux lecteurs ;
evcs_cellules regarde 15 min (deux lecteurs non synchronises) et publie
modules_lus (9 attendus).

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 00:41:47 +02:00
parent 07ee35bdfd
commit 08a1cee1b1
5 changed files with 47 additions and 3 deletions

View File

@@ -1873,14 +1873,18 @@ async function publierCellulesHelpers(client) {
if (!client) { await muet('base injoignable'); return 0; }
const { rows: [r] } = await client.query(
`WITH mx AS (SELECT max(ts) AS t FROM cellule),
-- 15 min et non 5 (26/09) : deux lecteurs, un par pack, chacun toutes les
-- 10 min et sans synchronisation ; une fenetre plus courte que le pas
-- ferait disparaitre un pack sur deux selon l'instant du calcul.
recent AS (SELECT DISTINCT ON (module) module, ts FROM cellule
WHERE ts > (SELECT t FROM mx) - interval '5 minutes' ORDER BY module, ts DESC),
WHERE ts > (SELECT t FROM mx) - interval '15 minutes' ORDER BY module, ts DESC),
spreads AS (SELECT c.module, max(c.mv) - min(c.mv) AS ecart
FROM cellule c JOIN recent rc ON rc.module = c.module AND rc.ts = c.ts
GROUP BY c.module)
SELECT (SELECT max(ecart) FROM spreads) AS spread_max,
(SELECT module FROM spreads ORDER BY ecart DESC NULLS LAST LIMIT 1) AS weakest,
(SELECT round(EXTRACT(EPOCH FROM (now() - t)) / 60)::int FROM mx) AS age_min`)
(SELECT round(EXTRACT(EPOCH FROM (now() - t)) / 60)::int FROM mx) AS age_min,
(SELECT count(*) FROM spreads)::int AS modules_lus`)
.catch(async (e) => { await muet('base injoignable').catch(() => {}); throw e; });
// Capteur unique pour l'agent (25/09) : releve perime => ni ecart ni module
// visibles (G13b du banc OpenClaw). Publie avant le test de table vide, pour