Dans le cadre d’un projet personnel, je m’intéresse à la télé-information client (TIC) de mon compteur électrique. Il s’agit d’une sortie du compteur fournissant des informations sur l’état du compteur. On peut y retrouver le numéro du compteur, la consommation totale, la puissance consommée à un instant donné, etc. La prise TIC se présente sous forme de deux terminaux accessibles facilement et elle envoie les données selon un protocole simple et bien documenté, à base de trames émises régulièrement par le compteur.1
Pour de nombreux traitements (filtrage notamment), il est bien plus simple de considérer que les trames sont parfaitement régulières. Cependant, ce n’est pas tout à fait le cas. Aussi pour ne pas fausser complètement les calculs, il faut répondre à la question suivante : à quel point les trames sont-elles régulières ?
-
On retrouve toutes les informations utiles sur la documentation fournie par Enedis et son complément dédié aux compteurs Linky.
↩
Horodatage des trames
Je dispose d’un compteur Linky, qui sait communiquer selon un protocole qui contient l’horodatage des trames (mode standard). Cependant, il n’est pas configuré dans ce mode-là, mais selon le mode dit historique dont les trames ne contiennent pas d’information d’horodatage. J’ai donc ajouté à mon enregistreur un système qui effectue l’horodatage lors de l’acquisition de la trame. 1
Les horodatages se présentent sous la forme d’un grand fichier texte où chaque ligne représente la date d’arrivée sous la forme d’un temps exprimé en millisecondes. En voici un extrait ci-dessous.
52562
54119
55675
57232
58790
60347
61907
63464
65020
66577
Il me faut maintenant analyser la régularité de ces réceptions de trames.
-
Il suffit normalement de contacter son fournisseur d’énergie pour faire changer la configuration du compteur. Je ne l’ai pas fait, d’abord par paresse, mais aussi parce que cela me forcerait à réécrire une partie de l’enregistreur et que je préfère me concentrer sur l’aspect analyse de données pour le moment.
↩
Analyse de la régularité des trames
L’analyse se fonde sur les écarts entre les trames successives : si ces écarts sont tous identiques, les trames sont parfaitement régulières. S’ils ne le sont pas, alors les trames seront irrégulières.
Évidemment, la réalité n’est pas aussi manichéenne, et il est possible d’observer la répartition des écarts entre trames.
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as ss
filename = "data/data_4/time.txt"
time_values = []
with open(filename, "r") as f:
for l in f.readlines():
time_values.append(int(l))
time_diff = np.diff(time_values)
stats = ss.describe(time_diff)
print(stats)
start = 1556.5 - 3
stop = 1559.5 + 3
bins = np.arange(start, stop, 1)
plt.hist(time_diff, bins=bins, density=True)
plt.ylabel("Fréquence")
plt.xlabel("Écart à la trame précédente (ms)")
plt.title("Régularité de l'arrivée des trames")
plt.show()
Les écarts sont donc bien concentrés autour de 1557 et 1 558 ms (plus de 80 % des échantillons). En rajoutant les quelques millisecondes de part et d’autre, on obtient la quasi-totalité des échantillons.
On peut également demander un peu d’infos supplémentaires sans trop se fatiguer :
Donnée | Valeur | Unité |
---|---|---|
Moyenne | 1557.68 | ms |
Minimum | 1553 | ms |
Maximum | 2135 | ms |
Variance | 24.26 | ms2 |
On voit que le maximum est bien plus élevé que ce que montre l’histogramme. Il y a en fait un effet de longue traîne, comme le montre la figure ci-dessous, avec un petit nombre d’échantillons qui se répartissent sur une longue durée après le pic principal.
Cette longue traîne pourrait aussi affecter la variance, qui semble relativement élevée par rapport à la finesse du pic principal. Cependant, je n’ai pas effectué l’analyse en éliminant la longue traîne.
Il semblerait que l’envoi des trames soit très régulier en général, avec parfois de gros retards dans l’envoi ou la réception des trames.
Ces retards étant rares, je ne m’en inquiète pas, et les données justifient que prendre la moyenne comme période d’échantillonnage pour mes différents traitements est acceptable (au moins dans un premier temps). Cela tombe bien, parce que j’avais déjà fait cette hypothèse avant l’analyse détaillée des durées entre trames.
L’origine de ces retards reste cependant mystérieuse. Est-ce qu’il s’agirait de mon enregistreur ou du compteur ?