Compteur d’eau dans Domoticz #3

sdei2Voici comment récupérer sur votre raspberry et domoticz les informations de consommation provenant des sites de SUEZ. Pour les détails vous rendre sur la page de présentation ici.

Menu :

Etape 3  – Script :

/!\ avant toute manipulation je vous conseille de faire une sauvegarde de votre base de donnée voir de votre carte sd Rasberry. En cas de perte de données vous êtes le seul responsable ! /!\

Préparation : Ce script nécessite le shell ksh et sqlite3 pour les installer si vous ne les avez pas déjà vous pouvez les installer en tapant : 

sudo apt-get update
sudo apt-get install ksh
sudo apt-get install sqlite3

Dans cette étape on va utiliser les données récupérées dans l’étape 1 et utiilser un script qui va aller chercher les données sur le site pour les intégrer dans domoticz. Je ne suis pas expect en scripting, il y a certainement des améliorations à apporter au script, mais ça fonctionne très bien depuis plusieurs mois.

Créer le répertoire de travail

En tant que root sur votre rasberry :

cd /home/pi/
mkdir EAU

Votre répertoire de travail « EAU » est créé. On va maintenant ajouter le script :

cd /home/pi/EAU
curl -O https://raw.githubusercontent.com/Sirus10/domoticz/master/updateConsoEau.sh
chmod +x updateConsoEau.sh

Vous pouvez aussi le télécharger ici : https://github.com/Sirus10/domoticz

 Exécution

En tant que root ajustez les droit du fichier et exécuter le :

chmod +x /home/pi/EAU/updateConsoEau.sh
/home/pi/EAU/updateConsoEau.sh

Lors du premier lancement si le fichier setup_perso n’existe pas, le script va vous poser des questions pour configurer les identifiants de connexion, le fournisseur d’eau, et le numéro de compteur dans domoticz. Si besoin vous avez toujours la possibilité de l’éditer par la suite à la main.

Une fois les informations renseignés le script va s’exécuter et collecter les informations :

root@raspberrypi:/home/pi# /home/pi/EAU/updateConsoEau.sh

- PART 1 Get the data from $PROVIDER for 2015-07

/home/pi/EAU/2015-07.dat generated

- PART 2 Update .dat file

/home/pi/EAU/2015-07.dat Updated

- PART 3 Generate SQL
/*
vous devriez voir ici les requettes  SQL
*/

- PART 4 Update the db

File size is NOT zero -> DB update needed
Stoping Domoticz !
Domoticz stopped
Update DB START
Update Values
Update Status
Update DB END
Starting Domoticz !
2015-07-30 18:02:52.253 Domoticz V2.2286 (c)2012-2015 GizMoCuz
2015-07-30 18:02:52.255 System: Raspberry Pi
2015-07-30 18:02:52.256 Startup Path: /home/pi/domoticz/
domoticz: Domoticz is starting up....
Domoticz started

Vous devriez maintenant voir les données de votre consommation dans domoticz :

domoticz_sdei

 

Planification

Pour planifier l’exécution de ce script j’utilise la crontab suivante ( tout les jours à 6h15 et 10h15):

#Get data for WATER :
15 6,10 * * * /home/pi/EAU/updateConsoEau.sh > /tmp/updateConsoEau.log

Remarques 

  • le premier graphique (par heure) n’est pas utilisable car la mise à jour ne se fait qu’une fois par jour.
  • sur le site sdei les données ne sont visiblement pas mise à jour sur le weekend et les jours fériés, soyez patient un ou deux jours de plus…
  • à cause du point précédent, si les weekend tombent en fin de mois (ex dimanche 31) le lundi vos donnes du mois précédent ne seront pas mise à jour, il faut utiliser une astuce détaillée dans le prochain post.
  • pour récupérer les données du mois d’octobre 2014 vous pouvez utiliser  la commande comme cela :
/home/pi/EAU/updateConsoEau.sh 2014 10

 

Pour aller plus loin :

Les explications en détail de ce script son sur cette page : Génération compteur EAU domoticz – détail du script.

Etape suivante : comment ajouter les données plus anciennes (en construction)…

 

Vous avez aimé cet article ? Lassez un commentaire, ça fait toujours plaisir 🙂  !! 

 

39 réflexions au sujet de « Compteur d’eau dans Domoticz #3 »

  1. Zora

    Bonsoir,

    Merci pour la suite de tes articles 🙂

    Cela ma fait remettre au taff :=)

    Après le raspain sur raspberry, le domoticz sur raspian ! Voila maintenant le script pour BDD domoticz !
    Une bonne grosse journée de frappe dans un terminal 🙂

    Mais bon je reviens vers toi car j’ai une erreur lors de l’execution du script sur la partie 3 quand je suis en « root »:

    - PART 3 Generate SQL
    /home/pi/EAU/updateConsoEau.sh: line 122: * 100: arithmetic syntax error
    comm: /home/pi/EAU/temps.generated.2015-08.sql: Aucun fichier ou dossier de ce type
    update DeviceStatus set lastupdate = '-- 19:07:51' where id = 6;
    mv: impossible d'évaluer « /home/pi/EAU/temps.generated.2015-08.sql »: Aucun fichier ou dossier de ce type

    - PART 4 Update the db

    File size is zero -> DB update NOT needed

    ### END ###

    et une variante en utilisateur « pi »:


    - PART 1 Get the data from website for 2015-08
    EAU/updateConsoEau.sh[75]: /home/pi/EAU/2015-08.dat: cannot create [Permission denied]

    /home/pi/EAU/2015-08.dat generated
    rm: impossible de supprimer « /home/pi/EAU/cookiefile »: Aucun fichier ou dossier de ce type

    - PART 2 Update .dat file
    EAU/updateConsoEau.sh[94]: /home/pi/EAU/2015-08.dat: cannot create [Permission denied]

    /home/pi/EAU/2015-08.dat Updated

    - PART 3 Generate SQL
    sed: impossible de lire file3: Aucun fichier ou dossier de ce type
    EAU/updateConsoEau.sh: line 122: * 100: arithmetic syntax error
    EAU/updateConsoEau.sh[143]: /home/pi/EAU/only_new_generated.2015-08.sql: cannot create [Permission denied]
    update DeviceStatus set lastupdate = '-- 19:00:52' where id = 6;
    mv: impossible d'évaluer « /home/pi/EAU/temps.generated.2015-08.sql »: Aucun fichier ou dossier de ce type

    - PART 4 Update the db

    File size is zero -> DB update NOT needed

    ### END ###

    En complément d’information
    Le raspberry est sortie du carton de ce matin.
    Donc domoticz auss, il n’a seulement le comptage d’eau de ta création pour l’instant et pas d’autres informations.
    l’ID dans domoticz est « 6 »

    Une idée du problème ?
    pas de ID6 dans la BDD de domoticz ?

    Cordialement

    Répondre
  2. Manu Auteur de l’article

    Salut!

    Tu as bien fait cela avant :

    sudo apt-get update
    sudo apt-get install ksh
    sudo apt-get install sqlite3

    Et il y a bien cette ligne dans ton script?
    LC_ALL=C

    Le fichier .dat contient des données?

    Répondre
    1. Zora

      Bonjour,

      Merci pour la réponse !
      Après relecture de la discutions avec Jacques68

      Le fichier .dat vide !

      Problème d’identification au le site SDEI !
      Faute d’inattention: la lyonnaise dans mon secteur à le nom de « Eaux de Senart » !

      Solution: Rajout d’un nouveau Provider:


      PROVIDER=SENART

      et des urls en correspondances:


      elif [[ $PROVIDER == 'SENART' ]]
      then
      loginpage="https://www.eauxdesenart.com/mon-compte-en-ligne/connexion/validation"
      datapage="https://www.eauxdesenart.com/mon-compte-en-ligne/statJData/$dateY/$dateM/$SDEI_CODE"

      🙂
      Merci pour votre aide !

      J’aurai certainement des questions après quelques jours d’utilisation.
      Cordialement

      Répondre
  3. Manu Auteur de l’article

    Trop cool et ça fonctionne avec ce bout de code en plus et les url plus haut ?

    Si c’est le cas je mettrai à jour le code source …

    Répondre
  4. Manu Auteur de l’article

    Salut a tous !

    il y avait une erreur dans le script c’est maintenant corrigé. J’en ai profité pour modifier un peu la façon pour ajouter les données perso dans le script: maintenant il n’y a que le fichier setup_perso à modifier, cela évitera de devoir éditer le fichier updateConsoEau.sh à chaque mise à jour.

    La procédure sur cette page à été mise également à jour.

    Bon dimanche !

    Répondre
  5. RICCO

    bonjour,

    Le site https://www.eau-olivet.fr peut-il, en théorie, fonctionner sur le même principe ?
    en paramétrant loginpage=https://www.eau-olivet.fr/mon-compte-en-ligne/connexion/validation je n’arrive pas à récupérer les infos.

    merci d’avance de votre réponse.
    Cordialement.

    Répondre
    1. Manu Auteur de l’article

      Bonjour Ricco,

      Effectivement ca resemble beaucoup au page des autre site donc je suppose que ca doit fonctionner pareil.
      Je viens de modifier le script pour ajouter « www.eau-olivet.fr » , je te conseille de le mettre à jour avec le dernier script :

      Pour cela :

      cd /home/pi/EAU
      cp updateConsoEau.sh updateConsoEau.sh.old
      curl -O https://raw.githubusercontent.com/Sirus10/domoticz/master/updateConsoEau.sh
      curl -O https://raw.githubusercontent.com/Sirus10/domoticz/master/setup_perso
      chmod +x updateConsoEau.sh

      Ensuite tu edites le fichier setup_perso comme ça :

      #SDEI PERSONAL CODE ( see http://domotique.web2diz.net/?p=137) 
      SDEI_CODE=    
      SDEI_EMAIL=  (votre email pour vous connecter sur le site)
      SDEI_PASSWD=  (votre mot de passe pour vous connecter sur le site)
      #Virtual device ID in domoticz (see http://domotique.web2diz.net/?p=138 ) 
      devicerowid= 
      # Set your provider comment/uncomment if needed (default = SDEI)
      #PROVIDER=SOGEST
      #PROVIDER=SENART
      #PROVIDER=SDEI
      PROVIDER=OLIVET

      Et tu testes en root :

      /home/pi/EAU/updateConsoEau.sh

      Si ca marche pas regarde le contenu du fichier .dat généré et si besoin poste le ici 🙂

      Répondre
  6. LEFEVRE Joël

    Bonjour à l’auteur principal et à tous les autres.
    Merci pour cet article et son suivi.
    J’ai installé tout ce qu’il fallait et après avoir bataillé avec les droits des fichiers et répertoire, la récupération des données sur le site de SDEI est opérationnelle, mais: soeur Anne, ne vois tu rien venir ? Non, je ne vois rien dans domoticz, les fichiers de la base données sont remplis de données, le numéro d’idx est correct dans la config_perso mais rien n’apparaît dans domoticz; Chercher l’erreur !
    Aurai-je zapper quelque chose ?
    Si quelqu’un à eu ce problème, je suis à l’écoute de la solution, sachant que je ne suis peux être pas le seul ayant ce petit couac.
    Merci de votre participation.
    Installation: Raspi avec Debian, RFXtrxCOM usb, Domoticz, capteur courant OWL 3 phases, Divers capteurs Oregon (THGN132,THGR810,etc)

    Répondre
      1. Joël

        Salut PiBen et Bonne Année à Tout le monde.
        Pour trouver la solution j’ai sauvegardé la base de données de domoticz sur mon pc, ensuite j’ai lu le fichier avec le programme SQLiteManager (à télécharger sur google), en allant dans la partie « Data » j’ai constaté que certains champs étaient inversés, (date et value ou date et Counter, de mémoire). Je suis allé dans domoticz avec putty et j’ai modifié en conséquence les champs dans le fichier de rapatriement des données du compteur. A présent j’ai les valeurs sur les graphiques des jours précédents, évidement le jour même est toujours à zéro puisque par encore téléchargé, il faudrait modifier le paramètre d’affichage pour afficher le jour j-1, ainsi on aurai au moins une valeur pour le jour précédent. Pour le moment je n’ai rien fait sur ce point.

        Répondre
        1. PiBen

          Merci Joel et bonne année a toi egalement!
          J’ai fouillé dans la base et effectivement je vois aussi quelques soucis dans Meter_Calendar au moins au niveau des index, je vais creuser.
          Merci pour la piste.

          @Manu, tu n’as pas eu ces soucis de ton côté ?

          a+

          Répondre
  7. Ben

    Bonjour Manu,

    Félicitations pour ces post, au top! et très utile pour surveiller sa consommation. Ca m’a permis de me rendre compte que j’avais une fuite lente quelque part avec 1L consommé tous les 2 jours 🙁

    Je me demandais si tu avais trouvé une solution pour le cas ou les weekend tombent en fin de mois.

    A bientot!

    Répondre
    1. Manu Auteur de l’article

      Salut ben,

      oui pour les cas ou le weekend tombent en fin de mois il suffit d’installer le script :

      cd /home/pi/EAU
      curl -O https://raw.githubusercontent.com/Sirus10/domoticz/master/updateConsoEau_M-1.sh
      chmod +x updateConsoEau_M-1.sh

      et de le plannifier comme ceci en cron :
      #Get data for Water M-1
      15 7 1-7 * * « /home/pi/EAU/updateConsoEau_M-1.sh > /tmp/updateConsoEauM-1.log »

      voir ici les détails :
      http://domotique.web2diz.net/?p=188

      Désolé pour la réponse tardive …

      Répondre
  8. jeebe

    hello
    un petit up sur ce topic
    le scrip semble ne plus fonctionner avec la SDEI
    le fichier DAT ne se remplit pas de donne mais de code HTML
    Redirecting to /erreur

    une idée?
    en tout cas merci pour le boulot

    Répondre
  9. david

    Bonjour
    tout fonctionnait tres bien mais probleme depuis le 10 janvier 2017
    – PART 3 Generate SQL
    ./updateConsoEau.sh: line 151: * 100: arithmetic syntax error
    comm: /home/pi/EAU/temps.generated.2017-01.sql: No such file or directory
    update DeviceStatus set lastupdate = ‘– 18:01:55′ where id = 50;
    mv: cannot stat `/home/pi/EAU/temps.generated.2017-01.sql’: No such file or directory

    Répondre
      1. david

        merci pour ton retour rapide
        J utilisais jusqu a present SDEI
        et dans le script je peux juste utiliser « SDEI | SOGEST | SEERC | SOBEP | EEF | SENART | OLIVET | SIEVA | SEE »

        il n’y a pas SUEZ, d’ailleurs j’ai retesté les 9 possibilité ci-dessus sans succés …

        bonne soirée

        Répondre
    1. jelo

      Bonjour David,
      as-tu changé quelque chose dans le répertoire EAU, je te conseille de vérifier les droits du répertoire EAU et des fichiers contenu !

      Répondre
  10. Manu Auteur de l’article

    Bonjour,

    j’ai trouvé la cause du problème.
    je pense pouvoir vous proposer une solution dans la journée avec une mise a jour du script 🙂

    Je vous tiens au courant ici

    Répondre
  11. JOEL LEFEVRE

    Bonjour Manu,après mise à jour, tout rentre dans l’ordre. Merci encore une fois de ta réactivité et ton dévouement.
    Pour info la « Lyonnaise des Eaux » est devenue « SUEZ » depuis quelques mois dans notre secteur « 95340 » sans avoir eu d’effet sur le fonctionnement de Domoticz et sans avoir reconfiguré la récupération des données.

    Répondre
  12. Joël Lefèvre

    Bonjour Manu, j’ai oublié de te demander de quoi il retournait pour que cela ne marche plus, merci si tu peux éclairer notre lanterne, ça nous aidera a être meilleur observateur et analyste pour le futur.

    Répondre
    1. Manu Auteur de l’article

      Le site tout-sur-mon eau à été mis à jour, certainement lié a l’intégration des autres sites dans le groupe SUEZ.

      Il a fallut ajuster la façon dont le script se connecte c’est tout

      La plupart des site du groupe SUEZ utilisent maintenant le site toutsurmoneau donc je pense que pour l’ensemble de ces site la configuration avec PROVIDER=SUEZ devrait marcher.

      En plus j’en ai profité pour ajouter quelques lignes de plus en cas de problème pour le mancer en debug avec une log plus parlante 🙂

      Merci en tout cas pour vos retour 🙂

      Répondre
  13. Supermat

    Salut,

    Moi je suis chez eaudemarseille.fr et je n’arrive pas à faire la même chose.
    J’ai bien essayer de tracer les appels et de modifier le script en fonction, mais je n’arrive à rien.
    Personne n’aurais déjà travaillé dessus?

    Merci

    Répondre
    1. Manu Auteur de l’article

      Bonjour Supermat,

      il me semble que eau de marseille fait parti du groupe Veolia et non de SUEZ. Du coup la « moulinette » qui récupère les donnée du site est totalement différente. En plus ton compter envoi-t-il bien les informations de façon journalière au site eau de marseille ? Il y a sur le site eau de Marseille une vue qui te permet de voir ta consommation au jour le jour ?

      A+

      Répondre
  14. Supermat

    Salut,

    Effectivement, je te confirme que j’ai bien un compteur RF et une interface WEB permettant de voir et d’exporter mes conso journalières.
    Le script n’est effectivement pas du tout le même, je m’en suis juste inspiré pour le cookies, et tout le reste..
    Mais je n’arrive pas à mes fin, je ne suis pas assez calé.

    Répondre
  15. Bartix60

    Bonjour,

    Pour ceux que cela interesse, j’ai adapté ce script pour qu’il fonctionne sur un synology (DSM 6) :
    #!/usr/bin/bash
    #######################################################################################
    # This script will get the data from SDEI/SOGEST website and insert into domoticz.db
    # Site : http://domotique.web2diz.net/
    # Detail : http://domotique.web2diz.net/?p=131
    # List of working provider : http://domotique.web2diz.net/?p=320
    # Source : https://github.com/Sirus10/domoticz/blob/master/updateConsoEau.sh
    # License : CC BY-SA 4.0
    #
    # Usage:
    # ./updateConsoEau.sh [year] [month]
    # Debug:
    # ./updateConsoEau.sh DEBUG
    #
    #######################################################################################
    #
    # PART 0 Common variables and Conf file
    #
    #######################################################################################
    # Temp set global C local
    LC_ALL=C
    DEBUG=TRUE
    ERRORMSG= »try to run with ./updateConsoEau.sh DEBUG »

    # 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

    if [[ « $1 » == ‘DEBUG’ ]] ; then
    DEBUG=true
    fi
    if [[ « $DEBUG » == ‘true’ ]] ; then
    echo -e « \n START DEBUG MODE \n »
    fi

    # SQL Files setup for temporary and final file
    #chemin a adapter selon votre configuration
    workingDIR=/volume1/homes/monuser/monrepertoire/
    sqlfinalfile=$workingDIR/only_new_generated.$dateY-$dateM.sql
    sqlpreviousfile=$workingDIR/previous.generated.$dateY-$dateM.sql
    sqltmpfile=$workingDIR/temps.generated.$dateY-$dateM.sql
    # Database file setup
    dbfile=/usr/local/domoticz/var/domoticz.db

    # Export file :
    export_file=$workingDIR/$dateY-$dateM.dat
    filetmp=$workingDIR/filetmp

    # Configuration file check, it will create new one is not exist
    if [ -s $workingDIR/setup_perso ] ; then
    echo -e « \n Using Configuration from file $workingDIR/setup_perso »
    . $workingDIR/setup_perso
    else
    echo « ####################################### »
    echo  » NEED FOR CONFIG FILE CREATION :  »
    echo « ####################################### »
    echo « Personnal counter number ( see http://domotique.web2diz.net/?p=137)  »
    read CODE
    echo « Email adress :  »
    read EMAIL
    echo « Password :  »
    read PASSWD
    echo « Provider (copy/paste) :  »
    echo « SUEZ | SDEI | SOGEST | SEERC | SOBEP | EEF | SENART | OLIVET | SIEVA | SEE »
    read PROVIDER
    echo « Your virtual device ID in domoticz (see step2 here http://domotique.web2diz.net/?p=138 )  »
    read devicerowid
    echo « SDEI_CODE=$CODE
    SDEI_EMAIL=$EMAIL
    SDEI_PASSWD=$PASSWD
    PROVIDER=$PROVIDER
    devicerowid=$devicerowid » > $workingDIR/setup_perso
    echo « ####################################### »
    echo  » CONFIG FILE setup_perso CREATED WITH :  »
    echo « ####################################### »
    cat $workingDIR/setup_perso
    echo « ####################################### »
    . $workingDIR/setup_perso
    fi

    #######################################
    #
    # PART 1 get the data
    #
    ######################################
    echo -e « \n – PART 1 Get the data from website for $dateY-$dateM »

    if [[ $PROVIDER == ‘SDEI’ ]] ; then website= »www.toutsurmoneau.fr »
    elif [[ $PROVIDER == ‘SOGEST’ ]] ; then website= »www.toutsurmoneau.fr »
    elif [[ $PROVIDER == ‘SEERC’ ]] ; then website= »www.toutsurmoneau.fr »
    elif [[ $PROVIDER == ‘SOBEP’ ]] ; then website= »www.toutsurmoneau.fr »
    elif [[ $PROVIDER == ‘EEF’ ]] ; then website= »www.toutsurmoneau.fr »
    elif [[ $PROVIDER == ‘SUEZ’ ]] ; then website= »www.toutsurmoneau.fr »
    elif [[ $PROVIDER == ‘SENART’ ]] ; then website= »www.eauxdesenart.com »
    elif [[ $PROVIDER == ‘OLIVET’ ]] ; then website= »www.eau-olivet.fr »
    elif [[ $PROVIDER == ‘SIEVA’ ]] ; then website= »www.eau-en-ligne.com »
    elif [[ $PROVIDER == ‘SEE’ ]] ; then website= »www.eauxdelessonne.com »
    fi

    # Special pages for eau-en-ligne.com
    if [[ ! -n $loginpage ]] ; then
    loginpage= »https://$website/mon-compte-en-ligne/je-me-connecte »
    datapage= »https://$website/mon-compte-en-ligne/statJData/$dateY/$dateM/$SDEI_CODE »
    fi

    if [[ « $DEBUG » == ‘true’ ]] ; then
    echo « ########## debug URL START ############### »
    echo login page : $loginpage
    echo datapage page : $datapage
    echo « ########## debug URL END ############### »
    fi

    ############# 1 GET THE TOKEN #################
    agent= »Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30″
    csrftoken=`curl -c $workingDIR/cookiefile -b $workingDIR/cookiefile $loginpage -A « $agent » -s |grep _csrf_toke | head -1 | cut -d' »‘ -f6`
    if [[ « $DEBUG » == ‘true’ ]] ; then
    echo « ########## debug csrftoken START ############### »
    echo csrftoken :
    echo $csrftoken
    echo « ########## debug csrftoken END ############### »
    fi
    if [[ -n $csrftoken ]] ; then
    echo  » – TOKEN OK »
    else
    echo  » – TOKEN NOT OK !! $ERRORMSG »
    fi

    ############# 2 LOGIN #################
    curl -L $loginpage -A « $agent » -s \
    -c $workingDIR/cookiefile \
    -b $workingDIR/cookiefile \
    -d « _username=$SDEI_EMAIL&_password=$SDEI_PASSWD&_csrf_token=$csrftoken&signin[username]=$SDEI_EMAIL&signin[password] » |grep -e « se déconnecter » -e « Connexion en cours » > /dev/null
    CR=$?
    if [[ « $CR » == « 0 » ]] ; then
    echo  » – LOGIN OK »
    # else
    # echo  » – LOGIN NOT OK !! $ERRORMSG »
    fi

    ############# 3 GET DATA #################
    curl -s $datapage -b $workingDIR/cookiefile > $export_file
    CR=$?
    if [[ « $DEBUG » == ‘true’ ]] ; then
    echo « ########## debug export_file START ############### »
    cat $export_file
    echo « ########## debug export_file END ############### »
    fi
    if [[ -s $export_file ]] ; then
    echo  » – DATA collection OK »
    echo -e « \n $export_file generated  »
    else
    echo  » Error not able to get data !! $ERRORMSG »
    fi

    #Remove cooki file
    rm $workingDIR/cookiefile

    #######################################
    #
    # PART 2 set the file to be usable
    #
    ######################################
    echo -e « \n – PART 2 Update .dat file  »
    sed -e ‘s/\\//g’ -e ‘s/\],\[/\n/g’ -e ‘s/\[\[/\n/g’ -e ‘s/\]\]/\n/g’ $export_file > $filetmp
    sed -e ‘s/\ »//g’ $filetmp |grep -v « ,0,0 » |grep -e ‘^$’ -v |grep -v ERR > $export_file

    if [[ « $DEBUG » == ‘true’ ]] ; then
    echo « ########## debug .dat file START ############### »
    cat $export_file
    echo « ########## debug .dat file END ############### »
    fi
    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=`echo « dummy » | awk « BEGIN {print $val*100.0} »`

    if [[ « $val » == « 0 » ]] && [[ ! -z « $prevVal2 » ]] ; then
    # float val1=$((100 * ($val2-$prevVal2)))
    val3=$($val2-$prevVal2)
    echo $val3
    val1=`echo « dummy » | awk « BEGIN {print $val3*100.0} »`
    echo $val1
    fi
    prevVal2=$val2
    ### Generation ###
    echo « DELETE FROM \`Meter_Calendar\` WHERE devicerowid=$devicerowid and date = ‘$yy-$mm-$dd’; INSERT INTO \`Meter_Calendar\` (DeviceRowID,Value,Counter,Date) VALUES (‘$devicerowid’, » \’$val1\’, \’$val2\’, \’$yy-$mm-$dd\’ « );  » >> $sqltmpfile

    done $sqlfinalfile
    if [[ « $DEBUG » == ‘true’ ]] ; then
    echo « ########## debug sqlfinalfile file START ############### »
    cat $sqlfinalfile
    echo $DEVICESTATUS1
    echo « ########## debug sqlfinalfile file END ############### »
    fi

    cat $sqltmpfile

    cat $sqlpreviousfile

    cat $sqlfinalfile
    mv $sqltmpfile $sqlpreviousfile

    #echo -e « \nSQL with « `wc -l $sqlfinalfile |awk ‘ {print $1}` » line(s) generated : $sqlfinalfile »

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

    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 synopkg stop domoticz
    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 \n  »
    echo  » Starting Domoticz ! »
    sudo synopkg start domoticz
    echo  » Domoticz started  »
    else
    echo -e « \nFile size is zero -> DB update NOT needed »
    fi

    echo -e « \n ### END ###\n »

    Répondre
  16. Bartix60

    Et voici le script pour le aller chercher les archives, appellant le srcipt précédent :
    #!/usr/bin/bash
    #######################################################################################
    # This script will get the data for previous month
    # from SDEI/SOGEST (and others) website and insert into domoticz.db
    # It requiere updateConsoEau.sh to be setup.
    # Site : http://domotique.web2diz.net/
    # Detail : http://domotique.web2diz.net/?p=131
    # List of working provider : http://domotique.web2diz.net/?p=320
    # Source : https://github.com/Sirus10/domoticz/blob/master/updateConsoEau_M-1.sh
    # License : CC BY-SA 4.0
    #
    # Usage:
    # ./updateConsoEau_M-1.sh
    #
    #######################################################################################
    #
    # PART 0 Common variables
    #
    #######################################################################################
    #remplacer 60 par le nombre de mois souhaités
    for i in $(seq 1 60); do
    dateY=$(date +%Y -d « $i month ago »)
    dateM=$(date +%m -d « $i month ago »)
    echo « $dateY » « $dateM »
    #adapter monuser et monrepertoire en fonction de la configuration souhaitée
    sh /volume1/homes/monuser/monrepertoire/updateConsoEau.sh $dateY $dateM
    done

    Répondre
  17. Bartix60

    Et celui pour le mois M-1 :

    #!/usr/bin/bash
    #######################################################################################
    # This script will get the data for previous month
    # from SDEI/SOGEST (and others) website and insert into domoticz.db
    # It requiere updateConsoEau.sh to be setup.
    # Site : http://domotique.web2diz.net/
    # Detail : http://domotique.web2diz.net/?p=131
    # List of working provider : http://domotique.web2diz.net/?p=320
    # Source : https://github.com/Sirus10/domoticz/blob/master/updateConsoEau_M-1.sh
    # License : CC BY-SA 4.0
    #
    # Usage:
    # ./updateConsoEau_M-1.sh
    #
    #######################################################################################
    #
    # PART 0 Common variables
    #
    #######################################################################################

    dateY=$(date +%Y -d « 1 month ago « )
    dateM=$(date +%m -d « 1 month ago « )
    echo « $dateY » « $dateM »

    #######################################################################################
    #
    # PART 1 Run the main script with the M-1 variables
    #
    #######################################################################################
    #adpater le chermin a votre config
    sh /volume1/homes/monuser/monrepertoire/updateConsoEau.sh $dateY $dateM

    Répondre
  18. Bartix60

    A lancer en mode root (sudo) sous ssh.
    On peut aussi les planifier dans le plannificateur du synology en les appelant en mode root.
    Il faudra peut être donner les droits d’écriture sur le fichier domoticz.db (base de données de domoticz).
    J’espère que cela pourra en aider quelques uns.

    Bonne soirée.

    Répondre

Laisser un commentaire

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