User Tools

Site Tools


get_weather_conditions_and_forecast

Weather conditions and forecast functions

You must have Level2 weather forecasting service activated to use this function.

GetCurrentWeather()

The GetCurrentWeather function returns the current weather conditions at the WebHMI installation location. The data is being updated approximately every two hours. The service requires an Internet connection, an account in Level2 and a subscription to the weather forecast. The function is available since version 2.5.2400.

If for some reason the data has not been received, the value nil will be returned.

The function returns a table with the following fields:

time The time for which the weather data was received
text A short textual description of the current weather
temperature Air temperature in degrees Celsius
pressure Atmospheric pressure in hPa
humidity Relative air humidity in %
windDirection The direction of the wind origin, metrological degrees (north— 0 degrees)
windSpeed Wind speed in m/s
cloudness Covering the sky with clouds as a percentage
rain Precipitation (rain), in mm
snow Precipitation (snow), in mm

GetForecastWeather(interval)

The GetForecastWeather function returns the weather forecast at the WebHMI installation location to the specified interval. The data is updated approximately every two hours. The service requires an Internet connection, an account in Level2 and a subscription to the weather forecast. The function is available since version 2.5.2400.

If for some reason the data has not been received, the value nil will be returned.

The interval is a three-hour time interval in the future. From zero to 6. Total six intervals. Zero interval is the forecast in about 3 hours. The first interval is the forecast in six hours. Etc. The format of the returned data is identical to the function GetCurrentWeather.

An example of a simple program that turns on and off the warm floor before entering the store, depending on the weather conditions.

function main (userId)
    local current = GetCurrentWeather();
    local nextForecast = GetForecastWeather(0);
 
    if (nextForecast.temperature > 6 and current.temperature > 6) then -- positive temperature
        WriteReg(91, 0); -- turn anti-ice off 
    end
 
    if (current.snow < 1 and nextForecast.snow < 1) then -- not snowing 
        WriteReg(91, 0); -- turn anti-ice off
    end
 
    if (current.cloudness < 20 and nextForecast.cloudness < 20) then -- clear
        WriteReg(91, 0); -- turn anti-ice
    end
 
    if (current.snow > 2 or nextForecast.snow > 2) then -- it's snowing
        WriteReg(91, 1); -- turn anti-ice on
    end
end

GetSunriseTime(interval)

The function GetSunriseTime returns the time in the format Unixtime of the sunrise in the current day. The service requires an Internet connection, an account in Level2 and a subscription to the weather forecast. The function is available since version 2.5.2400. If for some reason the data has not been received, the value nil will be returned.

GetSunsetTime(interval)

The function GetSunsetTime returns the time in Unixtime format of sunset in the current day. The service requires an Internet connection, an account in Level2 and a subscription to the weather forecast. The function is available since version 2.5.2400. If for some reason the data has not been received, the value nil will be returned.

One more example

---------------------------- TIMER ----------------------------
fiveMinTimer = {}
setmetatable(fiveMinTimer, {
    __call = function (self) 
                self.DELAY = 2
                local t = os.date("*t")    
                local ifTimeBoundary = (t.min % self.DELAY == 0) and true or false 
 
                if (ifTimeBoundary and not self.lock) then 
                    self.lock = true             
                    return true 
                end 
 
                if (self.lock and not ifTimeBoundary) then 
                    self.lock = false 
                    DEBUG("released lock")
                end 
                return false 
             end 
})
 
---------------------------- MAIN ---------------------------- 
function main (userId)
 
  if fiveMinTimer() then  
      weatherDemoLevel2() 
  end 
 
end
 
---------------------------- HELPERS ---------------------------
 
-- invokes all functions related to weather 
function weatherDemoLevel2() 
 
    local wdata = GetCurrentWeather()     
    tprint(wdata)
    --[[
        The GetCurrentWeather function returns the current weather conditions at the WebHMI installation location. 
        The data is being updated approximately every two hours. The service requires an Internet connection, 
        an account in Level2 and a subscription to the weather forecast. The function is available since version 2.5.2400.
        If for some reason the data has not been received, the value nil will be returned.
    --]]
 
    wdata = GetForecastWeather(5)
    tprint(wdata)
    --[[
        The GetForecastWeather function returns the weather forecast at the WebHMI installation location to the specified interval. 
        The data is updated approximately every two hours. The service requires an Internet connection, an account in Level2 and a
        subscription to the weather forecast. The function is available since version 2.5.2400.
        If for some reason the data has not been received, the value nil will be returned.
        The interval is a three-hour time interval in the future. From zero to 6. Total six intervals. Zero interval is the forecast in about 3 hours. The first interval is the forecast in six hours. Etc. The format of the returned data is identical to the function GetCurrentWeather.
    --]]
 
    wdata = GetSunriseTime(4)  
    INFO(os.date("%X", wdata) ) 
    --[[ The function GetSunriseTime returns the time in the format Unixtime of the sunrise in the current day. The service requires an
          Internet connection, an account in Level2 and a subscription to the weather forecast. The function is available since version 2.5.2400.
          If for some reason the data has not been received, the value nil will be returned.
    --]] 
 
    wdata = GetSunsetTime(3) 
    INFO(os.date("%X", wdata) )
  --[[ The function GetSunsetTime returns the time in Unixtime format of sunset in the current day. 
        The service requires an Internet connection, an account in Level2 and a subscription to the weather forecast. 
        The function is available since version 2.5.2400. If for some reason the data has not been received, the value nil will be returned.
   --]]
 
end 
 
-- prints a table 
function tprint(t, indent)
    if not indent then indent = 0 end 
    for k, v in pairs(t) do 
        local formatting = string.rep(' ', indent) .. k .. ': '
        if type(v) == "table" then 
            ERROR(formatting) 
            tprint(v, indent + 1) -- recursive call 
        else
            if type(v) == "boolean" then 
                v = v and "TRUE" or "FALSE"
            end 
            ERROR(formatting .. v) 
        end 
    end  
end
get_weather_conditions_and_forecast.txt · Last modified: 2023/02/20 10:28 by emozolyak

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki