Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'eau'.



Plus d’options de recherche

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Bienvenue
    • Annonces et suggestions
    • Nouveau ? Présentez-vous
    • Le bistrot
    • Mon installation domotique
    • Autres Solutions Domotiques
  • La HC2 et ses périphériques
    • La Home Center pour les nuls
    • Home Center 2 & Lite
    • Modules Fibaro
    • Modules Z-wave
    • Périphériques et matériels autres
    • Plugins
    • Alarme & Vidéo-surveillance
    • Multimédia
    • Chauffage et Energie
    • Actionneurs & Ouvrants (Portail, volets...)
    • Eclairage
    • Applications Smartphones et Tablettes
    • English Section
  • Les objets connectés
    • Les Assistants Vocaux
  • Fibaro's Awards
    • Membre du mois
    • Jeux concours & Cadeaux
  • Les bonnes affaires
    • Sites internet
    • Petites annonces

Calendriers

Aucun résultat à afficher.


Rechercher les résultats dans…

Rechercher les résultats qui…


Date de création

  • Début

    Fin


Dernière mise à jour

  • Début

    Fin


Filtrer par nombre de…

Inscription

  • Début

    Fin


Groupe


Jabber


Skype


Ville :


Intéret :


Version

2 résultats trouvés

  1. 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
  2. Bonjour à tous, Petit post pour aider ceux qui sont dans le même cas que moi ! J'ai un chauffe eau tout neuf Thermor 270L thermodynamique. Bref c'est cool, mais il est pas compatible HC2, mais ... il peut se connecter en IO Home Control (techno proprio de Somfy entre autre) Bref, j'ai pas acheté une Tahoma car trop cher, mais un bridge CozyTouch , sur EBay , pour 56€ 'fdp inclus !) grace a ce bridge, je peux installer une app sur mon Teléphone (Thermor cozytouch), et piloter mon chauffe eau. Outre le fait que l'appli a été codé avec les pieds, et dès fois qu'elle répond pas ou affiche des données incohérentes, cela est quand même pratique. mais surtout, je peut utiliser les API 'privé' du bridget CozyTouch pour appeler moi-même les API Rest. Ahh , la ca devient plus interessant ! 2 URL a connaitre - https://ha110-1.overkiz.com/enduser-mobile-web/externalAPI/json/login A appeler en POST, avec 2 parametre dans le body en urlEncoded : userId=TONUSER&userPassword=TONPASSWORD Il faut récupérer le Set-Cookie de la réponse (qui contient le JSESSIONID) - https://ha110-1.overkiz.com/enduser-mobile-web/externalAPI/json/getSetup A Appeler en GET (ou POST), avec dans le Header : Cookie : les cookies récupéré dans l'appel du login (avec le jessionid) Dans le retour , on a TOUT !!!! Et bien, avec tout cela, j'ai fait un petit VD dans la HC2, qui m'affiche le nombre de douche restante ( Nbr de L eau chaude restant divisé par 30L) , le mode, si le boost est actif, si le mode abs est actif , le mode (auto, manu, eco) Vu qu'un VD ne peut pas faire d'appel en POST, j'ai du passer par une scene (id 34 , il faut changer l'id de la scene apperl dans le VD offcourse) qui fait le taf (en asyncrhone de 1s) et stock le résultat dans des vars global que lit le VD PS : Le VD affiche en icone un chiffre , qui est une image , le 7 étant l'image 1010 chez moi, et le 0 la 1017 PS : il faut créer les var gloable: - mode_chauffe_eau - douche_restante - chauffe_eau_boostD - chauffe_eau_boost - chauffe_eau_abs_D prochaine étape : pouvoir activer le mode boost... La scene --[[ %% properties %% events %% globals --]] local user = "xxxxxxxxxxxx" local pass = "xxxxxxxxxxxxxx" local url = "https://ha110-1.overkiz.com/enduser-mobile-web/externalAPI/json/"; local url_login = "login" local url_data = "getSetup" local body = "userId=" .. urlencode(user) .. "&userPassword=" .. urlencode(pass) --print(urlencode(body)) local JSESSION_ID="" local data = nil fibaro:debug(body) function urlencode(s) if (s) then s = string.gsub (s, "\n", "\r\n") s = string.gsub (s, "([^%w ])", function (c) return string.format ("%%%02X", string.byte(c)) end) s = string.gsub (s, " ", "+") end return s end function connect() print("> Connect ...") local httpClient = net.HTTPClient() httpClient:request(url .. url_login , { success = function(response) if (tonumber(response.status) == 200 or tonumber(response.status) == 201 or tonumber(response.status) == 202) then print(" > Connexion OK") JSESSION_ID=response.headers['Set-Cookie'] print(" > JSSESSION ID : " .. response.headers['Set-Cookie']) get_data() else print(" > Connexion KO !") fibaro:debug('Error' .. response.status) print("Error " .. response.data) end end, error = function(err) print(' > error = ' .. err) end, options = { method = 'POST', headers = { ["content-type"] = 'application/x-www-form-urlencoded', }, data = body } }); end function get_data() print("> Get data...") local httpClient = net.HTTPClient() httpClient:request(url .. url_data , { success = function(response) if (tonumber(response.status) == 200 or tonumber(response.status) == 201 or tonumber(response.status) == 202) then print(" > Get data OK") data= json.decode(response.data) --print("Data " .. response.data) read_data() else print(" > Get data KO") fibaro:debug('Error' .. response.status) print(" > Error " .. response.data) end end, error = function(err) print('error = ' .. err) end, options = { method = 'POST', headers = { ["content-type"] = 'application/x-www-form-urlencoded', ["Cookie"] = JSESSION_ID, }, data = nil } }); end function read_data() local devices=data['setup']['devices'] for i,v in ipairs(devices) do local one_device=devices[i] if(one_device['controllableName'] == 'io:AtlanticDomesticHotWaterProductionIOComponent') then read_data_chauffe_eau(one_device) end end end function read_data_chauffe_eau(device) --core:WaterConsumptionState local state_eau_restante = get_state_by_name(device['states'],'core:WaterConsumptionState') print('L d\'eau restante : ' .. state_eau_restante['value']) local douche_r=math.floor(tonumber(state_eau_restante['value']) / 30) print('douche restante : ' .. douche_r) fibaro:setGlobal('douche_restante',douche_r) local state_mode = get_state_by_name(device['states'],'io:DHWModeState') local mode = 'null' if(state_mode['value'] == 'autoMode') then mode='Auto' end if(state_mode['value'] == 'manualEcoInactive') then mode='Manuel' end if(state_mode['value'] == 'manualEcoActive') then mode='Manuel [Eco]' end fibaro:setGlobal('mode_chauffe_eau',mode) print('mode : ' .. mode) local chauffe_eau_boost = get_state_by_name(device['states'],'core:BoostModeDurationState') local mode_boost = 'OFF' if(chauffe_eau_boost['value'] ~= 0) then mode_boost = 'ON' end fibaro:setGlobal('chauffe_eau_boost',mode_boost) print('BOOST : ' .. mode_boost ) print('BOOST durée : ' .. chauffe_eau_boost['value']) fibaro:setGlobal('chauffe_eau_boostD',chauffe_eau_boost['value']) --chauffe_eau_abs_D local chauffe_eau_abs = get_state_by_name(device['states'],'io:AwayModeDurationState') print('Absence durée : ' .. chauffe_eau_abs['value']) fibaro:setGlobal('chauffe_eau_abs_D',chauffe_eau_abs['value']) end function get_state_by_name(l_states,name) for i,v in ipairs(l_states) do local one_s=l_states[i] if(one_s['name'] == name) then return one_s end end end connect(); Chauffe-Eau.vfib
×