Aller au contenu
Lazer

Automatiser Le Relevé Du Compteur D'eau Veolia Depuis Le Site Web

Recommended Posts

Ce sujet fait suite au sujet [Votre avis ?] Compteur Eau Veolia Hrf initié par @Sakkhho.

 

Remarque préliminaire : depuis janvier 2019, Veolia a mis en place un nouveau site Web utilisant un framework trop complexe pour permettre la récupération automatisée des données depuis un script.

Par conséquent, la nouvelle procédure est de télécharger manuellement le relevé au format CSV sur le site Web, puis de le transférer sur la machine sur laquelle s'exécute le script présenté ci-dessous.

Opération à renouveler manuellement occasionnellement.

 

Si votre fournisseur d'eau est Veolia, il a peut être installé un compteur d'eau équipé d'un module HRF permettant la télétransmission quotidienne des relevés du compteur vers les serveurs de Veolia.

 

A noter que les données accessibles sur le site ont un retard de 1 jour environ.

Pour rappel, le télé-relevé est mis en place par le fournisseur d'eau en accord avec la municipalité, car cela nécessite la pose d'antennes en plusieurs points de la ville. La communication entre le compteur et l'antenne s'effectue sur une fréquence de 433 ou 868 MHz selon la génération, avec un protocole chiffré afin de sécuriser les données transmises. Par conséquent, il est impossible d'y accéder directement.

 

Ce tutoriel décrit comment mettre en place un script permettant d'aller chercher automatiquement le relevé sur le site web, puis aux choix :

  • injecter les données dans une base SQL
  • envoyer les données vers un service de graphiques en ligne
  • mettre à  jour une variable globale sur une box domotique
  • ...

 

Tout d'abord, le script qui parcours les pages Web est écris en langage Shell Bash, il faut donc disposer d'un système Linux. Cela peut être un serveur dédié, un NAS, une machine virtuelle, un Raspberry PI, un émulateur Cygwin sous Windows, etc.... ce tuto ne décrit pas l'installation d'une telle plateforme.

 

Ce script a été écrit rapidement, il sera peut-être nécessaire de l'adapter légèrement à votre usage.

Notamment, j'ai tout installé avec le compte root, ce qui n'est pas une bonne pratique. Il est souhaitable de le faire tourner avec un utilisateur lambda disposant de peu de privilèges.

De plus, la gestions des logs peut être améliorée.

 

  • veolia.sh
#/bin/bash
#
# Script: veolia.sh
#
# Version : 2.1
#
# Date : Août 2019
#
# Auteur : Lazer
#

# User data
NAS_ADDRESS="http://XXXXX"
NAS_URL="/graph"

# Do not modify below this line

# Initialization
if [ -z "${1}" ]
then
	echo -e "\nUsage : $0 <CSV File>\n"
	exit 1
fi
if [ ! -f ${1} ]
then
	echo "Error : file \"${1}\" does not exist"
	exit 2
fi

# Prepare CSV data
echo -e "\nPrepare data..."
DATE=`/bin/date +"%Y%m%d"`

grep "^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] " $1 > /dev/null 2>&1
if [ $? -eq 0 ]
then
	echo "Date format : YYYY-MM-DD"
	cat $1 | sed -e 's/"//g' | sed '1d' | awk -F\; 'BEGIN{OFS=","} {print substr($1,1,10),$2,$3,$4}' > conso-${DATE}.csv
else
	grep "^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9] " $1 > /dev/null 2>&1
	if [ $? -eq 0 ]
	then
		echo "Date format : DD/MM/YYYY"
		cat $1 | sed -e 's/"//g' | sed '1d' | awk -F\; 'BEGIN{OFS=","} {print substr($1,7,4)"-"substr($1,4,2)"-"substr($1,1,2),$2,$3,$4}' > conso-${DATE}.csv
	else
		echo "Error : unknown date format"
		exit 3
	fi
fi
 
# Send data to DomoCharts
POST=`awk -F\, 'BEGIN {ORS="";print "[";OFS=",";sep=""} {print sep"{\"id\":3000","\"date\":\""$1"\"","\"type\":\"water\"","\"value\":"$3"}"; sep=","} END {print "]\n"}' conso-${DATE}.csv`
echo -e "\nJSON data :\n${POST}"
echo -e "\nSend data to DomoCharts..."
/usr/bin/curl --request POST --data ${POST} ${NAS_ADDRESS}${NAS_URL}/data_post.php
echo

Dans le script ci-dessus, il faut remplacer XXXXX par vos informations personnelles :

# User data
NAS_ADDRESS="http://XXXXX"
NAS_URL="/graph"

On rend ce script exécutable :

[root@redhat veolia]# chmod u+x veolia.sh

 

  • xls2csv

 

Sur ma distribution Redhat, le script xls2csv est buggé. I y a un bug avec le format de date utilisé par Excel, et pas de chance on est en plein dedans. Ca se traduit par une date erronée de 4 ans et 1 jour.

Ce script buggé est celui qui est fourni dans le package catdoc-0.94.2 écrit en C par V.B. Vagner et disponible dans toutes les bonnes distributions Linux.

Il existe un autre script xls2csv, écrit en Perl par Ken Prows, qui fonctionne très bien. En revanche, il est plus compliqué à  installer, comme tout ce qui touche à  Perl !

 

Pour commencer, installer le compilateur gcc :

[root@redhat ~]# yum install gcc

Puis configurer le gestionnaire de paquets Perl CPAN :

[root@redhat ~]# perl -MCPAN -e 'shell'

[...]

CPAN needs access to at least one CPAN mirror.

As you did not allow me to connect to the internet you need to supply
a valid CPAN URL now.

Please enter the URL of your CPAN mirror  http://www.cpan.org
Configuration does not allow connecting to the internet.
Current set of CPAN URLs:
  http://www.cpan.org
Enter another URL or RETURN to quit: []
New urllist
  http://www.cpan.org


Please remember to call 'o conf commit' to make the config permanent!


cpan shell -- CPAN exploration and modules installation (v1.9402)
Enter 'h' for help.

cpan[1]> o conf commit
commit: wrote '/usr/share/perl5/CPAN/Config.pm'

cpan[2]> q
No history written (no histfile specified).
Lockfile removed.

Lancer Perl et installer les packages suivants :

[root@redhat ~]# perl -MCPAN -e 'shell'

install CPAN
reload CPAN
install YAML
install Locale::Recode
install Unicode::Map
install Spreadsheet::ParseExcel
install Spreadsheet::ParseExcel::FmtUnicode
install Text::CSV_XS
exit

Télécharger les sources de xls2csv et extraire l'archive :

[root@redhat ~]# wget http://search.cpan.org/CPAN/authors/id/K/KE/KEN/xls2csv-1.07.tar.gz
[root@redhat ~]# ll xls2csv-1.07.tar.gz
-rw-r--r--. 1 root root 4665 Jan 22  2012 xls2csv-1.07.tar.gz
[root@redhat ~]# tar xzf xls2csv-1.07.tar.gz
[root@redhat ~]# cd xls2csv-1.07
[root@redhat xls2csv-1.07]# ll
total 36
drwxr-xr-x.  4  501 games 4096 Jan 22  2012 .
dr-xr-x---. 17 root root  4096 May 10 23:12 ..
-rw-r--r--.  1  501 games 1227 Jan 22  2012 Changes
-rw-r--r--.  1  501 games  710 Jan 22  2012 Makefile.PL
-rw-r--r--.  1  501 games  163 Jan 22  2012 MANIFEST
-rw-r--r--.  1  501 games  710 Jan 22  2012 META.yml
-rw-r--r--.  1  501 games  536 Jan 22  2012 README
drwxr-xr-x.  2  501 games 4096 May 10 23:12 script
drwxr-xr-x.  2  501 games 4096 Jan 22  2012 t

Compiler et installer xls2csv :

[root@redhat xls2csv-1.07]# perl Makefile.PL

[...]

[root@redhat xls2csv-1.07]# make

[...]

[root@redhat xls2csv-1.07]# make install

[...]

Vérifier le bon fonctionnement :

[root@redhat xls2csv-1.07]# /usr/local/bin/xls2csv -h

xls2csv - Recode a spreadsheet's charset and save as CSV.

usage: xls2csv -x spreadsheet.xls [-w worksheet] [-n worksheet number] [-b charset] [-c csvfile.csv] [-a charset] [-qshvWf]

-x  : filename of the source spreadsheet
-b  : the character set the source spreadsheet is in (before)
-c  : the filename to save the generated csv file as
-a  : the character set the csv file should be converted to (after)
-q  : quiet mode
-s  : print a list of supported character sets
-h  : this help message
-v  : get version information
-W  : list worksheets in the spreadsheet specified by -x
-w  : specify the worksheet name to convert (defaults to the first worksheet)
-n  : specify the worksheet number to convert (you cannot use this option with -w)
-f  : force the worsheet to be fully parsed. This disables the feature that skips rows when the first cell is blank

example: xls2csv -x "spreadsheet.xls" -b WINDOWS-1252 -c "csvfile.csv" -a UTF-8

More detailed help is in "perldoc xls2csv"

 

  • Graphiques

 

Le script veolia.sh injecte les données dans la même base de données que mon outil DomoCharts.

 

Dans le fichier index.php on dé-commente les 2 lignes suivantes dans la rubrique <select id="update">

	<option value="water_day">Eau [L] (moyenne journalière)</option>
	<option value="water_month">Eau [L] (moyenne mensuelle)</option>

 

  • veolia.sh

 

Retour au script veolia.sh écrit précédemment.

Il devrait maintenant pouvoir s'exécuter avec succès :

[root@redhat veolia]# ls -l veolia.sh
-rwxr-xr-x. 1 root root 992 May  1 17:37 veolia.sh

[root@redhat veolia]# ./veolia.sh historique_jours_litres_20190501.csv

Prepare data...

Send data to DomoCharts...
{"success":true,"rowcount":0}

Check old values...
..........................................................................................

 

 

  • Bonus

 

Si on veut mettre à  jour une variable globale sur la box Home Center 2 en v4, on peut remplacer les dernières lignes du script veolia.sh par la ligne suivante (non testé personnellement) :

# Send data to HC2 global variable
CONSO=`tail -1 conso-${DATE}.csv | awk -F\, '{print $3}'`
PUT="{\"name\": \"ConsoEau\", \"value\": \"${CONSO}\"}"
curl --request PUT --data ${PUT} --user admin:password http://192.168.x.y/api/globalVariables/ConsoEau
Modifié par Lazer
  • Upvote 4

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour le tuto.
Je regarde en détail ce week-end probablement

Étant sous Mac faut que je regarde la 1ère étape ;-)
par defaut, Shell Bash est present sous mac non ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui je pense que pour le script shell ça devrait fonctionner tel quel sous Mac.

Par contre, pour xls2csv et Perl, je n'en n'ai aucune idée.

Partager ce message


Lien à poster
Partager sur d’autres sites

sur mon MAC la commande 

perl -v

donne

This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level
(with 2 registered patches, see perl -V for more detail)

Copyright 1987-2013, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

c'est deja ca

Partager ce message


Lien à poster
Partager sur d’autres sites

le 

cd /root/veolia

root c'est la racine (c: en gros) et après le repertoire que tu as crée

donc je peux mettre le chemin que je veux ici ?

 

bon je mets veolia.sh dans mon repertoire et dans le terminal je fais

cd /Users/Sakkhho/Desktop/Maison/Veolia

ensuite j'ai fais

chmod u+x veolia.sh

par contre pour installer GCC sur MAC YOSEMITE, je trouve pas. ...

EDIT : ha si, en tapant GCC tout betement, il me propose d'installer qq chose... je suis quand meme dans le brouillard .... épais :-)

iMac-de-Sakkhho:~ Sakkhho$ gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.3.0
Thread model: posix

ensuite PERL j'obtiens ca

cpan shell -- CPAN exploration and modules installation (v2.00)
Enter 'h' for help.

cpan[1]> o conf commit
commit: wrote '/Users/Sakkhho/.cpan/CPAN/MyConfig.pm'

cpan[2]> q
Terminal does not support GetHistory.
Lockfile removed.

*** Remember to add these environment variables to your shell config
    and restart your shell before running cpan again ***

PERL_MB_OPT="--install_base \"/Users/Sakkhho/perl5\""; export PERL_MB_OPT;
PERL_MM_OPT="INSTALL_BASE=/Users/SAkkhho/perl5"; export PERL_MM_OPT;

par contre l'installation des packages PERL me donne pas mal d'erreur ... je ne sais pas pourquoi

 

souvent j'ai ca

ERROR: Can't create '/Library/Perl/5.18/CPAN'
mkdir /Library/Perl/5.18/CPAN: Permission denied at /System/Library/Perl/5.18/ExtUtils/Install.pm line 469.

ERROR: Can't create '/Library/Perl/5.18'
Do not have write permissions on '/Library/Perl/5.18'

Partager ce message


Lien à poster
Partager sur d’autres sites

Hum, y'a pas mal de choses différentes sous MacOS.

 

Perl semble fonctionner, à  mon avis tu peux tenter la commande perl -MCPAN -e 'shell' suivie des différents install ...

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai tenté mais entre les 15000 lignes qui s'affiche je vois souvent des erreurs.

Partager ce message


Lien à poster
Partager sur d’autres sites

quand je configure PERL

 

j'ai 

What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')

j'ai mis local::lib

 

c'est bon ?

 

bon ca à  l'air mieux après avoir reconfiguré avec o conf init

et relancé tous les installs (2 fois pour avoir le message ci dessous)

cpan[12]> install Spreadsheet::ParseExcel::FmtUnicode
Spreadsheet::ParseExcel::FmtUnicode is up to date (0.65).

cpan[13]> install Text::CSV_XS
Text::CSV_XS is up to date (1.18).

cpan[14]> install YAML
YAML is up to date (1.15).

cpan[15]> install Locale::Recode
Locale::Recode is up to date (undef).

cpan[16]> install Unicode::Map
Unicode::Map is up to date (0.112).

cpan[17]> install Spreadsheet::ParseExcel
Spreadsheet::ParseExcel is up to date (0.65).


par contre je bloque avec le wget maintenant

cpan[20]> wget http://search.cpan.org/CPAN/authors/id/K/KE/KEN/xls2csv-1.07.tar.gz
Catching error: "Can't locate object method \"wget\" via package \"CPAN::WAIT\" at /System/Library/Perl/5.18/CPAN/Shell.pm line 127, <FIN> line 20.\cJ" at /System/Library/Perl/5.18/CPAN.pm line 392, <FIN> line 20.
	CPAN::shell() called at -e line 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Super !

 

Le wget il faut le lancer depuis le shell, en dehors de Perl.

Si tu n'as pas wget, tu peux simplement coller l'adresse du package à  télécharger dans ton navigateur, puis l'enregistrer sur disque.

Moi j'utilise wget car c'est sur un serveur, donc il n'y a pas de navigateur web.

Partager ce message


Lien à poster
Partager sur d’autres sites

Heureusement que je ne suis pas chez Veolia, j'aurai du tester ça, et donc installé un Linux, et là... Juste pas possible par conviction personnelle :)

En tout cas GG Lazer !

Partager ce message


Lien à poster
Partager sur d’autres sites

Super !

 

Le wget il faut le lancer depuis le shell, en dehors de Perl.

Si tu n'as pas wget, tu peux simplement coller l'adresse du package à  télécharger dans ton navigateur, puis l'enregistrer sur disque.

Moi j'utilise wget car c'est sur un serveur, donc il n'y a pas de navigateur web.

 

j'avais tenté depuis le shell mais command not found

je regarde mieux ce soir

Partager ce message


Lien à poster
Partager sur d’autres sites

Ça avance :-)

petit problème ensuite

j'ai téléchargé et decompressé l'archive, ensuite c'est bon, sauf pour le 'make install' qui me renvoie une erreur

iMac-de-Sakkhho:xls2csv-1.07 Sakkhho$ ls -l 
total 40
-rw-r--r--@ 1 Sakkhho  staff  1227 22 jan  2012 Changes
-rw-r--r--@ 1 Sakkhho  staff   163 22 jan  2012 MANIFEST
-rw-r--r--@ 1 Sakkhho  staff   710 22 jan  2012 META.yml
-rw-r--r--@ 1 Sakkhho  staff   710 22 jan  2012 Makefile.PL
-rw-r--r--@ 1 Sakkhho  staff   536 22 jan  2012 README
drwxr-xr-x@ 3 Sakkhho  staff   102 22 jan  2012 script
drwxr-xr-x@ 3 Sakkhho  staff   102 22 jan  2012 t
iMac-de-Sakkhho:xls2csv-1.07 Sakkhho$ perl Makefile.PL
Checking if your kit is complete...
Looks good
Warning: prerequisite Locale::Recode 0 not found.
Warning: prerequisite Spreadsheet::ParseExcel 0 not found.
Warning: prerequisite Spreadsheet::ParseExcel::FmtUnicode 0 not found.
Warning: prerequisite Text::CSV_XS 0 not found.
Warning: prerequisite Unicode::Map 0 not found.
Writing Makefile for xls2csv
Writing MYMETA.yml and MYMETA.json
iMac-de-Sakkhho:xls2csv-1.07 Sakkhho$ make
cp script/xls2csv blib/script/xls2csv
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/xls2csv
Manifying blib/man1/xls2csv.1
iMac-de-Sakkhho:xls2csv-1.07 Sakkhho$ make install
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ERROR: Can't create '/usr/local/bin'
Do not have write permissions on '/usr/local/bin'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 at -e line 1.
make: *** [pure_site_install] Error 13

Partager ce message


Lien à poster
Partager sur d’autres sites

Euh petit problème de copier coller, il manque tout les sauts de lignes.... j'avoue, j'ai du mal àcomprendre là!

Partager ce message


Lien à poster
Partager sur d’autres sites

Oue. C est l édit taptalk qui a modifié le post.

Je corrige dans 10mn

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah il n'a pas le droit d'écrire dans /usr/local/bin

Par contre je ne sais pas du tout comment c'est foutu les répertoires sur MacOS.... si quelqu'un sait ?

Il y a un compte root ?

Tu pourrais essayer juste pour voir : sudo make install

Partager ce message


Lien à poster
Partager sur d’autres sites

mieux ca donne;

Installing /usr/local/share/man/man1/xls2csv.1
Installing /usr/local/bin/xls2csv
Appending installation info to /Library/Perl/Updates/5.18.2/darwin-thread-multi-2level/perllocal.pod

avant j'ai fait un - je sais pas si ca a aidé

 sudo mkdir /usr/local/bin


par contre le résultat est pas terrible ...

iMac-de-Sakkhho:xls2csv-1.07 Sakkhho$ /usr/local/bin/xls2csv -h

Can't locate Locale/Recode.pm in @INC (you may need to install the Locale::Recode module) (@INC contains: /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2/darwin-thread-multi-2level /Library/Perl/Updates/5.18.2 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 .) at /usr/local/bin/xls2csv line 9.
BEGIN failed--compilation aborted at /usr/local/bin/xls2csv line 9.

Partager ce message


Lien à poster
Partager sur d’autres sites

pourtant 

cpan[15]> install Locale::Recode
Locale::Recode is up to date (undef).

c'est bien installé

 

mais si je fais un make test 

c'est pas très beau

iMac-de-Sakkhho:xls2csv-1.07 Sakkhho$ make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/xls2csv.t .. 1/4 
#   Failed test 'Did Local::Recode load ok?'
#   at t/xls2csv.t line 11.

#   Failed test 'Did Spreadsheet::ParseExcel load ok?'
#   at t/xls2csv.t line 14.

#   Failed test 'Did Spreadsheet::ParseExcel::FmtUnicode load ok?'
#   at t/xls2csv.t line 17.

#   Failed test 'Did Text::CSV_XS load ok?'
#   at t/xls2csv.t line 20.
# Looks like you failed 4 tests of 4.
t/xls2csv.t .. Dubious, test returned 4 (wstat 1024, 0x400)
Failed 4/4 subtests 

Test Summary Report
-------------------
t/xls2csv.t (Wstat: 1024 Tests: 4 Failed: 4)
  Failed tests:  1-4
  Non-zero exit status: 4
Files=1, Tests=4,  0 wallclock secs ( 0.02 usr  0.00 sys +  0.02 cusr  0.00 csys =  0.04 CPU)
Result: FAIL
Failed 1/1 test programs. 4/4 subtests failed.
make: *** [test_dynamic] Error 4

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah, on dirait qu'il ne trouve pas les librairies que tu as installé pour PERL.

Peut-être qu'il fallait aussi lancer l'installer des librairies de Perl avec sudo.

 

Tu peux essayer de recommencer toutes les étapes, mais en précédant la commande perl avec sudo à  chaque fois ?

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai tout refait en mettant en config sudo au lieu de local::lib et ca semble bon.

:60:

Sam  6 jui 2015 08:42:53 CEST
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 37476    0 37476    0     0  38889      0 --:--:-- --:--:-- --:--:-- 38875
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    75    0     0  100    75      0    194 --:--:-- --:--:-- --:--:--   194
  0     0    0 17486    0     0  18754      0 --:--:-- --:--:-- --:--:--  143k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 28506    0 28506    0     0  10550      0 --:--:--  0:00:02 --:--:-- 10549
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 36596    0 36596    0     0  25063      0 --:--:--  0:00:01 --:--:-- 25065
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  6656  100  6656    0     0  18219      0 --:--:-- --:--:-- --:--:-- 18235
Now reading "conso-20150606.xls" as CP850.
The spreadsheet has been converted to UTF-8 and saved as "conso.xls.csv".
{"success":true,"rowcount":31}

pour le get_data.php, j'ai un doute sur comment modifier le fichier

j'ai fait ca, c'est ok?  

require 'config.inc.php';

try {
	$bdd = new PDO('mysql:host='.$server.';dbname='.$database, $login, $password);
	if ( isset($_GET['query']) && $_GET['query']=='dataserie' ) {
		if (substr($_GET['type'], -4) == '_day') {
			$sql = $bdd->prepare('SELECT UNIX_TIMESTAMP(date)*1000 AS time, avg_value FROM domotique_'.$_GET['type'].' WHERE device_id = :device');
			$sql->execute(array(
				'device' => $_GET['device'])
			if ( $_GET['type'] == 'water_day' )
   				$sql = $bdd->prepare('SELECT UNIX_TIMESTAMP(date)*1000 AS time, value FROM domotique_'.$_GET['type'].' WHERE device_id = :device ORDER BY time');
 			else
  				$sql = $bdd->prepare('SELECT UNIX_TIMESTAMP(date)*1000 AS time, avg_value FROM domotique_'.$_GET['type'].' WHERE device_id = :device ORDER BY time');
			);
		}
		else {
			$sql = $bdd->prepare('SELECT UNIX_TIMESTAMP(time)*1000 AS time, value FROM domotique_'.$_GET['type'].' WHERE device_id = :device AND time >= DATE_SUB(curdate(), INTERVAL :interval DAY)');
			$sql->execute(array(
				'device' => $_GET['device'],
				'interval' => $interval)
			);
		}
		$datas = $sql->fetchAll(PDO::FETCH_NUM);
		echo $_GET['callback'] . '(' . json_encode($datas, JSON_NUMERIC_CHECK) . ');';
	}
}
catch(Exception $e) {
	die('Erreur : '.$e->getMessage());
}
?>

EDIT --> surement pas car l'outil de graph est KO 

 

EDIT2 --> en fait l'outil est KO meme en remettant le get data d'origine - faut que je regarde le reste

 

Pour la crontab une fois exexcuté ca me donne :

iMac-de-Sakkhho:~ Sakkhho$ crontab -e
crontab: no crontab for Sakkkhho - using an empty one
crontab: installing new crontab

je pense que c'est bon.

A quelle heure ca va se lancer ? il y a un moyen de regarder si c'est bon ?

 

J'ai aussi verifié la base sql et c'est top j'ai bien les valeurs  :60:

il me manque 1 jour par contre, l'extract veolia me donne jusqu'au 4 juin, dans la base je m'arrete au 3 juin

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour le data_get tu as inversé les lignes. Le voici en pièce jointe.

 

Tu remarqueras que la page PHP data_post retourne un JSON comprenant le nombre de nouvelles lignes insérées dans la base. La première fois tu as eu 31 :

{"success":true,"rowcount":31}

SI tu le relances maintenant tu auras 0.

Si tu le relances demain tu auras 1.

 

La crontab va se déclencher à  00:05 tous les jours :

5 0 * * * /root/veolia/veolia.sh >> /root/veolia/veolia.out 2>&1

Tu peux modifier cette valeur bien sur. Le premier chiffre ce sont les minutes, et le 2nd ce sont les heures. Ne pas toucher aux étoiles (qui représentant les jours, mois...)

data_get.php

Partager ce message


Lien à poster
Partager sur d’autres sites

merci

c'est mieux l'outil de graph refonctionne et sur la donnée "eau" je reste en PLEASE WAIT.

Pas assez de données encore ?

il y a quand meme 1 jour de décalage, car j'ai 32 lignes de conso dans l'excel que je récupère de veolia.

 

 

tu peux me dire comment supprimer la ligne de la crontab ? et ou comment l'editer ?

 

pour la variable dans la HC2

j'ai mis à  la fin du .sh les lignes (avec la bonne ip et le bon login password) mais j'obtiens ca

curl: (6) Could not resolve host: "ConsoEau",
curl: (6) Could not resolve host: "value"
curl: (3) [globbing] unmatched close brace/bracket in column 6
{"name":"ConsoEau","value":"0","readOnly":false,"isEnum":false,"created":1433573596,"modified":1433573596}


merci en tout cas pour ce tuto, c'est vraiment cool  :13:

Partager ce message


Lien à poster
Partager sur d’autres sites

Bizarre cette histoire de ligne qui manque.... j'ai pas trop d'idée là .

 

Pour le graph, c'est parce que la base de données ne connait pas le device. Moi je l'avais inséré manuellement dedans, mais essaye avec cette ligne, ça devrait le faire (j'ai choisi un id de 3000 pour le compteur veolia, mais tu peux mettre un autre nombre élevé qui n'entreras jamais en conflit avec les modules de ton HC2 :

curl "http://XXX/graph/device_post.php?id=3000&type=water&name=Veolia&roomid=0&roomname=Météo"

Pour supprimer la ligne de la crontab, il faut faire "dd", puis sauvegarder et quitter normalement : ":wq"

Ou alors pour l'éditer, il faut faire "a" (append) ou "i" (insert).

 

Pour la variable globale, il faut que je me penche sur la question.... plus tard dans la journée...

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai cette ligne dans le .sh après et je l'ai executé

/usr/bin/curl --request POST --data ${POST} http://xxxx/graph/data_post_water_day.php

mais ca a tout fait peter. l'outil de graph reste sur un écran noir ? meme pour les autres données.

bizarre

 

dans la base sql, j'ai bien le device et la table water à  bien pris la valeur 3000 aussi

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir Lazer.

As tu une idée pourquoi l outils de graph est en carafe après le requête curl ?

Partager ce message


Lien à poster
Partager sur d’autres sites

×