Merge pull request #40 from webknjaz/bugfix/wind-dir-calc
Reimplement wind direction detection properly
This commit is contained in:
commit
7eafdb21a8
|
@ -67,33 +67,30 @@ end
|
||||||
|
|
||||||
-- Return wind direction as a string.
|
-- Return wind direction as a string.
|
||||||
function to_direction(degrees)
|
function to_direction(degrees)
|
||||||
local directions = {
|
-- Ref: https://www.campbellsci.eu/blog/convert-wind-directions
|
||||||
{ "N", 348.75, 360 },
|
|
||||||
{ "N", 0, 11.25 },
|
|
||||||
{ "NNE", 11.25, 33.75 },
|
|
||||||
{ "NE", 33.75, 56.25 },
|
|
||||||
{ "ENE", 56.25, 78.75 },
|
|
||||||
{ "E", 78.75, 101.25 },
|
|
||||||
{ "ESE", 101.25, 123.75 },
|
|
||||||
{ "SE", 123.75, 146.25 },
|
|
||||||
{ "SSE", 146.25, 168.75 },
|
|
||||||
{ "S", 168.75, 191.25 },
|
|
||||||
{ "SSW", 191.25, 213.75 },
|
|
||||||
{ "SW", 213.75, 236.25 },
|
|
||||||
{ "WSW", 236.25, 258.75 },
|
|
||||||
{ "W", 258.75, 281.25 },
|
|
||||||
{ "WNW", 281.25, 303.75 },
|
|
||||||
{ "NW", 303.75, 326.25 },
|
|
||||||
{ "NNW", 326.25, 348.75 },
|
|
||||||
}
|
|
||||||
if degrees == nil then
|
if degrees == nil then
|
||||||
return "Unknown dir"
|
return "Unknown dir"
|
||||||
end
|
end
|
||||||
for i, dir in ipairs(directions) do
|
local directions = {
|
||||||
if degrees > dir[2] and degrees < dir[3] then
|
"N",
|
||||||
return dir[1]
|
"NNE",
|
||||||
end
|
"NE",
|
||||||
end
|
"ENE",
|
||||||
|
"E",
|
||||||
|
"ESE",
|
||||||
|
"SE",
|
||||||
|
"SSE",
|
||||||
|
"S",
|
||||||
|
"SSW",
|
||||||
|
"SW",
|
||||||
|
"WSW",
|
||||||
|
"W",
|
||||||
|
"WNW",
|
||||||
|
"NW",
|
||||||
|
"NNW",
|
||||||
|
"N",
|
||||||
|
}
|
||||||
|
return directions[math.floor((degrees % 360) / 22.5) + 1]
|
||||||
end
|
end
|
||||||
|
|
||||||
local weather_timer = timer({ timeout = 60 })
|
local weather_timer = timer({ timeout = 60 })
|
||||||
|
|
Loading…
Reference in New Issue