first commit
This commit is contained in:
120
lua/script_time_angle.lua
Normal file
120
lua/script_time_angle.lua
Normal file
@@ -0,0 +1,120 @@
|
||||
require "scripts/lua/functions"
|
||||
|
||||
-- URL du fichier JSON
|
||||
local weather_url = "http://api.openweathermap.org/data/2.5/weather?q=La%20gacilly,fr&APPID=feba3f4d926db3b358a25ec782bd1c8b&lang=FR&units=metric"
|
||||
local forecast_url = "http://api.openweathermap.org/data/2.5/forecast?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))
|
||||
|
||||
local function forecast(pressure)
|
||||
-- pressureForecast = tonumber(forecast)
|
||||
|
||||
if (pressure == 0) then
|
||||
pressureForecast = 0
|
||||
elseif (pressure > 1030) then
|
||||
pressureForecast = 1
|
||||
elseif ((pressure > 1010) and (pressure <= 1030)) then
|
||||
pressureForecast = 2
|
||||
elseif ((pressure > 990) and (pressure <= 1010)) then
|
||||
pressureForecast = 3
|
||||
elseif ((pressure > 970) and (pressure <= 990)) then
|
||||
pressureForecast = 4
|
||||
end
|
||||
return pressureForecast
|
||||
end
|
||||
|
||||
local function updateBarometerDevice(deviceId, temperature, humidity, pressure, cloud)
|
||||
local svalue = string.format("%.1f;%d;%d;%d;%d;", temperature, humidity, humidity, pressure, cloud)
|
||||
local 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 == 0 and heures == 8 then
|
||||
if mois == 2 and jour == 1 then
|
||||
sendNotification('Changement d\'angle#Passer l\'angle des panneaux à 60°!')
|
||||
end
|
||||
if mois == 3 and jour == 1 then
|
||||
sendNotification('Changement d\'angle#Passer l\'angle des panneaux à 45°!')
|
||||
end
|
||||
if mois == 4 and jour == 24 then
|
||||
sendNotification('Changement d\'angle#Passer l\'angle des panneaux à 30°!')
|
||||
end
|
||||
if mois == 8 and jour == 19 then
|
||||
sendNotification('Changement d\'angle#Passer l\'angle des panneaux à 45°!')
|
||||
end
|
||||
if mois == 10 and jour == 13 then
|
||||
sendNotification('Changement d\'angle#Passer l\'angle des panneaux à 60°!')
|
||||
end
|
||||
end
|
||||
|
||||
if minutes % 10 == 0 then
|
||||
local jsonContent = getJSONContent(weather_url)
|
||||
|
||||
local devices = decodeJSON(jsonContent)
|
||||
printTableAsTree(devices)
|
||||
|
||||
local nuage = 0
|
||||
local pluie_1h = 0
|
||||
local main = searchKeyInTable("main", devices['weather'])
|
||||
print('main='..main)
|
||||
local nuage = searchKeyInTable("all", devices['clouds'])
|
||||
|
||||
print("pluie " .. pluie_1h)
|
||||
print("Nuage " .. nuage)
|
||||
|
||||
updateDeviceValue(1159, ';'..pluie_1h)
|
||||
updateDeviceValue(1160, nuage)
|
||||
|
||||
local temp_min = searchKeyInTable("temp", devices)
|
||||
local humidity = searchKeyInTable("humidity", devices)
|
||||
local pressure = searchKeyInTable("pressure", devices)
|
||||
local cloud = searchKeyInTable("all", devices)
|
||||
local forecast = forecast(pressure)
|
||||
|
||||
updateBarometerDevice(1157, temp_min, humidity, pressure, forecast)
|
||||
|
||||
local temp = searchKeyInTable("temp", devices)
|
||||
local feels_like = searchKeyInTable("feels_like", devices)
|
||||
local deg = searchKeyInTable("deg", devices)
|
||||
local speed = searchKeyInTable("speed", devices) * 10
|
||||
local gust = searchKeyInTable("gust", devices) * 10
|
||||
local angle = searchKeyInTable("deg", devices['wind'])
|
||||
local compass = convertirAngle(angle)
|
||||
|
||||
-- print("deg"..tostring(deg))
|
||||
updateDeviceValue(1158, string.format("%d;%s;%.1f;%.1f;%.1f;%.1f", deg, compass, speed, gust, temp, feels_like))
|
||||
end
|
||||
|
||||
if heures % 3 == 0 and minutes == 26 then
|
||||
local jsonContent = getJSONContent(forecast_url)
|
||||
--print(jsonContent)
|
||||
local data = decodeJSON(jsonContent)
|
||||
|
||||
-- Extraire les 6 premières valeurs du champ "all"
|
||||
local cloud_values = {}
|
||||
for i = 1, math.min(6, #data.list) do
|
||||
table.insert(cloud_values, data.list[i].clouds.all)
|
||||
end
|
||||
|
||||
-- Afficher les valeurs extraites
|
||||
local somme = 0
|
||||
for i, value in ipairs(cloud_values) do
|
||||
print("Cloud coverage for point " .. i .. ": " .. value)
|
||||
somme = somme + tonumber(value)
|
||||
end
|
||||
local moyenne = somme / 6
|
||||
print("Cloud coverage average".. tostring(moyenne))
|
||||
updateDeviceValue(1199, tostring(moyenne))
|
||||
|
||||
end
|
||||
|
||||
return commandArray
|
||||
Reference in New Issue
Block a user