Corriger des valeurs anormales dans Domoticz

Il peut arriver, pour une raison inconnue, que Domoticz enregistre des valeurs aberrantes. Notamment avec le compteur de consommation électrique OWL Micro+ CM180.

Voici l’effet pour une journée :

Screenshot from 2016-03-27 17-25-53

Nous allons voir comment corriger ces valeurs directement dans la base de données.

1. Sauvegarde de la base de données

La première chose à faire lorsque l’on manipule une base de données est de faire une sauvegarde . Domoticz permet de faire cela en un clic, le fichier étant directement téléchargé via le navigateur.

Rendez-vous donc dans Setup > Settings > Backup / Restore

Screenshot from 2016-03-27 17-34-44

2. Installer SQLITE3

Domoticz stocke ses données dans une base de type SQLITE, il s’agit d’un fichier domoticz.db que vous trouverez directement dans le dossier d’installation de Domoticz. Afin de modifier le contenu de ce fichier, nous allons avoir besoin d’installer l’outil sqlite3. Connectez vous sur le système qui héberge Domoticz, dans le cas d’un Raspberry Pi avec raspian, voici les commandes :

sudo apt-get update
sudo apt-get install sqlite3

3. Identifier et modifier la valeur aberrante

Les deux tables qui nous intéressent sont Meter et Meter_Calendar.

Screenshot from 2016-03-27 18-06-47

Meter contient toutes les valeurs d’une journée (toutes les 5 minutes) et Meter_Calendar, la valeur agrégée sur une journée. Dans mon cas, je n’ai pas vu la valeur le jour même, je vais donc devoir corriger uniquement la valeur erronée dans Meter_Calendar avec une valeur moyenne que je choisis arbitrairement. La manipulation étant exactement identique si vous avez à corriger la valeur à 5 mins.
Ouvrons le fichier avec sqlite3 :

sudo sqlite3 domoticz.db

La première chose à faire est d’identifier l’ID du compteur. Si vous l’avez appelé “Electricite” dans Domoticz la requête sera :

sqlite> select ID from DeviceStatus where name = "Electricite" ;
22

Ensuite on récupère la valeur et le compteur du jour en question (ici le 19/03/2016) :

sqlite> select Value,Counter from Meter_Calendar where Date="2016-03-19" and DeviceRowID=22 ;
54993831257|54996226048

On fait de même avec la veille :

sqlite> select Value,Counter from Meter_Calendar where Date="2016-03-18" and DeviceRowID=22 ;
13912|2394714

On choisit une valeur arbitraire moyenne en fonction des jours précédents pour la valeur et on l’ajoute au compteur du jour précédent. Je prends ici 18340 comme “Value” corrective et je l’ajoute au “Counter” de la veille : 18340+2394714=2413054

sqlite> update Meter_Calendar set Value=18340 where Date="2016-03-19" and DeviceRowID=22 ;
sqlite> update Meter_Calendar set Counter=2413054 where Date="2016-03-19" and DeviceRowID=22 ;

Et on vérifie le résultat :

sqlite> select Value,Counter from Meter_Calendar where Date="2016-03-19" and DeviceRowID=22 ;
18340|2413054

Enfin sur l’interface Web de Domoticz :

Screenshot from 2016-03-27 18-41-29

Voilà ! Vous retrouvez des graphes “cohérents” même si pour cette journée, la valeur corrigée à la main ne sera pas réelle (mais plus proche de la réalité que 54993831257 kWh 😉 )

3 thoughts on “Corriger des valeurs anormales dans Domoticz

  • 15 août 2016 at 17 h 23 min
    Permalink

    Bonjour, bien la correction, mais il faudra probablement refaire cela régulièrement car l’origine du problème n’est pas traitée et les valeurs erronées vont normalement se succéder. Il faudrait avoir dans domoticz un facteur de correction, un peu comme pour les capteurs de température, maintenant si le problème est aléatoire, c’est une autre histoire !

    Reply
  • 22 avril 2018 at 23 h 24 min
    Permalink

    Et si les valeurs à corriger ne sont ni dans la table Meter, ni dans Meter_Calendar? Le plus compliqué étant bien souvent de trouver la bonne table 😉 !

    Reply
  • 22 février 2019 at 18 h 17 min
    Permalink

    Bonjour, merci ça marche impécable, juste vérifer que l’on se trouve dans le bon repertoire.

    Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *