lua: Vigicrue

Vous avez crée 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.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Placez votre code entre [Quote] et {/Quote]
chatainsim
Messages : 36
Enregistré le : 25 mars 2015, 17:04

lua: Vigicrue

Message par chatainsim » 12 déc. 2017, 00:09

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.
Modifié en dernier par chatainsim le 13 janv. 2018, 21:38, modifié 3 fois.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


lamouette
Messages : 150
Enregistré le : 07 déc. 2016, 16:10

Re: lua: Vigicrue

Message par lamouette » 14 déc. 2017, 11:44

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.

chatainsim
Messages : 36
Enregistré le : 25 mars 2015, 17:04

Re: lua: Vigicrue

Message par chatainsim » 14 déc. 2017, 11:55

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.

lamouette
Messages : 150
Enregistré le : 07 déc. 2016, 16:10

Re: lua: Vigicrue

Message par lamouette » 14 déc. 2017, 11:58

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

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


chatainsim
Messages : 36
Enregistré le : 25 mars 2015, 17:04

Re: lua: Vigicrue

Message par chatainsim » 14 déc. 2017, 14:34

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.

lamouette
Messages : 150
Enregistré le : 07 déc. 2016, 16:10

Re: lua: Vigicrue

Message par lamouette » 14 déc. 2017, 14:55

De mon côté c'est ok ;)

Merci

balajol
Messages : 501
Enregistré le : 13 nov. 2015, 18:54
Localisation : 62

Re: lua: Vigicrue

Message par balajol » 17 déc. 2017, 20:11

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
erreurl28.PNG (4.45 Kio) Vu 1873 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
v3.8153 sur PC Windows7 (Elite book); DANFOSS LC13, Topp; Senseurs univ FIBARO FGBS001, Flood Sensor, ZMNHBD1 Flush 2 Relays ; FIBARO FGS222-FGS212;RFXCOM-RFXtrx433 USB 433.92MHz , Prises Phénix, Prises et Eclairage DI-O, Divers SOMFY RTS etc..

chatainsim
Messages : 36
Enregistré le : 25 mars 2015, 17:04

Re: lua: Vigicrue

Message par chatainsim » 17 déc. 2017, 20:54

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

balajol
Messages : 501
Enregistré le : 13 nov. 2015, 18:54
Localisation : 62

Re: lua: Vigicrue

Message par balajol » 17 déc. 2017, 21:14

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
v3.8153 sur PC Windows7 (Elite book); DANFOSS LC13, Topp; Senseurs univ FIBARO FGBS001, Flood Sensor, ZMNHBD1 Flush 2 Relays ; FIBARO FGS222-FGS212;RFXCOM-RFXtrx433 USB 433.92MHz , Prises Phénix, Prises et Eclairage DI-O, Divers SOMFY RTS etc..

chatainsim
Messages : 36
Enregistré le : 25 mars 2015, 17:04

Re: lua: Vigicrue

Message par chatainsim » 17 déc. 2017, 21:54

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.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre