[LUA] Vigicrue

Vous avez créé 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.
ebretteville
Messages : 79
Inscription : 08 févr. 2016, 23:06
Localisation : Cherbourg - Caen | France
Contact :

Re: [LUA] Vigicrue

Message par ebretteville »

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--
chatainsim
Messages : 42
Inscription : 25 mars 2015, 17:04

Re: [LUA] Vigicrue

Message par chatainsim »

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

Message par ebretteville »

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

Message par ebretteville »

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
balajol
Messages : 864
Inscription : 13 nov. 2015, 18:54
Localisation : 62

Re: [LUA] Vigicrue

Message par balajol »

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
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 ..
Répondre