Lazer Posté(e) le 3 juin 2015 Signaler Posté(e) le 3 juin 2015 (modifié) 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. Pour Veolia, cela permet de vendre des services à valeur tarif ajoutée au client, comme une assurance "détection de fuite d'eau". Pour le client, cela permet de consulter son historique dans l'espace personnel accessible sur le site web https://www.service-client.veoliaeau.fr/home.html => https://espace-client.vedif.eau.veolia.fr/s/login/ 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é le 5 août 2019 par Lazer 4
Sakkhho Posté(e) le 4 juin 2015 Signaler Posté(e) le 4 juin 2015 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 ?
Lazer Posté(e) le 4 juin 2015 Auteur Signaler Posté(e) le 4 juin 2015 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.
Sakkhho Posté(e) le 4 juin 2015 Signaler Posté(e) le 4 juin 2015 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
Sakkhho Posté(e) le 4 juin 2015 Signaler Posté(e) le 4 juin 2015 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'
Lazer Posté(e) le 4 juin 2015 Auteur Signaler Posté(e) le 4 juin 2015 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 ...
Sakkhho Posté(e) le 4 juin 2015 Signaler Posté(e) le 4 juin 2015 j'ai tenté mais entre les 15000 lignes qui s'affiche je vois souvent des erreurs.
Sakkhho Posté(e) le 4 juin 2015 Signaler Posté(e) le 4 juin 2015 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
Lazer Posté(e) le 4 juin 2015 Auteur Signaler Posté(e) le 4 juin 2015 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.
Nico Posté(e) le 5 juin 2015 Signaler Posté(e) le 5 juin 2015 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 !
Sakkhho Posté(e) le 5 juin 2015 Signaler Posté(e) le 5 juin 2015 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
Sakkhho Posté(e) le 5 juin 2015 Signaler Posté(e) le 5 juin 2015 Ça avance :-)petit problème ensuitej'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
Lazer Posté(e) le 5 juin 2015 Auteur Signaler Posté(e) le 5 juin 2015 Euh petit problème de copier coller, il manque tout les sauts de lignes.... j'avoue, j'ai du mal àcomprendre là!
Sakkhho Posté(e) le 5 juin 2015 Signaler Posté(e) le 5 juin 2015 Oue. C est l édit taptalk qui a modifié le post. Je corrige dans 10mn
Lazer Posté(e) le 5 juin 2015 Auteur Signaler Posté(e) le 5 juin 2015 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
Sakkhho Posté(e) le 5 juin 2015 Signaler Posté(e) le 5 juin 2015 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.
Sakkhho Posté(e) le 5 juin 2015 Signaler Posté(e) le 5 juin 2015 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
Lazer Posté(e) le 5 juin 2015 Auteur Signaler Posté(e) le 5 juin 2015 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 ?
Sakkhho Posté(e) le 6 juin 2015 Signaler Posté(e) le 6 juin 2015 J'ai tout refait en mettant en config sudo au lieu de local::lib et ca semble bon. 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 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
Lazer Posté(e) le 6 juin 2015 Auteur Signaler Posté(e) le 6 juin 2015 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
Sakkhho Posté(e) le 6 juin 2015 Signaler Posté(e) le 6 juin 2015 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
Lazer Posté(e) le 6 juin 2015 Auteur Signaler Posté(e) le 6 juin 2015 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...
Sakkhho Posté(e) le 6 juin 2015 Signaler Posté(e) le 6 juin 2015 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
Sakkhho Posté(e) le 6 juin 2015 Signaler Posté(e) le 6 juin 2015 Bonsoir Lazer. As tu une idée pourquoi l outils de graph est en carafe après le requête curl ?
Messages recommandés