Files
Domoticz/lua/meteo.lua
2025-03-06 11:09:58 +01:00

45 lines
1.7 KiB
Lua

-- Chargement de la bibliothèque Lua pour effectuer des requêtes HTTP
local http = require("socket.http")
local json = require("json")
-- Fonction pour effectuer une requête HTTP et renvoyer le contenu JSON en tant que tableau
function getJsonFromUrl(url)
local response = http.request(url) -- Effectue la requête HTTP
return json.decode(response) -- Décode la réponse JSON en tant que tableau
end
-- Fonction récursive pour rechercher une valeur dans un tableau multidimensionnel
function searchValueInTable(value, tbl)
for k, v in pairs(tbl) do
if v == value then
return k -- Retourne la clé si la valeur est trouvée
elseif type(v) == "table" then
local result = searchValueInTable(value, v) -- Appel récursif si la valeur est un tableau
if result then
return k .. "." .. result -- Retourne la clé trouvée concaténée avec la clé actuelle
end
end
end
return nil -- Retourne nil si la valeur n'est pas trouvée
end
-- Exemple d'utilisation
local url = "http://api.openweathermap.org/data/2.5/weather?q=La gacilly,fr&APPID=feba3f4d926db3b358a25ec782bd1c8b&lang=FR&units=metric" -- URL à appeler
local jsonData = getJsonFromUrl(url) -- Appel de la fonction pour obtenir le tableau JSON
-- Affichage du contenu du tableau JSON
for k, v in pairs(jsonData) do
print(k, v)
end
-- Recherche d'une valeur spécifique dans le tableau JSON
local searchValue = "valeurRecherchee"
local searchResult = searchValueInTable(searchValue, jsonData)
if searchResult then
print("La valeur", searchValue, "a été trouvée à la clé", searchResult)
else
print("La valeur", searchValue, "n'a pas été trouvée dans le tableau")
end