- weather/lcd4l: add some more weather data

Signed-off-by: Thilo Graf <dbt@novatux.de>
This commit is contained in:
svenhoefer
2019-03-23 11:04:46 +01:00
committed by Thilo Graf
parent 9d5698865e
commit e04de3136e
4 changed files with 75 additions and 3 deletions

View File

@@ -128,7 +128,10 @@ bool CWeather::GetWeatherDetails()
if (found > 0)
{
timezone = DataValues["timezone"].asString();
current.timestamp = DataValues["currently"].get("time", 0).asDouble();
current.temperature = DataValues["currently"].get("temperature", "").asFloat();
current.windSpeed = DataValues["currently"].get("windSpeed", 0).asFloat();
current.windBearing = DataValues["currently"].get("windBearing", 0).asDouble();
current.icon = DataValues["currently"].get("icon", "").asString();
if (current.icon.empty())
current.icon = "unknown.png";
@@ -148,6 +151,8 @@ bool CWeather::GetWeatherDetails()
daily_data.icon = daily_data.icon + ".png";
daily_data.temperatureMin = elements[i].get("temperatureMin", "").asFloat();
daily_data.temperatureMax = elements[i].get("temperatureMax", "").asFloat();
daily_data.windSpeed = elements[i].get("windSpeed", 0).asFloat();
daily_data.windBearing = elements[i].get("windBearing", 0).asDouble();
struct tm *timeinfo;
timeinfo = localtime(&daily_data.timestamp);

View File

@@ -36,12 +36,18 @@
struct current_data
{
time_t timestamp;
std::string icon;
float temperature;
float windSpeed;
int windBearing;
current_data():
timestamp(0),
icon(""),
temperature(0)
temperature(0),
windSpeed(0),
windBearing(0)
{}
};
@@ -51,6 +57,8 @@ typedef struct
std::string icon;
float temperatureMin;
float temperatureMax;
float windSpeed;
int windBearing;
} forecast_data;
class CWeather
@@ -77,18 +85,48 @@ class CWeather
{
return city;
};
#if 0
std::string getCurrentTimestamp()
{
return to_string((int)(current.timestamp));
};
#endif
time_t getCurrentTimestamp()
{
return current.timestamp;
};
std::string getCurrentTemperature()
{
return to_string((int)(current.temperature + 0.5));
};
std::string getCurrentWindSpeed()
{
return to_string(current.windSpeed);
};
std::string getCurrentWindBearing()
{
return to_string(current.windBearing);
};
std::string getCurrentIcon()
{
return ICONSDIR"/weather/" + current.icon;
};
std::string getForecastTemperatureMin(int i = 0)
{
return to_string((int)(v_forecast[i].temperatureMin + 0.5));
};
std::string getForecastTemperatureMax(int i = 0)
{
return to_string((int)(v_forecast[i].temperatureMax + 0.5));
};
std::string getForecastWindSpeed(int i = 0)
{
return to_string(v_forecast[i].windSpeed);
};
std::string getForecastWindBearing(int i = 0)
{
return to_string(v_forecast[i].windBearing);
};
std::string getForecastIcon(int i = 0)
{
return ICONSDIR"/weather/" + v_forecast[i].icon;