[Tuto] Consomation d'eau ajout simple dans DomoticZ

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: [TUTO] Consomation d'eau ajout dans domoticz - SDEI

Message par jacques68 »

Alle avant de me coucher....j'en suis la:

Code : Tout sélectionner

 - PART 3 Generate SQL
DELETE FROM `Meter_Calendar` WHERE devicerowid=72 and date = '2015-08-01'; INSERT INTO `Meter_Calendar` VALUES ('72', '0185', '468902', '2015-08-01' );
DELETE FROM `Meter_Calendar` WHERE devicerowid=72 and date = '2015-08-02'; INSERT INTO `Meter_Calendar` VALUES ('72', '0344', '469246', '2015-08-02' );
DELETE FROM `Meter_Calendar` WHERE devicerowid=72 and date = '2015-08-03'; INSERT INTO `Meter_Calendar` VALUES ('72', '0445', '469691', '2015-08-03' );
DELETE FROM `Meter_Calendar` WHERE devicerowid=72 and date = '2015-08-04'; INSERT INTO `Meter_Calendar` VALUES ('72', '0581', '470271', '2015-08-04' );
DELETE FROM `Meter_Calendar` WHERE devicerowid=72 and date = '2015-08-05'; INSERT INTO `Meter_Calendar` VALUES ('72', '0433', '470704', '2015-08-05' );
DELETE FROM `Meter_Calendar` WHERE devicerowid=72 and date = '2015-08-06'; INSERT INTO `Meter_Calendar` VALUES ('72', '0508', '471212', '2015-08-06' );
DELETE FROM `Meter_Calendar` WHERE devicerowid=72 and date = '2015-08-07'; INSERT INTO `Meter_Calendar` VALUES ('72', '0416', '471628', '2015-08-07' );
DELETE FROM `Meter_Calendar` WHERE devicerowid=72 and date = '2015-08-08'; INSERT INTO `Meter_Calendar` VALUES ('72', '04', '472028', '2015-08-08' );
DELETE FROM `Meter_Calendar` WHERE devicerowid=72 and date = '2015-08-09'; INSERT INTO `Meter_Calendar` VALUES ('72', '0314', '472342', '2015-08-09' );
DELETE FROM `Meter_Calendar` WHERE devicerowid=72 and date = '2015-08-10'; INSERT INTO `Meter_Calendar` VALUES ('72', '0109', '47245', '2015-08-10' );
DELETE FROM `Meter_Calendar` WHERE devicerowid=72 and date = '2015-08-11'; INSERT INTO `Meter_Calendar` VALUES ('72', '0254', '472704', '2015-08-11' );
update DeviceStatus set lastupdate = '2015-08-11 00:59:51' where id = 72;

Et dans Domoticz........

:mrgreen: :mrgreen: :mrgreen:

Faut encore améliorer car la c'est des m3!!!! Peut on transformer cela en litres? Par exemple transformer la première colonne 5.08m3 en 0.508m3??
Pièces jointes
conso2.png
conso2.png (174.81 Kio) Consulté 8118 fois
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: [TUTO] Consomation d'eau ajout dans domoticz - SDEI

Message par jacques68 »

:D :D :D
Ca progresse ça progresse!!!! J'y suis pratiquement arrivé, encore 2 3 bricoles.
Aujourd'hui j'en suis la!!
Domo2.png
Domo2.png (179.28 Kio) Consulté 8101 fois
J'ai pu convertir mes m3.
On voit sur le graphe une conso a 0.004m3!!!! Sur le mois de juillet idem une conso à presque 0..
La cela vient du fichier récupéré sur le site La Lyonnaise Beug???
Moi je récupére ce fichier:

Code : Tout sélectionner


[["01\/08\/2015",0.185,468.902],["02\/08\/2015",0.344,469.246],["03\/08\/2015",0.445,469.691],["04\/08\/2015",0.581,470.271],["05\/08\/2015",0.433,470.704],["06\/08\/2015",0.508,471.212],["07\/08\/2015",0.416,471.628],                               ["08\/08\/2015",0.4,472.028],    
                    ["09\/08\/2015",0.314,472.342],["10\/08\/2015",0.109,472.45],["11\/08\/2015",0.254,472.704],
J'ai volontairement séparé la date du 08/08/2015 du reste pour pouvoir la faire ressortir. On voit que la donnée envoyée est 0.4 au lieu de 0.400!!!
Cela se produit aussi sur le mois de juillet ou la conso envoyée était de 0.26 au lieu de 0.260!!!
La je sais pas s'il y a moyen de remédier a cela en cherchant via commande (que je ne connais pas .. :roll: :roll: ) tous ces résultats et forcer les "0" à apparaitre.

J'ai remarqué aussi dans l'onglet mesure de Domoticz, le compteur d'eau reste à zero dans l'affichage normal ou non???
Domo3.png
Domo3.png (254.72 Kio) Consulté 8101 fois
sirus
Messages : 131
Inscription : 05 mai 2015, 18:09
Contact :

Re: [TUTO] Consomation d'eau ajout dans domoticz - SDEI

Message par sirus »

Pour l'affichage de l'onglet meusure j'ai pareil. La seule info fiable ici est la derniere mise à jour.

Pour le probleme de virgule je pense vraiment que la bonne solution serait de resoudre ce probleme d'arithmetic et de farire marcher le script en utilisant x100... Car supprimer la virgule ne semble pas la bonne solution...
Raspberry B+ & PI2 / Domoticz / RFXtrx433E / multiple homemade devices
My blog/tutos for domoticz / electronics stuff : domotique.web2diz.net
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: [TUTO] Consomation d'eau ajout dans domoticz - SDEI

Message par jacques68 »

Pour ce probleme de virgule..je sais plus ou chercher. J'ai contourné le problème d'une façon...mais cela en crée un autre, le probleme de la consommation des chiffres rond ou j'ai 0.4 au lieu de 0.400.

J'ai racheté un deuxième Raspi et je vais faire des tests sur ce dernier. Dès que j'aurai reussi a installer Domoticz depuis les sources.... :mrgreen: :mrgreen: :mrgreen:
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: [TUTO] Consomation d'eau ajout dans domoticz - SDEI

Message par jacques68 »

:mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:

MA Conso du jour!!!!!!!!
Domo3.png
Domo3.png (159.41 Kio) Consulté 8071 fois
Et tout cela AVEC ton fichier d'origine sans modif!!!!! sisisisisi... :lol: :lol: :lol: :lol: :lol:
Enfin presque car j'ai reussi à trouver ce qui provoque cette foutue erreur arithmetic!!!!!!!
Je suppose..enfin je suis sur que ton Raspi est en Anglais.......... :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Et l'erreur est provoqué par......
sirus
Messages : 131
Inscription : 05 mai 2015, 18:09
Contact :

Re: [TUTO] Consomation d'eau ajout dans domoticz - SDEI

Message par sirus »

Trop cool!!!

Par quoi!!??

Dis moi je tiens plus!!

Comme ca je pourrait peu etre corriger pour que ca marche pour toute les langues!!

Oui mes 2 rasp (b+ et pi2) son en anglais..
Raspberry B+ & PI2 / Domoticz / RFXtrx433E / multiple homemade devices
My blog/tutos for domoticz / electronics stuff : domotique.web2diz.net
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: [TUTO] Consomation d'eau ajout dans domoticz - SDEI

Message par jacques68 »

Héhéhé... :D :D :D

Alle je te le donne....en fait c'est le local qui fou le bazzard....D'après ce que j'ai lu "ksh" à des beugs arithmétic en particulier avec la local Fr_UTF_8.

Pour palier à ce problème suffit de changer la local dans le programme. J'ai donc mi en deuxiémé ligne de ton programme

Code : Tout sélectionner

LC_ALL=C
on change les locales

et en fin de pogramme avant la ligne "end"

Code : Tout sélectionner

unset LC_ALL
on rétablit les locales d'origines

et voila on est arrivé au bout :mrgreen: :mrgreen: :mrgreen:

Pour les prochains qui vont tester ton code se sera nettement plus simple!!!! :D :D :D

Encore merci pour ton code et ton aide!!
sirus
Messages : 131
Inscription : 05 mai 2015, 18:09
Contact :

Re: [TUTO] Consomation d'eau ajout dans domoticz - SDEI

Message par sirus »

Super ! Je vais mettre a jour mon code pour intégrer cette modif.

Edit : après réflexion pas sur que le ligne unset soit nécessaire car le set ne s'applique que pour le script en cours.


Pourrais tu me donner les url que tu utilises (sans les info perso) ?

J'aimerais faire une variante pour les gens qui sont à la soget...
Raspberry B+ & PI2 / Domoticz / RFXtrx433E / multiple homemade devices
My blog/tutos for domoticz / electronics stuff : domotique.web2diz.net
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: [TUTO] Consomation d'eau ajout dans domoticz - SDEI

Message par jacques68 »

Voila je te met mon code

Pour la derniere ligne que j'ai mise j'ai aussi un doute sur son utilité..Mais bon je l'ai mise quand meme

Code : Tout sélectionner

#!/usr/bin/ksh
#############################################################################
# This script will get the data from SDEI website and insert into domoticz.db
# Site    : http://domotique.web2diz.net/
# Detail  : http://domotique.web2diz.net/?p=131
# Source  : http://domotique.web2diz.net/files/updateConsoEau.sh.txt
# License : CC BY-SA 4.0
#
#  Usage:
#  ./updateConsoEau.sh [year] [month]
#	
#############################################################################
#
#  PART 0 Common variables
#
#############################################################################
LC_ALL=C

# Date setup (if not set = today)
if [ $1 != '' ] && [ $2 != '' ] && [[ $1 == +([0-9]) ]] && [[ $2 == +([0-9]) ]]
then
  dateY=$1
  dateM=$2
else
  dateY=`date "+%Y"`
  dateM=`date "+%m"` 
fi

# SQL Files setup for temporary and final file
sqlfinalfile=/home/pi/SDEI/only_new_generated.$dateY-$dateM.sql
sqlpreviousfile=/home/pi/SDEI/previous.generated.$dateY-$dateM.sql
sqltmpfile=/home/pi/SDEI/temps.generated.$dateY-$dateM.sql

#SDEI PERSONAL CODE ( see http://domotique.web2diz.net/?p=137) 
SDEI_CODE=12314567890		# put your code here  	  ex:  SDEI_CODE=PLOLKIKU
SDEI_EMAIL=adressemail@gmail.com		# put your email here  	  ex:  SDEI_EMAIL=toto@tata.com
SDEI_PASSWD=motdepasse		# put your password here  ex:  SDEI_PASSWD=totolabrico42


# Database file setup 
#dbfile=/home/pi/SDEI/domoticz.db # Only for test  purpose 
dbfile=/home/pi/domoticz/domoticz.db

# Your virtual device ID in domoticz (see step2 here http://domotique.web2diz.net/?p=138 ) 
devicerowid=68		#  put your devices idx here   ex : devicerowid=123



#######################################
#
#  PART 1 get the data
#
######################################
echo -e "\n - PART 1 Get the data from SDEI for $dateY-$dateM"

loginpage="https://www.sogest.info/mon-compte-en-ligne/connexion/validation"
datapage="https://www.sogest.info/mon-compte-en-ligne/statJData/$dateY/$dateM/$SDEI_CODE"


export_file=/home/pi/SDEI/$dateY-$dateM.dat

# This first cmd will allow to connect to the site and get the cookiefile
curl -s $loginpage -c /home/pi/SDEI/cookiefile -d "input_mail=$SDEI_EMAIL&input_password=$SDEI_PASSWD" > /dev/null
# This second cmd will download the data
curl -s $datapage -b /home/pi/SDEI/cookiefile > $export_file

echo -e "\n $export_file  generated "
# Remove cookiefiles
rm /home/pi/SDEI/cookiefile


#######################################
#
#
#  PART 2 set the file to be usable
#
######################################
echo -e "\n - PART 2 Update .dat file  "

sed -e 's/\\//g' $export_file > file1
sed -e 's/\],\[/\n/g' file1 > file2
sed -e 's/\[\[/\n/g' file2 > file3

sed -e 's/\"//g' file3  |grep -v ",0,0" |grep -e '^$' -v |grep -v ERR  > $export_file

rm file1 file2 file3
echo -e "\n $export_file  Updated "


#######################################
#
#  PART 3 Generate SQL
#
######################################

echo -e "\n - PART 3 Generate SQL"

# create the previous file is does not exits
if [ ! -f "$sqlpreviousfile" ] ; then touch $sqlpreviousfile ; fi
IFS=,
while read date val val2 ; do

#### DATE ####

 dd=`echo $date |awk -F/ '{print $1}'`
 mm=`echo $date |awk -F/ '{print $2}'`
 yy=`echo $date |awk -F/ '{print $3}'`

 hh=`date +%H:%M:%S`
#### VAL1  ####


val1=$(( $val * 100))

if [[ $val -eq 0 ]];
then
          float val1=$((100 * ($val2-$prevVal2)))
fi

prevVal2=$val2

### Generation  ###

echo  "DELETE FROM \`Meter_Calendar\` WHERE devicerowid=$devicerowid and date = '$yy-$mm-$dd'; INSERT INTO \`Meter_Calendar\` VALUES ('$devicerowid'," \'$val1\', \'$val2\', \'$yy-$mm-$dd\' ");" >>$

done < $export_file

# GENERATE SQL FOR UPDATE DEVICE STATUS
DEVICESTATUS1="update DeviceStatus set lastupdate = '$yy-$mm-$dd $hh' where id = $devicerowid;"


###  prepare  and compare fromm previous run  ####

comm -3 $sqltmpfile $sqlpreviousfile > $sqlfinalfile
cat $sqlfinalfile

echo $DEVICESTATUS1
mv $sqltmpfile $sqlpreviousfile



#######################################
#
#  PART 4 Update the db
#
######################################
#exit

echo -e "\n - PART 4 Update the db  "

if [ -s $sqlfinalfile ]
then
   echo -e "\nFile size is NOT zero ->  DB update needed"
   echo " Stoping Domoticz ! "
   sudo /etc/init.d/domoticz.sh stop
   echo " Domoticz stopped"
        echo Update DB START

        echo Update Values
        sudo cat $sqlfinalfile |sqlite3  $dbfile

        echo Update Status
        sudo echo $DEVICESTATUS1 |sqlite3  $dbfile

        echo Update DB END
    echo " Starting Domoticz !"
    sudo /etc/init.d/domoticz.sh start
    echo " Domoticz started "
else
   echo -e "\nFile size is zero -> DB update NOT needed"
fi

unset LC_ALL
echo -e "\n ### END ###\n"

sirus
Messages : 131
Inscription : 05 mai 2015, 18:09
Contact :

Re: [TUTO] Consomation d'eau ajout dans domoticz - SDEI

Message par sirus »

Du coup je viens de modifier mon scrip pour qu'il fonctinne avec les deux !

c'est just une ligne de plus a modifier en fonction si on est chez SDEI ou SEGEST :

Code : Tout sélectionner

# Set your provider comment/uncomment if needed (default = SDEI)
PROVIDER=SDEI
#PROVIDER=SOGEST

Code : Tout sélectionner

cd /home/pi/
mkdir EAU
Votre répertoire de travail « EAU» est créé. On va maintenant ajouter le script :

Code : Tout sélectionner

cd /home/pi/EAU 
wget http://domotique.web2diz.net/files/updateConsoEau.sh
chmod +x updateConsoEau.sh

Merci pour ton aide et le temps passé pour les tests :)
Raspberry B+ & PI2 / Domoticz / RFXtrx433E / multiple homemade devices
My blog/tutos for domoticz / electronics stuff : domotique.web2diz.net
Répondre