Page 1 sur 6

lua: Vigicrue

Posté : 12 déc. 2017, 00:09
par chatainsim
Bonjour,
Je ne sais pas si ça peut intéresser des gens mais j'ai fait un petit script lua pour récupérer les données depuis le site de Vigicrue.
Il permet d'avoir les infos dans les customs sensors :
Image
Il faut récupérer l'id de la station sur le site de https://www.vigicrues.gouv.fr.
Après avoir choisi votre station, dans l'url il y a l'id.

Exemple, pour Grenoble Bastille :
https://www.vigicrues.gouv.fr/niv3-stat ... W141001001[/u][/b]&CdEntVigiCru=19&GrdSerie=H&ZoomInitial=1&CdStationsSecondaires=
L'id est W141001001

Le script est dispo sur github ici : https://github.com/chatainsim/scripts_d ... icrue2.lua
J'ai aussi quelques autres scripts dispo : https://github.com/chatainsim/scripts_domoticz

Le script est de type lua -> time.

Re: lua: Vigicrue

Posté : 14 déc. 2017, 11:44
par lamouette
Merci, je viens de l'implémenter sans soucis.

Attention tout de même à ceux qui n'ont pas leur fichier JSON.lua dans /opt/domoticz/scripts/lua/ il faudra modifier le chemin en conséquence.

Certaines stations ne remontent pas non plus le débit, ce qui laisse des erreurs dans les logs.

Re: lua: Vigicrue

Posté : 14 déc. 2017, 11:55
par chatainsim
lamouette a écrit :Merci, je viens de l'implémenter sans soucis.

Attention tout de même à ceux qui n'ont pas leur fichier JSON.lua dans /opt/domoticz/scripts/lua/ il faudra modifier le chemin en conséquence.

Certaines stations ne remontent pas non plus le débit, ce qui laisse des erreurs dans les logs.
Ah c'est intéressant comme retour.
As tu une station en tête qui ne remonte pas le débit ?
ça me permettra de faire des tests et d'améliorer le script.

Re: lua: Vigicrue

Posté : 14 déc. 2017, 11:58
par lamouette
chatainsim a écrit :As tu une station en tête qui ne remonte pas le débit ?
ça me permettra de faire des tests et d'améliorer le script.

Celle-ci par exemple : H300000201

https://www.vigicrues.gouv.fr/services/ ... tie=simple

Pas très bavarde : {"VersionFlux":"Beta 0.3","Serie":{"CdStationHydro":"H300000201","LbStationHydro":"Poissy","Link":"http:\/\/www.vigicrues.gouv.fr\/services\/station.json?CdStationHydro=H300000201","GrdSerie":"Q","ObssHydro":[]}}

Celle-ci aussi : F712000102

Re: lua: Vigicrue

Posté : 14 déc. 2017, 14:34
par chatainsim
lamouette a écrit :
chatainsim a écrit :As tu une station en tête qui ne remonte pas le débit ?
ça me permettra de faire des tests et d'améliorer le script.

Celle-ci par exemple : H300000201

https://www.vigicrues.gouv.fr/services/ ... tie=simple

Pas très bavarde : {"VersionFlux":"Beta 0.3","Serie":{"CdStationHydro":"H300000201","LbStationHydro":"Poissy","Link":"http:\/\/www.vigicrues.gouv.fr\/services\/station.json?CdStationHydro=H300000201","GrdSerie":"Q","ObssHydro":[]}}

Celle-ci aussi : F712000102
Merci,
Je viens de mettre à jour le script pour prendre en compte le cas ou Vigicrue ne retourne pas de data.
Si tu veux tester et me faire un retour.

Re: lua: Vigicrue

Posté : 14 déc. 2017, 14:55
par lamouette
De mon côté c'est ok ;)

Merci

Re: lua: Vigicrue

Posté : 17 déc. 2017, 20:11
par balajol
Bonsoir chatainsim,
Merci pour ce partage.
Si quelqu'un a une version adaptée "Windows" je suis preneur.
Après 2 H je jette l'éponge pour le moment , trop de choses à faire ;)
Merci par avance.
Cdt
Bertrand

Code : Tout sélectionner

-- Parameters to change according to you needs 
debug=true 
 -- Station ID, from one to many 
Station = {'E4035710'} 
 -- IDX of sensor for height value | STATION_ID='IDX_SENSOR' 
 SIDXHeight = {E4035710='1081'} 
 -- IDX of sensor for speed value | STATION_ID='IDX_SENSOR' 
 SIDXSpeed = {E4035710='1082'} 
-- JSON.lua path
json = (loadfile "C:/Program Files (x86)/Domoticz/scripts/lua/JSON.lua")()
 
 -- End of parameters 
 
 
 time = os.date("*t") 
 -- Function to update sensor 
 local function update(idx, value1) 
     local cmd = idx..'|0|'..value1 
     --print(cmd) 
     table.insert (commandArray, { ['UpdateDevice'] = cmd } ) 
 end 
 -- function to get data from url 
 local function getdata(urlh,urls) 
     local DataHeight = assert(io.popen('C:/curl-7.50.3-win32-mingw/bin/curl.exe "'..urlh..'"')) 
     local BlocJsonHeight = DataHeight:read('*all') 
     DataHeight:close() 
     local JsonHeight = json:decode(BlocJsonHeight) 
     local Height = JsonHeight.Serie.ObssHydro 
      
     local DataSpeed = assert(io.popen('C:/curl-7.50.3-win32-mingw/bin/curl.exe "'..urls..'"')) 
     local BlocJsonSpeed = DataSpeed:read('*all') 
     DataSpeed:close() 
     local JsonSpeed = json:decode(BlocJsonSpeed) 
     local Speed = JsonSpeed.Serie.ObssHydro 
      
     return Height, Speed 
 end 
 commandArray = {} 
    if (time.min == 15 or time.min == 30) then 
     for k,v in pairs(Station) do 
         local IDStation = v 
         local IDXHeight = SIDXHeight[v] 
         local IDXSpeed = SIDXSpeed[v] 
        local urlHeight = 'https://www.vigicrues.gouv.fr/services/observations.json/index.php?CdStationHydro='..IDStation..'&GrdSerie=H&FormatSortie=simple' 
         local urlSpeed = 'https://www.vigicrues.gouv.fr/services/observations.json/index.php?CdStationHydro='..IDStation..'&GrdSerie=Q&FormatSortie=simple' 
         ResultHeight,ResultSpeed=getdata(urlHeight,urlSpeed) 
   
         if (#ResultHeight ~= 0) then 
                 if (debug) then print("ResultHeight: "..ResultHeight[#ResultHeight][2]) end 
                 update(IDXHeight, ResultHeight[#ResultHeight][2]) 
         else 
                 if (debug) then print('Height level is empty.') end 
         end 
         if (#ResultSpeed ~= 0) then 
                 if (debug) then print("ResultSpeed: "..ResultSpeed[#ResultSpeed][2]) end 
                 update(IDXSpeed, ResultSpeed[#ResultSpeed][2]) 
         else 
                 if (debug) then print('Speed is empty.') end 
         end 
 
 
     end 
 end 
 
 
 return commandArray 

Erreur
Erreur
erreurl28.PNG (4.45 Kio) Vu 5639 fois
Erreur de syntaxe surement Grossière de ma part :(
J'ai modiifé les accès : statio, Json et curl..
Merci pour tout aide éventuelle
cdt
Bertrand

Re: lua: Vigicrue

Posté : 17 déc. 2017, 20:54
par chatainsim
balajol a écrit :Bonsoir chatainsim,
Merci pour ce partage.
Si quelqu'un a une version adaptée "Windows" je suis preneur.
Après 2 H je jette l'éponge pour le moment , trop de choses à faire ;)
Merci par avance.
Cdt
Bertrand

Code : Tout sélectionner

-- Parameters to change according to you needs 
debug=true 
 -- Station ID, from one to many 
Station = {'E4035710'} 
 -- IDX of sensor for height value | STATION_ID='IDX_SENSOR' 
 SIDXHeight = {E4035710='1081'} 
 -- IDX of sensor for speed value | STATION_ID='IDX_SENSOR' 
 SIDXSpeed = {E4035710='1082'} 
-- JSON.lua path
json = (loadfile "C:/Program Files (x86)/Domoticz/scripts/lua/JSON.lua")()
 
 -- End of parameters 
 
 
 time = os.date("*t") 
 -- Function to update sensor 
 local function update(idx, value1) 
     local cmd = idx..'|0|'..value1 
     --print(cmd) 
     table.insert (commandArray, { ['UpdateDevice'] = cmd } ) 
 end 
 -- function to get data from url 
 local function getdata(urlh,urls) 
     local DataHeight = assert(io.popen('C:/curl-7.50.3-win32-mingw/bin/curl.exe "'..urlh..'"')) 
     local BlocJsonHeight = DataHeight:read('*all') 
     DataHeight:close() 
     local JsonHeight = json:decode(BlocJsonHeight) 
     local Height = JsonHeight.Serie.ObssHydro 
      
     local DataSpeed = assert(io.popen('C:/curl-7.50.3-win32-mingw/bin/curl.exe "'..urls..'"')) 
     local BlocJsonSpeed = DataSpeed:read('*all') 
     DataSpeed:close() 
     local JsonSpeed = json:decode(BlocJsonSpeed) 
     local Speed = JsonSpeed.Serie.ObssHydro 
      
     return Height, Speed 
 end 
 commandArray = {} 
    if (time.min == 15 or time.min == 30) then 
     for k,v in pairs(Station) do 
         local IDStation = v 
         local IDXHeight = SIDXHeight[v] 
         local IDXSpeed = SIDXSpeed[v] 
        local urlHeight = 'https://www.vigicrues.gouv.fr/services/observations.json/index.php?CdStationHydro='..IDStation..'&GrdSerie=H&FormatSortie=simple' 
         local urlSpeed = 'https://www.vigicrues.gouv.fr/services/observations.json/index.php?CdStationHydro='..IDStation..'&GrdSerie=Q&FormatSortie=simple' 
         ResultHeight,ResultSpeed=getdata(urlHeight,urlSpeed) 
   
         if (#ResultHeight ~= 0) then 
                 if (debug) then print("ResultHeight: "..ResultHeight[#ResultHeight][2]) end 
                 update(IDXHeight, ResultHeight[#ResultHeight][2]) 
         else 
                 if (debug) then print('Height level is empty.') end 
         end 
         if (#ResultSpeed ~= 0) then 
                 if (debug) then print("ResultSpeed: "..ResultSpeed[#ResultSpeed][2]) end 
                 update(IDXSpeed, ResultSpeed[#ResultSpeed][2]) 
         else 
                 if (debug) then print('Speed is empty.') end 
         end 
 
 
     end 
 end 
 
 
 return commandArray 

erreurl28.PNG
Erreur de syntaxe surement Grossière de ma part :(
J'ai modiifé les accès : statio, Json et curl..
Merci pour tout aide éventuelle
cdt
Bertrand
Es tu sur que ton id station est bonne ?
Je regarde ça plus tard dans la soirée mais vérifie déjà ça. Essaye celle là : E403571001

Re: lua: Vigicrue

Posté : 17 déc. 2017, 21:14
par balajol
Re,
Merci de ta réponse en effet cela semble fonctionner avec ton Id de station, je fait d'autres essais avec des stations proches et je reviens rendre compte
Merci encore
Cdt
Bertrand

Re: lua: Vigicrue

Posté : 17 déc. 2017, 21:54
par chatainsim
balajol a écrit :Re,
Merci de ta réponse en effet cela semble fonctionner avec ton Id de station, je fait d'autres essais avec des stations proches et je reviens rendre compte
Merci encore
Cdt
Bertrand
Je viens de modifier mon post pour préciser ou trouver l'id.