Production renouvelable
1 863 kWh
Énergie totale dépensée
8 183 kWh
Énergie voiture (domicile)
2 006 kWh
Distance parcourue (trajets)
5 013 km
Température min | max
-8.46 | 18.87 °C
Couverture solaire (autoconso ÷ conso)
18 %
Sensibilité thermique
+5.4 kWh/j par °C
Part charge voiture
25 %
Consommation mesurée (mois complets)
8 183 kWh
Part charge voiture (maison)
25 %
Mois le plus énergivore
janv. 2026 · 2909 kWh
Production solaire
1 863 kWh
Énergie de charge déclarée (janv. 2026 – juil. 2026)
2 363 kWh
Part rechargée hors domicile (avr. 2026 – juil. 2026)
11 %
Sessions de charge (janv. 2026 – juil. 2026)
213
Consommation en roulant (avr. 2026 – juil. 2026)
21.6 kWh/100 km
Température minimale (extrême)
-8.46 °C · 07 janv. 2026
Température maximale (extrême)
31.67 °C · 27 juin 2026
Historique disponible
709 jours
Corrélation température ↔︎ conso totale
-0.89
Corrélation température ↔︎ maison seule (hors voiture)
-0.96
| Mois |
kWh
|
Couv. | |||||
|---|---|---|---|---|---|---|---|
| Import | Production | Export | Conso totale | Maison seule | Charge voiture | ||
| janv. 2026 | 2 785 | 124 | 1 | 2 909 | 2 330 | 579 | 100% |
| févr. 2026 | 1 819 | 279 | 3 | 2 095 | 1 605 | 491 | 100% |
| mars 2026 | 1 487 | 512 | 21 | 1 977 | 1 415 | 562 | 100% |
| avr. 2026 | 582 | 948 | 328 | 1 202 | 827 | 375 | 100% |
| mai 2026 | 212 | 408 | 122 | 497 | 347 | 150 | 46% |
| Mois complets — total consommé : 8 183 kWh (maison 6 177 · charge voiture 2 006). Lignes grisées = mois incomplets (données manquantes). | |||||||
| Mois |
kWh
|
Sessions | ΔSOC moy. | ||
|---|---|---|---|---|---|
| Totale (app) | Domicile (Zappi) | Public (est.) | |||
| janv. 2026 | 353 | 579 | 0 | 40 | 19 pt |
| févr. 2026 | 362 | 491 | 0 | 38 | 18 pt |
| mars 2026 | 436 | 562 | 0 | 39 | 19 pt |
| avr. 2026 | 462 | 375 | 87 | 32 | 23 pt |
| mai 2026 | 368 | 150 | 218 | 33 | 18 pt |
| juin 2026 | 351 | 0 | 351 | 30 | 17 pt |
| juil. 2026 | 31 | 0 | 31 | 1 | 44 pt |
| « Domicile » compté par le Zappi · « Public » = totale − domicile (estimé). Valeurs grisées = mois où l’énergie maison est incomplète → répartition non fiable. | |||||
| Mois | Moyenne | Min | Max | Écart-type |
|---|---|---|---|---|
| juil. 2024 | 22.4 | 18.1 | 28.0 | 2.0 |
| août 2024 | 19.9 | 14.2 | 26.2 | 2.4 |
| sept. 2024 | 13.4 | 5.1 | 24.4 | 4.1 |
| oct. 2024 | 11.3 | 4.2 | 19.6 | 2.5 |
| nov. 2024 | 5.0 | −3.9 | 10.7 | 3.0 |
| déc. 2024 | 1.2 | −3.0 | 9.0 | 2.3 |
| janv. 2025 | 1.8 | −6.0 | 9.9 | 3.8 |
| févr. 2025 | 3.1 | −4.4 | 14.2 | 3.4 |
| mars 2025 | 7.7 | 1.3 | 16.8 | 3.1 |
| avr. 2025 | 9.8 | 2.7 | 18.5 | 2.9 |
| mai 2025 | 13.4 | 7.0 | 25.3 | 3.2 |
| juin 2025 | 20.1 | 10.4 | 28.3 | 3.6 |
| juil. 2025 | 18.7 | 10.1 | 28.7 | 3.4 |
| août 2025 | 18.9 | 10.7 | 28.4 | 3.9 |
| sept. 2025 | 13.5 | 6.0 | 20.7 | 3.1 |
| oct. 2025 | 9.3 | 3.4 | 16.5 | 2.3 |
| nov. 2025 | 4.6 | −6.4 | 16.4 | 4.5 |
| déc. 2025 | 3.2 | −5.3 | 11.5 | 3.4 |
| janv. 2026 | 1.4 | −8.5 | 11.4 | 4.2 |
| févr. 2026 | 4.6 | −0.8 | 11.9 | 2.5 |
| mars 2026 | 5.5 | −3.8 | 12.4 | 3.1 |
| avr. 2026 | 10.9 | −1.7 | 18.9 | 4.0 |
| mai 2026 | 14.2 | 3.5 | 26.7 | 5.3 |
| juin 2026 | 19.8 | 9.2 | 31.7 | 5.0 |
| juil. 2026 | 21.4 | 14.3 | 29.9 | 3.1 |
Mesures brutes conservées
106 173
Contrôles de cohérence à chaque mise à jour
7
Contrôles en alerte (tous compris et documentés)
5
Tests du pipeline sur données fabriquées
193 / 193
Kilométrage réellement mesuré (le reste est interpolé)
100 %
Rien n’est saisi à la main dans ce tableau de bord. Chaque chiffre affiché descend d’un fichier d’export brut par une chaîne de transformations écrite une seule fois, versionnée, et rejouable à l’identique.
Quatre étapes, quatre responsabilités distinctes. Une carte du chemin, de l’export brut au chiffre affiché.
| Étape | Ce qui s’y passe | Ce qui en sort |
|---|---|---|
| 1. Exports bruts | Les fichiers sont déposés dans import/, lus, puis archivés tels quels. Ils ne sont jamais modifiés : tout peut être recalculé depuis eux. |
les fichiers d’origine, dans data/archive_imported/ |
| 2. Canonique | Un lecteur par format (R/sources.R) traduit chaque export dans un vocabulaire unique : les Wh deviennent des kWh, les horodatages deviennent des instants datés d’un fuseau explicite. Rien n’est encore agrégé. Les adresses et coordonnées GPS de l’export de trajets sont volontairement écartées — ces tables sont publiées. |
5 tables, 106 173 mesures |
| 3. Analytique | Les mesures sont regroupées par jour, semaine et mois (R/build_analytics.R) — en heure locale, pour que « juillet » désigne le même mois que la facture. Chaque agrégat emporte son indicateur de qualité : combien d’heures ont réellement été mesurées, quelle part de la distance est mesurée plutôt qu’interpolée. |
13 tables jour / semaine / mois |
| 4. Dashboard | Aucun calcul de fond ici. La page met en forme, et estompe ce qui est incomplet. | ce que vous lisez |
Entre les étapes 2 et 4, 7 contrôles de cohérence et 193 tests du pipeline sont exécutés à chaque mise à jour, et consignés dans logs/.
| Garantie | Ce qu’elle empêche | Où |
|---|---|---|
| Idempotence — chaque table a une clé naturelle, réimporter dédoublonne | Qu’un export redéposé double les totaux | R/ingest.R |
| Contrat de schéma — les colonnes attendues sont déclarées | Qu’un champ renommé en amont vide un total en silence | R/schema.R |
| Bilan de lecture — lignes du fichier vs lignes retenues | Que des lignes disparaissent sans que personne ne le voie | R/schema.R |
| Découpage en heure locale | Que des heures glissent d’un mois à l’autre | R/build_analytics.R |
| Source | Ce qu'elle mesure | Nature | Lignes | Période couverte | Réserve |
|---|---|---|---|---|---|
| Compteur Zappi (myenergi) | Import, export et production réels de la maison, au pas horaire | Mesuré (compteur) | 4 792 | 31.12.2025 → 19.07.2026 | Muet depuis mi-mai 2026 : les mois suivants sont incomplets, pas à zéro. |
| App véhicule — sessions | Chaque branchement : durée, SOC avant/après, énergie annoncée | Déduit du SOC | 213 | 01.01.2026 → 18.07.2026 | L'énergie annoncée est sous-déclarée d'environ 13 % (voir « Ce qu'on ne sait pas »). |
| App MySkoda — trajets | Chaque trajet : odomètre départ et arrivée, durée, SOC, arrêts publics | Mesuré (odomètre) | 199 | 22.04.2026 → 30.07.2026 | L'app ne conserve que ~100 jours : sans import trimestriel, l'historique est perdu. |
| Sonde Eve Weather | Température extérieure | Mesuré (sonde) | 100 968 | 26.07.2024 → 31.07.2026 | Une seule sonde aujourd'hui ; le code accepte déjà plusieurs sondes. |
| Relevés d'odomètre | Compteur kilométrique total, noté à la main | Mesuré (saisie humaine) | 1 | 19.07.2026 → 19.07.2026 | Source d'appoint uniquement, pour les périodes sans trajets. |
Les lignes brutes ne sont jamais modifiées : elles sont archivées telles quelles dans data/archive_imported/, et tout peut être recalculé depuis elles. |
|||||
| Indicateur | Statut | Comment il est obtenu |
|---|---|---|
| Consommation de la maison (kWh) | Mesuré | Compteur physique, pas horaire. |
| Production solaire (kWh) | Mesuré | Compteur physique, pas horaire. |
| Charge voiture à domicile (kWh) | Mesuré | Compteur physique au mur (surplus solaire dévié + complément réseau). |
| Température extérieure (°C) | Mesuré | Sonde, relevés réguliers. |
| Distance parcourue (km) | Mesuré | Odomètre au départ et à l’arrivée de chaque trajet. Hors fenêtre de trajets, la distance est interpolée entre deux relevés manuels — le dashboard le signale. |
| Consommation en roulant (kWh) | Déduit | L’app ne mesure pas l’énergie : elle convertit un écart de SOC arrondi au pourcent. Résolution ±0,77 kWh — négligeable sur un mois, énorme sur un trajet. |
| Charge publique (kWh) | Déduit | Gain de SOC obtenu aux bornes × 0,77 kWh. Indépendant du compteur maison. |
| Charge totale déclarée par l'app (kWh) | Déduit | Sous-déclaré d’environ 13 % : à lire comme une tendance, jamais comme un niveau. |
| Efficience (kWh/100 km) | Calculé | Rapport des totaux de la période, jamais moyenne des ratios par trajet (qui surpondérerait les trajets courts). |
| Couverture solaire (%) | Calculé | (Production − export) ÷ consommation, sur les mois complets uniquement. |
| Sensibilité thermique (kWh/jour/°C) | Modélisé | Pente d’une régression linéaire consommation ~ température. C’est un modèle, pas une observation. |
| Mesuré = un instrument l’a compté · Déduit = reconstitué depuis une autre grandeur (le plus souvent l’état de charge) · Calculé = combinaison de mesures · Modélisé = issu d’un ajustement statistique. | ||
| Contrôle | Statut | Résultat actuel |
|---|---|---|
| Fenêtres temporelles | Informatif | énergie (Zappi) mesurée 2026-01-01 → 2026-05-15 · sessions de charge 2026-01-01 → 2026-07-18 · trajets 2026-04-22 → 2026-07-30 · température 2024-07-26 → 2026-07-31 · odomètre manuel 2026-07-19 → 2026-07-19 |
| Odomètre manuel ↔︎ trajets | OK | 1 relevé(s) recoupé(s), écart max 0 km (les deux sources concordent) |
| Continuité des trajets | Alerte | 1 rupture(s) de la chaîne d'odomètre, 12 km hors trajet enregistré (0.24 % des 5013 km) · Dates : 2026-06-10 · Ces km sont RÉINTÉGRÉS dans distance_daily (le total colle à l'odomètre), mais sans conso associée : ils sont exclus du calcul d'efficience. |
| Arrêts publics ↔︎ sessions | OK | 6/6 arrêt(s) de charge publique retrouvé(s) dans les sessions de l'app — les deux sources concordent |
| Sessions : énergie ↔︎ SOC (même ligne) | Alerte | biais moyen -3.59 kWh/session sur 213 sessions — l'énergie déclarée est incohérente avec le SOC de la MÊME ligne ; ne pas s'en servir comme niveau absolu |
| Bilan charge ↔︎ consommation | Alerte | 2026-04-22 → 2026-07-18 : entrée 842 kWh, sortie 975 kWh, dérive SOC -6 kWh → bilan -127 kWh (-13 %) · Physiquement impossible : la voiture ne peut pas consommer plus qu'elle n'a reçu. · L'énergie des sessions est sous-déclarée d'autant. |
| Charge domicile ≤ charge totale (mois fiables) | Alerte | 3/4 mois incohérent(s) : janv. 2026 (domicile 579 > total 353 kWh), févr. 2026 (domicile 491 > total 362 kWh), mars 2026 (domicile 562 > total 436 kWh) · Le « public estimé » y est écrasé à 0 : la ventilation par soustraction n'a pas de sens sur ces mois. |
| Charge publique : deux estimations | Alerte | avr. 2026 : soustraction 87 kWh vs trajets 0 kWh · mai 2026 : soustraction 218 kWh vs trajets 86 kWh · juin 2026 : soustraction 351 kWh vs trajets 25 kWh · juil. 2026 : soustraction 31 kWh vs trajets 7 kWh · Écart >2× : la soustraction est gonflée par les heures Zappi manquantes. · Préférer l'estimation par les trajets (indépendante du Zappi). |
Exécutés à chaque mise à jour (R/check_coherence.R), rapport horodaté dans logs/. Les 5 alertes en cours sont comprises et documentées : elles décrivent des limites réelles des sources, pas des erreurs de calcul. Ce qui compte, c’est qu’elles ne s’aggravent pas. |
||
Question : « Quelle part de notre électricité part dans la voiture ? » Voici le trajet complet du chiffre affiché en page Synthèse.
| Étape | Ce qui se passe | Ordre de grandeur |
|---|---|---|
| 1. Export brut | Le Zappi produit une ligne par heure, en Wh, horodatée en UTC. | 4 792 lignes horaires |
| 2. Lecture | Wh → kWh. La charge voiture est la somme de six colonnes (surplus solaire dévié L1–L3 + complément réseau L1–L3). La consommation totale se déduit : import + production − export. |
mêmes 4 792 lignes |
| 3. Jour local | Chaque heure est rattachée à son jour civil suisse, pas à son jour UTC. Les jours sans aucune mesure existent quand même dans la table, avec n_hours = 0. |
200 jours |
| 4. Mois | Somme par mois, plus la couverture : part d’heures réellement mesurées. | 7 mois |
| 5. Filtre honnête | Seuls les mois dont la couverture atteint 90 % entrent dans le total. Un mois amputé par la panne du compteur ne doit pas se lire comme un mois économe. | 4 mois retenus |
| 6. Affichage | charge voiture ÷ consommation totale sur ces mois. |
25 % |
Il s’agit de la charge à domicile, mesurée au mur. Elle ignore ce qui a été rechargé aux bornes publiques (par construction : ce courant ne passe pas par notre compteur), et elle est plus grande que l’énergie réellement arrivée dans la batterie, à cause des pertes de charge. C’est le bon chiffre pour comprendre notre facture — pas pour mesurer ce que consomme la voiture.
La transparence utile n’est pas seulement de montrer d’où viennent les chiffres : c’est de dire où ils s’arrêtent. Quatre limites connues, aucune masquée.
1. Le compteur maison est muet depuis mi-mai 2026. Les mois suivants ne sont pas des mois sobres : ce sont des mois non mesurés. Ils apparaissent estompés, sont exclus des classements et des totaux, et la répartition domicile / public y est marquée non fiable. C’est aussi la réparation qui débloquerait le plus de valeur.
2. L’app du véhicule sous-déclare l’énergie d’environ 13 %. Établi par deux contrôles indépendants : d’une part son propre champ « énergie » contredit l’état de charge de la même ligne ; d’autre part, sur trois mois à état de charge quasi constant, elle déclare moins d’énergie entrée que d’énergie dépensée en roulant — physiquement impossible. Ce champ est donc traité comme une tendance, jamais comme un niveau.
3. Il n’existe aucun kilométrage avant le 22 avril 2026. Les trajets de l’app commencent à cette date, et le seul relevé manuel d’odomètre disponible est postérieur — il n’y a donc rien à interpoler, mais rien non plus à montrer. Le jour où des relevés plus anciens seront saisis, les kilomètres seront répartis uniformément entre deux relevés : le total d’une période restera exact, mais la répartition jour par jour sera une hypothèse. Le dashboard le dira (part mesurée inférieure à 100 %).
4. Une seule sonde de température, dans un seul jardin. Elle décrit le microclimat de la maison, pas la météo régionale. La corrélation avec la consommation est robuste ; l’extrapolation au-delà de ce lieu ne l’est pas.
Dernière vérification du pipeline le 2026-07-31 15:46 : 193 tests sur données fabriquées, 0 échec. Ces tests rejouent la chaîne complète sur un jeu de données dont la bonne réponse est connue d’avance — changement d’heure, trou de mesure, trajet à cheval sur minuit, rupture d’odomètre, réimport en double. Ils ne disent pas que les sources sont justes ; ils disent que le code ne les déforme pas.