Kilometrage : niveaux deduits de l'autonomie marques (photo_autonomie), exposes par capacite_estimee.niveau_estime
This commit is contained in:
@@ -202,13 +202,18 @@ WITH tr AS (
|
||||
ORDER BY r.ts LIMIT 1) AS niveau_releve_apres,
|
||||
(SELECT nf.niveau_pct FROM niveau_fin nf
|
||||
WHERE nf.saisi_a >= v.debranche - interval '15 minutes' AND nf.saisi_a <= v.debranche + interval '1 hour'
|
||||
ORDER BY nf.saisi_a LIMIT 1) AS niveau_fin_saisi
|
||||
ORDER BY nf.saisi_a LIMIT 1) AS niveau_fin_saisi,
|
||||
(SELECT nf.source FROM niveau_fin nf
|
||||
WHERE nf.saisi_a >= v.debranche - interval '15 minutes' AND nf.saisi_a <= v.debranche + interval '1 hour'
|
||||
ORDER BY nf.saisi_a LIMIT 1) AS niveau_fin_source
|
||||
FROM v
|
||||
), f AS (
|
||||
SELECT k.*, coalesce(niveau_fin_saisi, CASE WHEN plein THEN 100 ELSE niveau_releve_apres END) AS niveau_fin FROM k
|
||||
)
|
||||
SELECT branche, debranche, coalesce(vehicule, '?') AS vehicule, niveau_pct, niveau_fin,
|
||||
kwh_livres, plein,
|
||||
-- Un des deux niveaux est deduit de l'autonomie affichee (pas une lecture).
|
||||
(coalesce(source, '') ILIKE '%autonomie%' OR coalesce(niveau_fin_source, '') ILIKE '%autonomie%') AS niveau_estime,
|
||||
CASE WHEN vehicule IS NOT NULL AND niveau_fin - niveau_pct >= 10 AND kwh_livres > 0
|
||||
THEN kwh_livres / ((niveau_fin - niveau_pct) / 100.0) END AS capacite_kwh
|
||||
FROM f`;
|
||||
@@ -268,9 +273,26 @@ export async function ingererNiveauSaisi(sql, st) {
|
||||
const r = await sql(
|
||||
'INSERT INTO niveau_saisi (saisi_a, niveau_pct, ref_kwh) VALUES ($1,$2,$3) ON CONFLICT DO NOTHING',
|
||||
[new Date(at), niveau, ref]);
|
||||
await marquerNiveauxEstimes(sql);
|
||||
return r?.rowCount || 0;
|
||||
}
|
||||
|
||||
// Niveau ESTIME (12/10/2026, avec SPARK) : un niveau deduit de l'autonomie
|
||||
// affichee (photo du tableau de bord VW, regle de trois sur l'autonomie pleine
|
||||
// de reference) arrive dans le releve avec la source « photo_autonomie:<km>/<ref> »,
|
||||
// mais aussi dans le helper du niveau, donc dans niveau_saisi SANS source.
|
||||
// On recopie la source sur la saisie correspondante (meme niveau, a 20 min pres),
|
||||
// dans un sens comme dans l'autre de l'ordre d'arrivee. La vue capacite_estimee
|
||||
// l'expose (niveau_estime) : un niveau deduit de l'autonomie depend de la
|
||||
// reference, du chauffage et de la conduite, et biaise justement l'usure.
|
||||
export const SOURCE_ESTIMEE = 'photo_autonomie:';
|
||||
export async function marquerNiveauxEstimes(sql) {
|
||||
await sql(
|
||||
`UPDATE niveau_saisi n SET source = r.source FROM releve_km r
|
||||
WHERE n.source IS NULL AND r.source LIKE '${SOURCE_ESTIMEE}%' AND r.niveau_pct = n.niveau_pct
|
||||
AND n.saisi_a BETWEEN r.ts - interval '20 minutes' AND r.ts + interval '20 minutes'`);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// JEEP LUE DIRECTEMENT (04/10/2026) : integration HACS hass-uconnect (API
|
||||
// Stellantis non officielle, compte du proprietaire, intervalle 15 min, sans
|
||||
|
||||
Reference in New Issue
Block a user