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
Entourez votre code source avec les balises Quote grâce au bouton correspondant
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 :
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.
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.
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":[]}}
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.
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
-- 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
erreurl28.PNG (4.45 Kio) Vu 5602 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
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
-- 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,
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
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.