J'ai repris le code du message précédent ,en ne changeant que les idx, et station, je test et attends la prochaine actualisation.
Merci des retours.
L'arborescence pour le JSON.lua est le bon, en revanche faut il des permissions particulières, les miennes -rw-r--r--
[LUA] Vigicrue
-
ebretteville
- Messages : 79
- Inscription : 08 févr. 2016, 23:06
- Localisation : Cherbourg - Caen | France
- Contact :
-
chatainsim
- Messages : 42
- Inscription : 25 mars 2015, 17:04
Re: [LUA] Vigicrue
Pas de problème avec les droits, j'ai les même chez moi.
-
ebretteville
- Messages : 79
- Inscription : 08 févr. 2016, 23:06
- Localisation : Cherbourg - Caen | France
- Contact :
Re: [LUA] Vigicrue
Mon code actuel:
Code : Tout sélectionner
-- Parameters to change according to you needs
debug=true
-- Station ID, from one to many
Station = {'K490003010'}
-- IDX of sensor for height value | STATION_ID='IDX_SENSOR'
SIDXHeight = {K490003010='439'}
-- IDX of sensor for speed value | STATION_ID='IDX_SENSOR'
SIDXSpeed = {K490003010='440'}
-- JSON.lua path
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()
-- Curl path
curl = '/usr/bin/curl'
-- 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(curl..' -s "'..urlh..'"'))
local BlocJsonHeight = DataHeight:read('*all')
DataHeight:close()
local JsonHeight = json:decode(BlocJsonHeight)
local Height = JsonHeight.Serie.ObssHydro
local DataSpeed = assert(io.popen(curl..' -s "'..urls..'"'))
local BlocJsonSpeed = DataSpeed:read('*all')
DataSpeed:close()
local JsonSpeed = json:decode(BlocJsonSpeed)
local Speed = JsonSpeed.Serie.ObssHydro
return Height, Speed
end
local function test_error(url)
local DataTest = assert(io.popen(curl..' -s --max-time 8 "'..url..'"'))
local BlocJsonTest = DataTest:read('*all')
DataTest:close()
JsonTest = json:decode(BlocJsonTest)
Test = JsonTest[1].error_msg
end
commandArray = {}
if (time.min == 0 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'
local status, retval = pcall(test_error,urlHeight);
if (status) then
print("Error, station inconnu")
commandArray['SendNotification']='subject#Erreur, station '..IDStation..' inconnu ou problème temporaire du site Vigicrue, merci de vérifier : '..urlHeight..'#0#sound#extradata#telegram'
else
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
end
return commandArray
-
ebretteville
- Messages : 79
- Inscription : 08 févr. 2016, 23:06
- Localisation : Cherbourg - Caen | France
- Contact :
Re: [LUA] Vigicrue
Ca refonctionne, sans doutes les () manquant et la suppression des '' de la station, je pensais qu'il y avait une consistence entre la liste des stations du début des variables et les idx plus bas, merci du support
Re: [LUA] Vigicrue
Bonsoir,
Je viens de m' apercevoir que les deux stations que je suis ne répondent plus depuis les 27 Juin et 24 Aout, Le script fonctionne t'il chez vous ? (J'ai vérifié les Numéro d'identification, il avait changé sur une des station mais toujours sans résultat)
Merci
Bertrand
Je viens de m' apercevoir que les deux stations que je suis ne répondent plus depuis les 27 Juin et 24 Aout, Le script fonctionne t'il chez vous ? (J'ai vérifié les Numéro d'identification, il avait changé sur une des station mais toujours sans résultat)
Merci
Bertrand
2024.6 PC Windows10 ; 2ème DEBIAN 10;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, SOMFY RTS,Sonoff ..