Dans cet article, nous allons voir comment construire un automate pour envoyer les données de notre compteur Linky dans un fichier Excel. En effet, c’est assez fastidieux de devoir périodiquement saisir des données dans un tableur, il est préférable de consacrer son énergie à la conception et à l’analyse 🙂 Pour cet exemple, j’ai choisi des données Tempo en lien avec les derniers articles du blog et du forum.

Voici un extrait du fichier que nous obtiendrons (ici l’onglet du mois de mars pour ma consommation), il y aura dans ce fichier Excel, 12 onglets pour les mois de l’année avec le détail de chaque journée, plus un onglet annuel pour avoir le bilan de chaque mois et un onglet pour les données.

Tout d’abord, il faut récupérer les données du compteur Linky, dans cet article, vous trouverez la solution que j’utilise pour récupérer les données Teleinfo du compteur de production photovoltaïque, c’est identique pour le compteur de consommation.
Ensuite, il faut modifier légérement les scripts lua qui sont décrits dans l’article sur Tempo. On va rajouter les éléments qui vont nous permettre de créer un fichier de données qui sera enrichi 2 fois par jour (à 22h et 6h).
Il faut au préalable, créer un fichier .csv vide avec sudo nano (ou en utilisant Filezilla pour transférer un fichier créé avec un autre outil) et faire un sudo chown pi:pi nomdufichier. Je mets ces fichiers de données dans /scripts/divers/ mais cela peut être ailleurs du moment que le script .lua dispose de l’information via les variables.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
-- Variables pour la gestion du fichier externe de stockage des données local an = tonumber(os.date("%Y")) local mois = tonumber(os.date("%m")) local jour = tonumber(os.date("%d")) local chemin = "/home/pi/domoticz/scripts/divers/" local nom_fichier = "suivi_tempo_" -- Mise à jour de 22h00 pour le fichier suivi_tempo.csv (période Heures Pleines) -- Ecriture de la nouvelle ligne pour la journée en cours -- Ajout des zéros si le mois et/ou le jour ne comportent qu'un caractère if (string.len(mois) == 1) then mois = "0"..mois end if (string.len(jour) == 1) then jour = "0"..jour end -- Valeur sans décimales dans le fichier de suivi compteur = compt * 1000 compteur = math.floor(compteur) -- ligne = aaaammjj;jour tempo;conso hp;conso hc ligne = an..mois..jour..";"..tempo..";"..tostring(compteur)..";" fichier = chemin..nom_fichier..an..".csv" log("script_time_tempo_22 - Ligne a ecrire dans le fichier suivi_tempo_"..an..".csv : "..ligne) -- ecriture d'une nouvelle ligne dans le fichier file = io.open(fichier, "a") file:write(ligne) file:close() -- Mise à jour de 6h00 pour le fichier suivi_tempo_aaaa.csv (période Heures Creuses) -- Préparation des informations pour compléter la ligne du jour -- Valeur sans décimales dans le fichier de suivi compteur = compt * 1000 compteur = math.floor(compteur) ligne = tostring(compteur).."\n" log("script_time_tempo_6 - Ligne a ecrire dans le fichier suivi_tempo"..an..".csv : "..ligne) -- Gestion du changement d'année pour écrire la dernière période nocturne de l'année moins 1 if (jour == 1) and (mois == 1) then an = an - 1 fichier = chemin..nom_fichier..an..".csv" else fichier = chemin..nom_fichier..an..".csv" end -- Ouverture et écriture du fichier enrichi file = io.open(fichier, "a") file:write(ligne) file:close() |
Au début, il y a une partie à mettre dans les 2 scripts avec les variables qui seront nécessaires, puis le code à ajouter dans le script de 22h qui va ajouter une ligne dans le fichier de suivi et le code pour le script de 6h dans lequel on ajoute des données dans la ligne créée à 22h. Les données sont descrites dans la ligne commentaire –ligne. Il y a 4 champs séparés par des points virgules :
- aaaammjj : le jour dans un format adapté au tri et aux recherches
- la couleur du jour : Bleu/Blanc ou Rouge
- le compteur Heures Pleines avec 3 décimales mais sans point/virgule (exemple : 6541 égal 6.541 kWh).
- le compteur Heures Creuses avec le même format qui est rajouté à 6h00
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
20230301;Rouge;6516;2009 20230302;Rouge;4581;1911 20230303;Blanc;4573;2074 20230304;Bleu;5434;3141 20230305;Bleu;4100;3831 20230306;Blanc;6000;3548 20230307;Blanc;6100;1663 20230308;Bleu;4052;1851 20230309;Bleu;4936;2112 20230310;Bleu;4870;3315 20230311;Bleu;5840;2375 20230312;Bleu;6170;2324 20230313;Bleu;5638;2115 20230314;Bleu;4170;2384 20230315;Bleu;6111;2463 20230316;Bleu;4341;3127 20230317;Bleu;4841;2270 20230318;Bleu;7317;2474 20230319;Bleu;3670;2458 20230320;Bleu;3552;2207 |
Il y a une particularité dans le code de 6h car, au changement d’année, il faut écrire la période Heures Creuses du 31/12 dans le fichier de l’année précédente.
Un autre intérêt de ces fichiers, c’est qu’ils permettent une historisation des données dans un format compact et indépendant des logiciels.
A 6h chaque jour, mon fichier de données contient les informations pour la veille (y compris la dernière nuit). Il faut maintenant envoyer ce fichier dans un emplacement utilisable depuis Excel. J’ai choisi un répertoire Dropbox (mais cela fonctionne aussi avec Google Drive ou d’autres services Cloud). Dans la crontab, je lance le shell ci-dessous à 6h05 et mes données sont disponibles sur le PC ou j’utilise Excel. J’ai aussi une version LibreOffice Calc sur Raspberry qui fonctionne avec les mêmes données, mais les formules sont différentes car Libreoffice Calc n’utilise pas les mêmes méthodes qu’Excel.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#!/bin/bash # rclone de synchronisation avec Dropbox pour les fichiers de données # le répertoire cible dans Dropbox est /Domoticz/Data pour les fichiers de données # ce script est lancé chaque matin pour remonter dans Dropbox tous les fichiers de données # 16/03/2023 : Ajout de la date dans les echo pour le suivi dans les logs # Affichage de l'heure d'exécution dans les commandes echo echo $(date '+%Y:%m:%d:%H:%M:%S:%N') "# Début du script rclone_dropbox.sh " # Variables génériques utilisées pour construire le chemin et l'extension du fichier à récupérer deb_chemin='/home/pi/domoticz/scripts/divers/' echo $(date '+%Y:%m:%d:%H:%M:%S:%N') '# Début du chemin $deb_chemin : '$deb_chemin fin='.csv' echo $(date '+%Y:%m:%d:%H:%M:%S:%N') '# Fin du nom de fichier de données $fin : '$fin # Gestion de l'année des fichiers de données an=$(date +%Y) anprod=$(date +%Y) mois=$(date +%m) jour=$(date +%d) echo $(date '+%Y:%m:%d:%H:%M:%S:%N') '# Année $an : '$an echo $(date '+%Y:%m:%d:%H:%M:%S:%N') '# Mois $mois : '$mois echo $(date '+%Y:%m:%d:%H:%M:%S:%N') '# Jour $jour : '$jour if (($mois == 01 && $jour == 01)) then an=$(($an - 1)) echo $(date '+%Y:%m:%d:%H:%M:%S:%N') '# Année $an : '$an fi # Variables utilisées pour définir le nom du fichier de données 1 nom1='suivi_tempo_' echo $(date '+%Y:%m:%d:%H:%M:%S:%N') '# Nom du fichier de données $nom1 : '$nom1 # Variables utilisées pour définir le nom du fichier de données 2 nom2='suivi_production_2022-' echo $(date '+%Y:%m:%d:%H:%M:%S:%N') '# Nom du fichier de données $nom2 : '$nom2 # Variables utilisées pour définir le nom du fichier de données 3 nom3='suivi_autoconso_' echo $(date '+%Y:%m:%d:%H:%M:%S:%N') '# Nom du fichier de données $nom3 : '$nom3 # Nom du fichier à synchroniser dans Dropbox fichier1=$deb_chemin$nom1$an$fin echo $(date '+%Y:%m:%d:%H:%M:%S:%N') '# Fichier $fichier1 : '$fichier1 fichier2=$deb_chemin$nom2$anprod$fin echo $(date '+%Y:%m:%d:%H:%M:%S:%N') '# Fichier $fichier2 : '$fichier2 fichier3=$deb_chemin$nom3$an$fin echo $(date '+%Y:%m:%d:%H:%M:%S:%N') '# Fichier $fichier3 : '$fichier3 # rclone de copie pour le fichier 1 Tempo (mettre --dry-run pour tester) rclone sync --progress $fichier1 'dropbox:/Domoticz/Data/' # rclone de copie pour le fichier 2 Tempo (mettre --dry-run pour tester) rclone sync --progress $fichier2 'dropbox:/Domoticz/Data/' # rclone de copie pour le fichier 3 Tempo (mettre --dry-run pour tester) rclone sync --progress $fichier3 'dropbox:/Domoticz/Data/' |
Dans ce shell, je synchronise aussi d’autres fichiers de suivi pour ma production photovoltaïque et mon auto-consommation. La commande qui permet la synchro est : rclone plus d’infos ici. Le fichier de configuration pour rclone (rclone.conf) se trouve dans /home/pi/.config/rclone.
Maintenant, il ne reste plus qu’à traiter le fichier de données automatiquement dans Excel.
Dans ces quelques copies d’écran, je donne juste un aperçu des opérations à réaliser pour une meilleur compréhension du processus (ce n’est pas un tuto Excel – il y en a d’excellents sur la toile).
A titre d’exemple, voici mon fichier de suivi Tempo dans sa version Excel : Suivi Tempo 2023 Data








