datapoint-python
datapoint-python copied to clipboard
Daily and hourly data is returned in different formats
I'm working on updating Home Assistant integration to use the latest version of datapoint and it looks like daily and hourly forecasts are formatted very differently. I.e., hourly forecast has camelCase attribute names like shown in documentation but daily forecast uses TitleCase attributes. There are also some more significant differences between them.
Also, weather code is mapped to string in hourly version but is returned as numerical code in daily. To be fair, I personally would prefer the daily version here.
Here is daily format:
{
"time": datetime.datetime(2024, 11, 23, 12, 0, tzinfo=datetime.timezone.utc),
"10MWindSpeed": {
"value": 8.13,
"description": "10m Wind Speed at Local Midday",
"unit_name": "metres per second",
"unit_symbol": "m/s"
},
"10MWindDirection": {
"value": 186,
"description": "10m Wind Direction at Local Midday",
"unit_name": "degrees",
"unit_symbol": "deg"
},
"10MWindGust": {
"value": 16.16,
"description": "10m Wind Gust Speed at Local Midday",
"unit_name": "metres per second",
"unit_symbol": "m/s"
},
"Visibility": {
"value": 12419,
"description": "Visibility at Local Midday",
"unit_name": "metres",
"unit_symbol": "m"
},
"RelativeHumidity": {
"value": 88.31,
"description": "Relative Humidity at Local Midday",
"unit_name": "percentage",
"unit_symbol": "%"
},
"Mslp": {
"value": 100032,
"description": "Mean Sea Level Pressure at Local Midday",
"unit_name": "pascals",
"unit_symbol": "Pa"
},
"maxUvIndex": {
"value": 1,
"description": "Day Maximum UV Index",
"unit_name": "dimensionless",
"unit_symbol": "1"
},
"SignificantWeatherCode": {
"value": 12,
"description": "Day Significant Weather Code",
"unit_name": "dimensionless",
"unit_symbol": "1"
},
"MaxScreenTemperature": {
"value": 11.88,
"description": "Day Maximum Screen Air Temperature",
"unit_name": "degrees Celsius",
"unit_symbol": "Cel"
},
"UpperBoundMaxTemp": {
"value": 14.1,
"description": "Upper Bound on Day Maximum Screen Air Temperature",
"unit_name": "degrees Celsius",
"unit_symbol": "Cel"
},
"LowerBoundMaxTemp": {
"value": 10.98,
"description": "Lower Bound on Day Maximum Screen Air Temperature",
"unit_name": "degrees Celsius",
"unit_symbol": "Cel"
},
"MaxFeelsLikeTemp": {
"value": 7.57,
"description": "Day Maximum Feels Like Air Temperature",
"unit_name": "degrees Celsius",
"unit_symbol": "Cel"
},
"UpperBoundMaxFeelsLikeTemp": {
"value": 10.88,
"description": "Upper Bound on Day Maximum Feels Like Air Temperature",
"unit_name": "degrees Celsius",
"unit_symbol": "Cel"
},
"LowerBoundMaxFeelsLikeTemp": {
"value": 7.57,
"description": "Lower Bound on Day Maximum Feels Like Air Temperature",
"unit_name": "degrees Celsius",
"unit_symbol": "Cel"
},
"ProbabilityOfPrecipitation": {
"value": 93,
"description": "Probability of Precipitation During The Day",
"unit_name": "percentage",
"unit_symbol": "%"
},
"ProbabilityOfSnow": {
"value": 0,
"description": "Probability of Snow During The Day",
"unit_name": "percentage",
"unit_symbol": "%"
},
"ProbabilityOfHeavySnow": {
"value": 0,
"description": "Probability of Heavy Snow During The Day",
"unit_name": "percentage",
"unit_symbol": "%"
},
"ProbabilityOfRain": {
"value": 93,
"description": "Probability of Rain During The Day",
"unit_name": "percentage",
"unit_symbol": "%"
},
"ProbabilityOfHeavyRain": {
"value": 92,
"description": "Probability of Heavy Rain During The Day",
"unit_name": "percentage",
"unit_symbol": "%"
},
"ProbabilityOfHail": {
"value": 19,
"description": "Probability of Hail During The Day",
"unit_name": "percentage",
"unit_symbol": "%"
},
"ProbabilityOfSferics": {
"value": 9,
"description": "Probability of Sferics During The Day",
"unit_name": "percentage",
"unit_symbol": "%"
}
}
Here's hourly:
{
"time": datetime.datetime(2024, 11, 23, 11, 0, tzinfo=datetime.timezone.utc),
"screenTemperature": {
"value": 9.0,
"description": "Screen Air Temperature",
"unit_name": "degrees Celsius",
"unit_symbol": "Cel"
},
"maxScreenAirTemp": {
"value": 9.28,
"description": "Maximum Screen Air Temperature Over Previous Hour",
"unit_name": "degrees Celsius",
"unit_symbol": "Cel"
},
"minScreenAirTemp": {
"value": 8.99,
"description": "Minimum Screen Air Temperature Over Previous Hour",
"unit_name": "degrees Celsius",
"unit_symbol": "Cel"
},
"screenDewPointTemperature": {
"value": 6.99,
"description": "Screen Dew Point Temperature",
"unit_name": "degrees Celsius",
"unit_symbol": "Cel"
},
"feelsLikeTemperature": {
"value": 5.68,
"description": "Feels Like Temperature",
"unit_name": "degrees Celsius",
"unit_symbol": "Cel"
},
"windSpeed10m": {
"value": 6.9,
"description": "10m Wind Speed",
"unit_name": "metres per second",
"unit_symbol": "m/s"
},
"windDirectionFrom10m": {
"value": 185,
"description": "10m Wind From Direction",
"unit_name": "degrees",
"unit_symbol": "deg"
},
"windGustSpeed10m": {
"value": 14.09,
"description": "10m Wind Gust Speed",
"unit_name": "metres per second",
"unit_symbol": "m/s"
},
"max10mWindGust": {
"value": 16.41,
"description": "Maximum 10m Wind Gust Speed Over Previous Hour",
"unit_name": "metres per second",
"unit_symbol": "m/s"
},
"visibility": {
"value": 10931,
"description": "Visibility",
"unit_name": "metres",
"unit_symbol": "m"
},
"screenRelativeHumidity": {
"value": 87.37,
"description": "Screen Relative Humidity",
"unit_name": "percentage",
"unit_symbol": "%"
},
"mslp": {
"value": 100240,
"description": "Mean Sea Level Pressure",
"unit_name": "pascals",
"unit_symbol": "Pa"
},
"uvIndex": {
"value": 1,
"description": "UV Index",
"unit_name": "dimensionless",
"unit_symbol": "1"
},
"significantWeatherCode": {
"value": "Drizzle",
"description": "Significant Weather Code",
"unit_name": "dimensionless",
"unit_symbol": "1"
},
"precipitationRate": {
"value": 0.1,
"description": "Precipitation Rate",
"unit_name": "millimetres per hour",
"unit_symbol": "mm/h"
},
"totalPrecipAmount": {
"value": 0.08,
"description": "Total Precipitation Amount Over Previous Hour",
"unit_name": "millimetres",
"unit_symbol": "mm"
},
"totalSnowAmount": {
"value": 0,
"description": "Total Snow Amount Over Previous Hour",
"unit_name": "millimetres",
"unit_symbol": "mm"
},
"probOfPrecipitation": {
"value": 38,
"description": "Probability of Precipitation",
"unit_name": "percentage",
"unit_symbol": "%"
}
}