Script Véolia

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
domcars0
Messages : 238
Inscription : 18 févr. 2017, 20:23

Re: Script Véolia

Message par domcars0 »

Salut,
Le script ramène les infos de conso journalière pour le mois en cours (ou pour le mois précédent pendant les 3 premiers jours du mois en cours).
Si les données du jour J sont déjà dans la base de données alors on fait un UPDATE sinon on fait un INSERT.
Ce qui compte dans la table Meter_Calendar (table qui enregistre les conso journalière) c'est la valeur de 'Value' , la valeur de Counter ne sert pas (hormis pour le rapport), la valeur du compteur est enregistrée dans la table DeviceStatus.

Lorsque l'on a une nouvelle valeur on fait donc un INSERT (et donc on insert une 'Value') , si on a déjà la valeur on va juste mettre à jour le compteur. Ce n'est pas normal que tes 'Value' soient constamment à 0??
.
Veola Mediterrannée propose désormais la conso horaire (bon c'est pas encore tout à fait au point de leur côté, vérifier sur le site de Veolia pour voir si vous n'avez pas des jours avec des consos horaires négatives :-( !). J'ai fait un nouveau script qui permet désormais d'avoir des enregistrements dans la table Meter (et donc la conso horaire). Ce script n'utilise plus le code HTML (et ne nécessite donc plus la librairie simple_html_dom.php) mais importe les fichiers CSV . Le code est simplifié et plus facile à lire.

Ce nouveau code permet également de récupérer la valeur vraie du compteur (Veolia Méditerranée donne cette valeur de temps à autre dans le fichier CSV des consos journalières).
Pour le reste tout est comme dans la version précédente. Vous n'avez rien à modifier dans le fichier de config water.inc.

Pour une nouvelle install, lire les instructions dans le fichier README.md.

On peut remplir la BdD plusieurs années en amont (comme avec le code précédent).
Il suffit après l'install de taper :
% /chemin/vers/code/water.php YYYY MM
avec YYYY = année de début d'enregistrement et MM mois de début. Puis on relace la commande en encrémentant MM , puis YYYY jusqu'au mois précédent celui de l'installation de ce code.

C'est à dire par exemple:
% /chemin/vers/code/water.php 02 2017
% /chemin/vers/code/water.php 03 2017
% /chemin/vers/code/water.php 04 2017
...
...
% /chemin/vers/code/water.php 12 2017
% /chemin/vers/code/water.php 01 2018
% /chemin/vers/code/water.php 02 2018
... etc ...
jusque
% /chemin/vers/code/water.php 12 2019
si on installe ce code en janvier 2020.

Remarque : Ne pas tenir compte de la fin de ce code (dans mon domoticz j'ai ajouté un interrupteur virtuel de type 'doorbell' qui me permet de lancer ce script (en plus du cron) et ce code insère une information dans cet interrupteur qui me permet de savoir si la dernière mise à jour a importé de nouvelles données ou si ce n'est que de l'UPDATE).

Le code est sur https://github.com/domcars0/DomoticzVeolia/releases
Dernière modification par domcars0 le 23 févr. 2020, 23:04, modifié 12 fois.
La liberté a un prix... celui de l'effort.
domcars0
Messages : 238
Inscription : 18 févr. 2017, 20:23

Re: Script Véolia

Message par domcars0 »

Ca s'améliore doucement coté Véolia Med.. Ca fait deux jours que j'ai les consos horaire de la veille!
Les consos de la veille sont rendues dispos vers 6h00 du mat.
Les consos horaires c'est vraiment un plus.
La liberté a un prix... celui de l'effort.
spiffou
Messages : 27
Inscription : 15 févr. 2017, 17:12

Re: Script Véolia

Message par spiffou »

Salut @domcars0,

Merci pour ton retour complet.
Tout d'abord, j'ai mis en place ton nouveau script permettant de prendre en compte les consos horaires et en effet c'est vraiment top !
J'ai repris l'historique des années précédentes et juste une remarque : il faut saisir % /chemin/vers/code/water.php 12 2019 (et non 2019 12).

J'ai mis en place le script hier avec un nouveau capteur virtuel et aujourd'hui je constate déjà des anomalies dans la base de données.
  • Hier, tout était propre, sauf 2 insertions identiques en date du 14/02 (que j'ai supprimées de la base, à voir si cette erreur se reproduit).
  • Aujourd'hui, je constate bien dans la la log que les entrées passées sont associées à un UPDATE et la nouvelle entrée au 15/02 à un INSERT.
    Malgré tout, la dernière ligne en date du 17/02 est à 0 (Value à 0 et Counter à 0).
    C'est la même erreur que j'ai avais eu en 2019.
    Pourtant c'est entrée n'existe pas sur Veolia (fichier CSV journalier et conso horaire CSV).
    Je l'ai supprimé dans la base, mais je pense qu'elle réapparaîtra demain.
    L'effet de bord est que quand la conso est disponible elle s'ajoute dans la base de données avec un UPDATE et non un INSERT.
domcars0
Messages : 238
Inscription : 18 févr. 2017, 20:23

Re: Script Véolia

Message par domcars0 »

Salut,
Merci tout d'abord pour la correction de commande.
Je suppose que tu parles de la table "Meter_Calendar" dans le reste de ton post ....
Est-ce que tu fais tes mises à jour à la main en mode debug ?

"Aujourd'hui, je constate bien dans la la log que les entrées passées sont associées à un UPDATE et la nouvelle entrée au 15/02 à un INSERT."
Ce qui est le but recherché. ;-)
"Malgré tout, la dernière ligne en date du 17/02 est à 0 (Value à 0 et Counter à 0)."

Il faut savoir que ce matin (et encore maintenant) Veolia Med ne m'a pas fourni les consos horaires d'hier (stp, peux tu vérifier si tu les as depuis le site de Veolia Med) . J'ai donc une entrée dans la table Meter_Calendar au 17/02 à 0 (15|0|0|2020-02-17). En fait cette entrée est générée automatiquement par Domoticz à 0:00 à partir des données présentes dans la table Meter et pas par mon script. Cette entrée du 17/02 sera mise à jour (UPDATE) par mon script dès que Veolia fournira les données pour cette date. Rien d'anormal à tout cela donc.

EDIT: Ce matin, 19/02, à 5:45 le script a importé les données de Veolia Med. Il a bien mis à jour (UPDATE) l'entrée du 17/02 de la table Meter_Calendar (15|90|0|2020-02-17). Cette entrée a été mis à jour à partir des données de conso horaires du 17/02 de la table Meter (le script a également inséré les consos horaires du 18/02 et mis à jour l'entrée de Meter_Calendar du 18) .
Dernière modification par domcars0 le 24 févr. 2020, 15:44, modifié 1 fois.
La liberté a un prix... celui de l'effort.
spiffou
Messages : 27
Inscription : 15 févr. 2017, 17:12

Re: Script Véolia

Message par spiffou »

Salut,

Je te réponds ci-dessous.
domcars0 a écrit : 18 févr. 2020, 17:34 Salut,
Merci tout d'abord pour la correction de commande.
Je suppose que tu parles de la table "Meter_Calendar" dans le reste de ton post ....
Oui tout à fait.
domcars0 a écrit : 18 févr. 2020, 17:34 Est-ce que tu fais tes mises à jour à la main en mode debug ?
A la main avec sqlilte3.
Je ne sais pas comment faire pour faire tourner ton script PHP en mode debug, mais je suis preneur car cela m'aiderait à mieux comprendre.
domcars0 a écrit : 18 févr. 2020, 17:34 "Aujourd'hui, je constate bien dans la la log que les entrées passées sont associées à un UPDATE et la nouvelle entrée au 15/02 à un INSERT."
Ce qui est le but recherché. ;-)
"Malgré tout, la dernière ligne en date du 17/02 est à 0 (Value à 0 et Counter à 0)."

Il faut savoir que ce matin (et encore maintenant) Veolia Med ne m'a pas fourni les consos horaires d'hier (stp, peux tu vérifier si tu les as depuis le site de Veolia Med) .
Je vérifie à cette heure sous Domoticz et les dernières consos horaires dont je dispose sont celles du 17/02.
Sur le site de Veolia, je dipose des consos horaires du 16/02 sous la rubrique "Surveiller ma conso avec Télérelevé" et en manipulant l'URL (https://www.eau-services.com/mon-espace ... /2020&d=17) je dispose des consos horaires du 17/02 (comme sur Domoticz), mais pas celles du 18/02.
domcars0 a écrit : 18 févr. 2020, 17:34 J'ai donc une entrée dans la table Meter_Calendar au 17/02 à 0 (15|0|0|2020-02-17).
Aujourd'hui, j'ai une entrée dans la table Meter_Calendar au 18/02 à 0.
domcars0 a écrit : 18 févr. 2020, 17:34 En fait cette entrée est générée automatiquement par Domoticz à 0:00 à partir des données présentes dans la table Meter et pas par mon script. Cette entrée du 17/02 sera mise à jour (UPDATE) par mon script dès que Veolia fournira les données pour cette date. Rien d'anormal à tout cela donc.
Ok, cela réponds à mon interrogation sur cet ajout.
Par contre, sous la table meter, les dernières conso dont je dispose sont celles du 17/02. Donc étrange cet ajout automatique par Domoticz. Éventuellement, le script pourrait supprimer cette entrée parasite (DELETE FROM Meter_Calendar...) qui influence la courbe sur le dernier jour.
Je ne touche plus aux données de Domoticz et je confirmerai sur les prochains jours.

Par contre, je m'interroge sur LastUpdate.
Sauf erreur de ma part, cette date est affichée sur le capteur virtuel sous l'onglet Mesures de Domoticz.
Jusqu'à aujourd'hui, cette information reste bloqué sur la date et horaire de la première exécution du script au 17/02 à 16h54.

Autre interrogation, pourquoi le script recherche les consos horaires d'hier (18/02) ?
Cette recherche plante (Erreur dans le fichier csv de la date 2020-02-18 :).
Pourquoi ne pas exclure la date d'hier ?
Peut être pour l'évolution de la mise à disposition des données ?
domcars0 a écrit : 18 févr. 2020, 17:34 EDIT: Ce matin, 19/02, à 5:45 le script a importé les données de Veolia Med. Il a bien mis à jour (UPDATE) l'entrée du 17/02 de la table Meter_Calendar (15|90|0|2020-02-17). Cette entrée a été mis à jour à partir des données de conso horaires du 17/02 de la table Meter (le script a également inséré les consos horaires du 18/02 et mis à jour l'entrée de Meter_Calendar du 18) . La valeur de Counter dans Meter_Calendar (0) n'a aucune importance, seule celle dans la table DeviceStatus compte.
De mon côté, l'UPDATE a mise à jour l'entrée du 16/02 (UPDATE Meter_Calendar SET Value=326 WHERE Date='2020-02-16' AND DeviceRowID=2330 ;).
Sur la date du 17/02 (mis à jour à partir des données de conso horaires du 17/02 de la table Meter), il y a eu un INSERT (INSERT INTO Meter_Calendar Values (2330,504,0,'2020-02-17') ;)
Je n'ai aucune donnée du 18/02, d'où ma question plus haut. Mais cette mis à disposition évoluera peut être selon les secteurs géographiques ?
La valeur de Counter dans Meter_Calendar est celle du 17/02 à 16h54 (1ère exécution du script).

+
domcars0
Messages : 238
Inscription : 18 févr. 2017, 20:23

Re: Script Véolia

Message par domcars0 »

On passe en mode 'debug' en mettant $debug = true dans water.inc.

Supprimer l'entrée de la table Meter_Calendar du jour J-1 générée par Domoticz à 0:00 le jour J ne sert pas à grand chose puisque cette entrée est habituellement mise à jour ( chaque matin vers 5:45 on a les consos de J-1).

Lorsque le script n'a pas d'infos de conso horaire pour un jour, il ne plante pas. Il affiche un message et il continue vers le jour suivant.( voir lignes 265 à 278 du script).
Dernière modification par domcars0 le 24 févr. 2020, 15:45, modifié 2 fois.
La liberté a un prix... celui de l'effort.
spiffou
Messages : 27
Inscription : 15 févr. 2017, 17:12

Re: Script Véolia

Message par spiffou »

Ok, merci pour toutes ces infos et pour ce script !!
Je suis bien en mode debug.
A suivre demain matin sans agir sur la base.
+
spiffou
Messages : 27
Inscription : 15 févr. 2017, 17:12

Re: Script Véolia

Message par spiffou »

Bonjour,

Pas de données disponibles aujourd'hui sur Veolia pour la journée du 18/02 (et du 19/02).
domcars0
Messages : 238
Inscription : 18 févr. 2017, 20:23

Re: Script Véolia

Message par domcars0 »

Pour moi pas d'information pour la journée d'hier (19/02) ... :|
Je me demande si la fourniture de l'information des consommations dépend de Veolia ou si cela peut-être dû au compteur qui transmet mal son information ...?
EDIT: Ce matin (21/02) , récupération des nouvelles consos horaires du 19 et du 20/02 vers 4:45 ( plus tôt que d'habitude)
La liberté a un prix... celui de l'effort.
spiffou
Messages : 27
Inscription : 15 févr. 2017, 17:12

Re: Script Véolia

Message par spiffou »

Bonjour,

Ce matin (21/02) , récupération des nouvelles consos horaires du 18 et du 19/02.
Par contre, elles sont incomplètes, j'ai n'ai aucune donnée entre le 18/02 15h00 et le 19/02 15h00.
A voir si cela se reproduit et voir si dans les prochains jours, les données journalières seront mises à jour.
Globalement, les données ont bien été mises à jour (écrasement du 0 et mise à jour de la date et horaire du DeviceStatus).
A suivre, mais plutôt satisfait pour l'instant et vraiment top le nouveau script permettant d'exploiter les consos horaires.

+

EDIT : après vérification sur le site de Veolia, la conso journalière du 18/02 est : -504254 (anomalie détectée par le script).
A voir si la donnée sera corrigée par Veolia.
Sur les consos horaires, une donnée de Veolia (18/02 16h) est présente sur Domoticz au 19/02 16h.
Les données manquantes sur Domoticz sont précisées non mesurée sur Veolia.
Répondre