summaryrefslogtreecommitdiff
path: root/weather-widget
diff options
context:
space:
mode:
authorSviatoslav Sydorenko <wk@sydorenko.org.ua>2018-03-27 18:46:58 +0200
committerSviatoslav Sydorenko <wk@sydorenko.org.ua>2018-03-27 18:46:58 +0200
commitc5181829f518abffb789d7c83c84569c096fe115 (patch)
tree88a6bcf387e8e18bf4d22d13d3478034e0560a5f /weather-widget
parentd46954629f14a9d4cebd18ac7b25046282487f97 (diff)
Reimplement wind direction detection properly
Fixes #39 Ref: https://www.campbellsci.eu/blog/convert-wind-directions
Diffstat (limited to 'weather-widget')
-rw-r--r--weather-widget/weather.lua45
1 files changed, 21 insertions, 24 deletions
diff --git a/weather-widget/weather.lua b/weather-widget/weather.lua
index 43ce974..08883b9 100644
--- a/weather-widget/weather.lua
+++ b/weather-widget/weather.lua
@@ -67,33 +67,30 @@ end
-- Return wind direction as a string.
function to_direction(degrees)
- local 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 },
- }
+ -- Ref: https://www.campbellsci.eu/blog/convert-wind-directions
if degrees == nil then
return "Unknown dir"
end
- for i, dir in ipairs(directions) do
- if degrees > dir[2] and degrees < dir[3] then
- return dir[1]
- end
- end
+ local directions = {
+ "N",
+ "NNE",
+ "NE",
+ "ENE",
+ "E",
+ "ESE",
+ "SE",
+ "SSE",
+ "S",
+ "SSW",
+ "SW",
+ "WSW",
+ "W",
+ "WNW",
+ "NW",
+ "NNW",
+ "N",
+ }
+ return directions[math.floor((degrees % 360) / 22.5) + 1]
end
local weather_timer = timer({ timeout = 60 })