require "scripts/lua/functions" -- URL du fichier JSON local url = "http://api.openweathermap.org/data/2.5/weather?q=La%20gacilly,fr&APPID=feba3f4d926db3b358a25ec782bd1c8b&lang=FR&units=metric" time=os.time() seconds=tonumber(os.date('%S',time)) minutes=tonumber(os.date('%M',time)) heures=tonumber(os.date('%H',time)) jour=tonumber(os.date('%w',time)) mois=tonumber(os.date('%M',time)) function updateBarometerDevice(deviceId, temperature, humidity, pressure, cloud) local svalue = string.format("%.1f;%d;%d;%d;%d;", temperature, humidity, humidity, pressure, cloud) --local svalue = "TEMP;HUM;HUM_STAT;BAR;BAR_FOR" url = domoticzURL..'/json.htm?type=command¶m=udevice&idx='..deviceId..'&svalue='..svalue print(url) result = os.execute(curl..'"'..url..'" &') print(result) end commandArray = {} if minutes == 00 and heures == 08 then if mois == 2 and jour == 01 then commandArray['SendNotification']='Changement d\'anglet#Passer l\'angle des pannneaux à 60°!' end if mois == 3 and jour == 01 then commandArray['SendNotification']='Changement d\'anglet#Passer l\'angle des pannneaux à 45!' end if mois == 4 and jour == 24 then commandArray['SendNotification']='Changement d\'anglet#Passer l\'angle des pannneaux à 30°!' end if mois == 8 and jour == 19 then commandArray['SendNotification']='Changement d\'anglet#Passer l\'angle des pannneaux à 45!' end if mois == 10 and jour == 13 then commandArray['SendNotification']='Changement d\'anglet#Passer l\'angle des pannneaux à 60°!' end end if minutes%15 == 0 then local cmd = 'curl "'..url..'"' local jsonContent = os.capture(cmd, true) -- jsonContent = '{"coord":{"lon":-2.1322,"lat":47.7656},"weather":[{"id":803,"main":"Clouds","description":"nuageux","icon":"04d"}],"base":"stations","main":{"temp":22.33,"feels_like":22.21,"temp_min":21.14,"temp_max":23.77,"pressure":1012,"humidity":61,"sea_level":1012,"grnd_level":1010},"visibility":10000,"wind":{"speed":4.87,"deg":265,"gust":5.72},"clouds":{"all":58},"dt":1686396178,"sys":{"type":2,"id":2007485,"country":"FR","sunrise":1686370227,"sunset":1686427534},"timezone":7200,"id":3009239,"name":"La Gacilly","cod":200}' print(cmd) -- Appel de la fonction pour récupérer le contenu JSON de l'URL -- local jsonContent = getJSON(url) json = (loadfile "/opt/domoticz/scripts/lua/JSON.lua")() local devices = json:decode(jsonContent) printTableAsTree(devices) -- local jsonTable = domoticz.utils.fromJSON(jsonContent) -- Vérification si la récupération du JSON a réussi if jsonContent then print("Contenu JSON récupéré avec succès:") --print(jsonContent) else print("Erreur lors de la récupération du JSON") end -- Conversion du contenu JSON en une table Lua -- local devices = json.decode(jsonContent) --local devices = domoticz.utils.fromJSON(jsonContent) --for k, v in pairs(devices) do --print(k .. ' '.. v) --end pluie_1h = 0 local main = searchKeyInTable("main", devices['weather']) print('main='..main) forecast = 0 if main == "Clouds" then nuage = searchKeyInTable("all", devices) if (tonumber(nuage) > 50) then forecast = 3 else forecast = 2 end print("Nuage " .. nuage) elseif main == "Rain" then forecast = 4 pluie_1h = searchKeyInTable("1h", devices) elseif main == "Clear" then nuage = searchKeyInTable("all", devices) forecast = 1 end print("pluie " .. pluie_1h) deviceId = 1159 -- /json.htm?type=command¶m=udevice&idx=IDX&nvalue=0&svalue=RAINRATE;RAINCOUNTER local svalue = string.format(";%d", pluie_1h) url = domoticzURL..'/json.htm?type=command¶m=udevice&idx='..deviceId..'&svalue='..svalue print(url) result = os.execute(curl..'"'..url..'" &') print(result) deviceId = 1160 -- /json.htm?type=command¶m=udevice&idx=IDX&nvalue=0&svalue=RAINRATE;RAINCOUNTER local svalue = string.format("%d", nuage) url = domoticzURL..'/json.htm?type=command¶m=udevice&idx='..deviceId..'&svalue='..svalue print(url) result = os.execute(curl..'"'..url..'" &') print(result) local temp_min = searchKeyInTable("temp", devices) local humidity = searchKeyInTable("humidity", devices) local grnd_level = searchKeyInTable("pressure", devices) local cloud = searchKeyInTable("all", devices) updateBarometerDevice(1157, temp_min, humidity, grnd_level, forecast) local temp = searchKeyInTable("temp", devices) local feels_like = searchKeyInTable("feels_like", devices) local deg = searchKeyInTable("pressure", devices) local speed = searchKeyInTable("speed", devices) * 10 local gust = searchKeyInTable("gust", devices) * 10 deviceId = 1158 local svalue = string.format("%d;;%.1f;%.1f;%.1f;%.1f", deg, speed, gust, temp, feels_like) --local svalue = "TEMP;HUM;HUM_STAT;BAR;BAR_FOR" url = domoticzURL..'/json.htm?type=command¶m=udevice&idx='..deviceId..'&svalue='..svalue print(url) result = os.execute(curl..'"'..url..'" &') print(result) end return commandArray