Pilea¶
Pilea est un petit tableau de bord permettant d’analyser sa consommation d’électricité à partir des données d’un Linky.
L’idée derrière Pilea est de permettre à l’utilsateur de pouvoir, au travers de quelques tableaux de bord :
- Mieux comprendre sa consommation d’énergie
- Analyser sa consommation en fonction de données météorologiques
Note
Cette application n’est pas une tentative pour prouver que les compteurs Linky sont cools. Je ne suis pas fan des compteurs Linky et vous pourrez comprendre pourquoi en lisant ce dossier du site Reporterre.
Maintenant, Linky est présent chez nous alors autant l’utiliser !
Et malgré ce qu’essaye de nous vendre Enedis:
« Linky c’est génial, les utilisateurs pourront reprendre en main leurs données et réduire leur consommation… blablabla.. »
Rien n’est apparement fait pour aider les particuliers à récupérer leur données de manière automatique via une API (ou alors je n’ai pas réussi à trouver la documentation). Rien n’est fournit pour récupérer facilement ses données.
J’en porfite pour remercier KibOost pour le travail de rétroengineering dont je me suis pas mal inspiré !
Installation¶
Tout d’abord pour utiliser Pilea,
- Vous devez avoir accès à un Linky et à un compte Enedis
- Via ce compte, vous devez activer l’option Courbe de charge pour pouvoir avoir accès à votre consommation horaire
Installation via YunoHost¶
YunoHost est un projet ayant pour but de promouvoir l’autohébergement. Son but est de faciliter l’administration d’un serveur : en savoir plus
Des nombreuses applications sont déjà packagées pour être utilisées avec et c’est le cas de Pilea.
Installation à la main¶
Pilea est une application basée sur le framework Symfony. Elle s’installe sur un serveur web disposant d’un PHP récent et d’un serveur de base de données MySQL.
Prérequis :
- PHP 7.3 et supérieur
- MySQL (5.5 et supérieur) / PostreSQL (9.6 et supérieur)
Note
SQLite devrait fonctionner mais vous aurez à adapter les fichiers .env
& config/packages/doctrine.yaml
Il n’est pas prévu que Pilea le supporte officiellement, si vous souhaitez vous y coller allez-y, faites une merge request et je regarderai :)
Avertissement
Les migrations de Pilea sont uniquement générées pour MySQL, si vous utilisez un autre type de serveur, gardez à l’esprit qu’il faudra vérifier chaque migration avant de la lancer !
Installation :
Télécharger le dépot :
git clone https://gitlab.com/pilea/Pilea.git [app_folder]
Créer un base de donnés puis adapter les fichiers .env
et config/packages/doctrine.yaml
Installer les dépendance Composer :
cd [app_folder]
php7.3 composer.phar install --no-dev
Lancer le script d’installation :
php7.3 bin/console pilea:install
Ajouter une premier utilisateur et lui donner les droits administrateur :
php7.3 bin/console pilea:user:add [username] [password]
php7.3 bin/console pilea:user:grant [username]
Mettre en place le cron :
echo "*/10 * * * * [user] php7.3 /[app_folder]/bin/console pilea:fetch-data false" > /etc/cron.d/pilea
# où [user] est l'utilisateur linux qui lancera le cron
Enfin, configurer NGINX ou Apache comme pour une application Symfony 4 classique
Documentation utilisateur¶
Les différents tableaux de bords¶
Cette page décrit les différents tableaux de bord disponible sur Pilea.
L’accueil¶
Lors de la connexion à Pilea, vous atterissez sur la page d’accueil.
Cette page contient une première carte résumant les données du mois en cours et une seconde résumant les données du mois précédent.
Consommation d’électricité¶
Analyse de la météo¶
Analyse croisée¶
Comprendre les différents graphiques¶
Cette page rescence les différents types de graphique présents dans Pilea et apporte quelques éléments pour commencer à les analyser.
Graphique d’évolution temporelle¶
Le graphique d’évolution temporelle est un graphique assez classique.
Il affiche, pour la période sélectionnée, un point de donnée en fonction de la granulosité choisie.
Il présente chaque point de donnée de donnée sous forme de rectangle, il se transofrme en courbe si le nombre de données à afficher est trop élevé.
Aperçus¶
Comment lire le graphique¶
Ce graphique permet par exemple de relever des consommations anormales :
J’observe ma consommation d’électricité, pour un jour donnée je vois un pic sur le graphique, est-ce normal ? Que s’est-il passé ce jour ?
- Etait-ce un retour de vacances ? Dans ce cas le pic est peut-être normal (reprise de chauffage par exemple)
- Ou bien ai-je oublié d’éteindre un appareil gourmand avant d’aller me coucher ce jour-là ?
Carte de chaleur Jours/Heures¶
Chaque case de la carte de chaleur Jours/Heures affiche la moyenne, sur la période sélectionnée, de la grandeur observée pour une tranche horaire.
Par exemple, la case en haut à gauche représente la consommation moyenne le lundi entre minuit et 1h sur la période sélectionnée.
Plus une case en foncée et plus la consommation est élévée.
Aperçus¶
Comment lire le graphique¶
Ce graphique permet de mettre en valuer des schémas de consommation. Les tâches observées doivent reflêter vos habitudes de consommation.
- Une tâche foncée apparait les jours de semaine entre 7h30 et 9h, est-ce normal ?
- Je ne vois aucun schéma se dégager, est-ce normal que ma consommation soit la même quelque soit l’heure et le jour de la semaine ?
- Il y a une tâche continue toute la journée du jeudi, mais pas les autres jours, n’y aurait-il pas un problème dans la programmation de mon chauffage ?
Carte de chaleur Jours/Semaines¶
Sur ce graphique, chaque case représente un jour, chaque ligne une semain et chaque colonne un jour de la semaine. Plus la case est foncée est plus la grandeur observée est grande.
Aperçus¶
Comment lire le graphique¶
Comme la carte de chaleur Jours/Heures, ce graphique permet de mettre en évidence des schémas de consomation. Par exemple : En hiver, j’observe que les 2 dernières colonnes sont plus foncée, c’est peut-être normal si l’on chauffe toute la journée le weekend contrairement aux jours de semaine.
Ensuite, comme le graphique d’évolution, il permet de repérer des pics de consommation : pourquoi cette case est-elle foncée au milieu de l’été ? Que s’est-il passé ce jour là ?
Cette représentation permet aussi d’observer des évenements tels que les vacances : je suis parti une semaine en février, pourtant, je ne le vois pas sur le graphique ? Ai-je éteint le chauffage avant de partir ?
Afficher sur une ou plusieurs années, il permet aussi de voir apparaite des saisonalités (notamment sur le tableau de bords météo)
Graphique d’analyse croisée¶
L’analyse croisée permet de chercher des corrélations entre 2 grandeurs. Pour la période sélectionnée, il affiche un point selon la granulosité choisit.
Aperçus¶
Comment lire le graphique¶
Si on prend le cas où l’on observe la consommation d’électricité et les :term:`DJU`s et si l’on considère que le chauffage est électrique. Si l’on sélectionne une péridoe d’hiver, les points affichés devraient se regrouper le long d’une ligne.
L’analyse de la pente de cette droite permet de caractériser l’isolation et le système de chauffage de votre habitation. Par exemple, si la droite semble horizontale, cela veut peut-être dire que votre chauffage est toujours au maximum et donc qu’il est sous dimensionné.
Si les points semblent complètement désorganisés, c’est qu’il n’y a aucune corrélation entre la température extérieure et votre consommation d’électrivité.
Graphique papillon¶
La graphique papillon est un graohique d’évolution temporelle, à la vertical, sur lequel on affiche simultanément l’évolution de 2 grandeurs dans le temps.
Aperçus¶
Comment lire le graphique¶
Comme le graphique d’analyse croisée, le graphique papillon permet de chercher des corrélations entre 2 grandeurs. Dans le cas de Pilea, on compare toujours la consommation d’électicité et une grandeur météorologique.
Si 2 grandeurs sont directement corrélées, le graphique devrait ressembler à un papillon, c’est à dire être symétrique, d’où sont nom.
Glossaire¶
- DJU
Degrés Jour Unifié est la différence entre la température extérieure et une température de référence (18°C pour Pilea)
Plus le nombre de DJU est grand pour une période donnée et plus il a fait froid.
Pilea utilise la méthode chauffagiste pour calculer les DJU.
Voir aussi
- Humidité
C’est la mesure de l’humidité relative dans l’air en %.
- A 0%, l’air est complètement sec
- A 100%, l’air est saturé en eau
Pour l’homme, un air sec est plus confortable qu’un air humide.
Voir aussi
- kWH
Kilowatt-heure est l’unité d’énergie généralement utilisée pour mesurer la consommation d’électricité.
Voir aussi
- Nebulosité
C’est une mesure qui permet de caracériser la fraction de ciel couverte par des nuages en %.
- A 0%, le ciel est bleu et compètement dégagé
- A 100% le ciel est complètement obstrué par des nuages
Voir aussi
- Précipitations
C’est la mesure du nombre de millimètres de pluie tombée par m².
Voir aussi
Gestion des adresses¶
Dans Pilea, chaque utilisateur peux gérer des Adresses. Pour chaque adresse, on configure un compteur Linky et une station d’observation météo.
Une adresse peut ensuite être rendue publique pour quelle soit visible par tous les utilisateurs de Pilea, ou bien, elle peut être partagée à une liste d’utilisateur.
Pour gérer vos adresses, aller sur la page de configuration en cliquant sur le bouton dans la barre du haut.
Cliquer ensuite sur le bouton Ajouter une adresse
sous la liste des adresses existantes :
Ci-dessous, le formulaire d’ajout d’une adresse :
Documentation administrateur¶
Pilea peut-être administré via l’interface web ou bien en ligne de commande via la console
Symfony.
Via l’interface web¶
Les utilisateurs avec le rôle Admin ont accès aux informations d’administration de Pilea.
Pour accéder à ces informations, aller sur la page de configuration en cliquant sur le bouton dans la barre du haut. Si vous êtes administrateur, une carte supplémentaire apparait sous votre liste d’adresses :
Plusieurs éléments sont visibles sur cette page:
- Un bouton pour accéder à la gestion des utilisateurs
- Un bouton pour accéder aux derniers logs de l’application
- La liste des configurations courantes de l’application
Configurations¶
Plusieurs fonctionnalités sont paramètrables dans Pilea :
- Le nombre maximum d’adresses qu’un utilisateur puisse créer
- La possiblité de partager des adresses entre utilisateurs
- La possiblité de rendre une adresse publique pour l’ensemble des utilisateurs
- La possiblité pour des utilisateur de pouvoir recharger leurs données via l’interface
- La possiblité pour des utilisateur de pouvoir exporter leurs données via l’interface
Les paramètres courants sont visibles via l’interface d’administration mais ne sont pas modifiable via l’interface web.
Pour les changer, il faut modifier le fichier .env
à la racine de Pilea (le fichier est auto-documenté).
Ci-dessous, un exemple de paramètrage de ce fichier :
###> symfony/framework-bundle ###
APP_ENV=prod
APP_SECRET=app_secret_you_should_change_this_value
#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
#TRUSTED_HOSTS='^localhost|example\.com$'
###< symfony/framework-bundle ###
###> doctrine/doctrine-bundle ###
# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
# Configure your db driver and server_version in config/packages/doctrine.yaml
DATABASE_URL=mysql://admin:admin@127.0.0.1:3306/pilea
# DATABASE_URL=pgsql://admin:password@127.0.0.1:5432/pilea
###< doctrine/doctrine-bundle ###
# Number of places a user can create (-1 for no limit)
PILEA_USER_MAX_PLACES=-1
# Can users share place between them
PILEA_USER_CAN_SHARE_PLACE=1
# Can user fetch data from ui
PILEA_USER_CAN_FETCH=1
# Can user export data from ui
PILEA_USER_CAN_EXPORT=1
# Can a place be public
PILEA_PLACE_CAN_BE_PUBLIC=0
Gestion des utilisateurs¶
Accédez à la page de gestion fes utilisateurs en cliquant sur le bouton Gérer les utilisateurs
ou en visitant la page /admin/users
.
Sur cette page se trouve un tableau listant l’ensemble des utilisateurs de Pilea.
Au bout de chaque ligne, des boutons vous permettent de :
- Modifier l’utilisateur
- Désactiver/activer l’utilisateur
- Supprimer l’utilisateur (et l’ensemble de ses données)
Pour créer un nouvel utilisateur, cliquez sur le bouton Ajouter un utilisateur
.
Un utilisateur désactivé ne peut plus se connecter, mais ses données ne sont pas supprimées.
Les logs¶
L’interface web permet de visualiser les derniers logs de Pilea. Cliquez sur le bouton Voir les derniers logs
ou visitez la page /admin/log
.
Via la console Symfony¶
Plusieurs commandes Symfony existent pour administrer Pilea.
Les commandes sont toutes auto-documentées, et s’utilisent comme des commandes Symfony classiques, par exemple :
# Se rendre dans le dossier racine de Pilea
cd /emplacement/de/pilea
# Pour connaitre l'utilisation d'une commande :
php7.3 bin/console pilea:user:activate --help
# Pour l'utiliser :
php7.3 bin/console pilea:user:activate username
Commandes génériques¶
pilea:install
: Installateur de Pileapilea:fetch-data
: Récupérer les différentes données (c’est cette commande qui est appelé quotidiennement par le cron de Pilea)pilea:version
: Connaître la version courante de Pilea
Commandes de gestion des utilisateurs¶
pilea:user:add
: Ajouter un utilisateurpilea:user:edit
: Modifer un utilisateurpilea:user:activate
: Activer un utilisateurpilea:user:deactivate
: Désactiver un utilisateurpilea:user:exist
: Savoir si un utilisateur existe déjàpilea:user:grant
: Donner à un utilisateur le rôle d’admin
Commandes de développement¶
Cette commande ne peut être utilisées que sur un environnement de développement.
pilea:dev:generate-fake-data
: Générer de fausses données
Documentation développeur¶
Mettre en place un environnement de développement¶
Il n’y pas encore de docker ou de truc comme ça pour installer facilement le projet. Pour monter un environement de dev :
- Suivre la doc d’installation classique
- Refaire un
composer install
en incluant les dépendances de dev :
php7.3 composer.phar install
- Changer la variable
APP_ENV
dans le.env
:
...
###> symfony/framework-bundle ###
APP_ENV=dev
...
- Générer des données de tests :
# Génére des données pour les 3 derniers mois pour un utilisateur user-test/password
# attention, la génération peut-être un peu longue, vous pouvez réduire le nombre de
# de données créées avec l'option --from
php7.3 bin/console pilea:dev:generate-fake-data
Et voilà !
Générer les assets¶
Les assets sont gérer avec Webpack Encore
# Installer les dépendances
yarn install
# Build en mode prod
yarn build
# Build en mode dev
yarn dev
# Build en mode watch
yarn dev --watch
Todo List¶
- Ajouter un onglet pour comparer des périodes et/ou des adresses
- Pouvoir importer des données