From c5181829f518abffb789d7c83c84569c096fe115 Mon Sep 17 00:00:00 2001 From: Sviatoslav Sydorenko Date: Tue, 27 Mar 2018 18:46:58 +0200 Subject: Reimplement wind direction detection properly Fixes #39 Ref: https://www.campbellsci.eu/blog/convert-wind-directions --- weather-widget/weather.lua | 45 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 24 deletions(-) (limited to 'weather-widget') 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 }) -- cgit v1.2.3