mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 20:27:08 +00:00
Additional sensors for OpenWeatherMap (#47806)
This commit is contained in:
parent
7826f6e3f8
commit
362e7226e9
@ -35,6 +35,7 @@ from homeassistant.const import (
|
|||||||
PRESSURE_HPA,
|
PRESSURE_HPA,
|
||||||
SPEED_METERS_PER_SECOND,
|
SPEED_METERS_PER_SECOND,
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
|
UV_INDEX,
|
||||||
)
|
)
|
||||||
|
|
||||||
DOMAIN = "openweathermap"
|
DOMAIN = "openweathermap"
|
||||||
@ -47,6 +48,7 @@ ENTRY_NAME = "name"
|
|||||||
ENTRY_WEATHER_COORDINATOR = "weather_coordinator"
|
ENTRY_WEATHER_COORDINATOR = "weather_coordinator"
|
||||||
ATTR_API_PRECIPITATION = "precipitation"
|
ATTR_API_PRECIPITATION = "precipitation"
|
||||||
ATTR_API_DATETIME = "datetime"
|
ATTR_API_DATETIME = "datetime"
|
||||||
|
ATTR_API_DEW_POINT = "dew_point"
|
||||||
ATTR_API_WEATHER = "weather"
|
ATTR_API_WEATHER = "weather"
|
||||||
ATTR_API_TEMPERATURE = "temperature"
|
ATTR_API_TEMPERATURE = "temperature"
|
||||||
ATTR_API_FEELS_LIKE_TEMPERATURE = "feels_like_temperature"
|
ATTR_API_FEELS_LIKE_TEMPERATURE = "feels_like_temperature"
|
||||||
@ -58,6 +60,7 @@ ATTR_API_CONDITION = "condition"
|
|||||||
ATTR_API_CLOUDS = "clouds"
|
ATTR_API_CLOUDS = "clouds"
|
||||||
ATTR_API_RAIN = "rain"
|
ATTR_API_RAIN = "rain"
|
||||||
ATTR_API_SNOW = "snow"
|
ATTR_API_SNOW = "snow"
|
||||||
|
ATTR_API_UV_INDEX = "uv_index"
|
||||||
ATTR_API_WEATHER_CODE = "weather_code"
|
ATTR_API_WEATHER_CODE = "weather_code"
|
||||||
ATTR_API_FORECAST = "forecast"
|
ATTR_API_FORECAST = "forecast"
|
||||||
SENSOR_NAME = "sensor_name"
|
SENSOR_NAME = "sensor_name"
|
||||||
@ -81,6 +84,7 @@ DEFAULT_FORECAST_MODE = FORECAST_MODE_ONECALL_DAILY
|
|||||||
|
|
||||||
MONITORED_CONDITIONS = [
|
MONITORED_CONDITIONS = [
|
||||||
ATTR_API_WEATHER,
|
ATTR_API_WEATHER,
|
||||||
|
ATTR_API_DEW_POINT,
|
||||||
ATTR_API_TEMPERATURE,
|
ATTR_API_TEMPERATURE,
|
||||||
ATTR_API_FEELS_LIKE_TEMPERATURE,
|
ATTR_API_FEELS_LIKE_TEMPERATURE,
|
||||||
ATTR_API_WIND_SPEED,
|
ATTR_API_WIND_SPEED,
|
||||||
@ -90,6 +94,7 @@ MONITORED_CONDITIONS = [
|
|||||||
ATTR_API_CLOUDS,
|
ATTR_API_CLOUDS,
|
||||||
ATTR_API_RAIN,
|
ATTR_API_RAIN,
|
||||||
ATTR_API_SNOW,
|
ATTR_API_SNOW,
|
||||||
|
ATTR_API_UV_INDEX,
|
||||||
ATTR_API_CONDITION,
|
ATTR_API_CONDITION,
|
||||||
ATTR_API_WEATHER_CODE,
|
ATTR_API_WEATHER_CODE,
|
||||||
]
|
]
|
||||||
@ -187,6 +192,11 @@ CONDITION_CLASSES = {
|
|||||||
}
|
}
|
||||||
WEATHER_SENSOR_TYPES = {
|
WEATHER_SENSOR_TYPES = {
|
||||||
ATTR_API_WEATHER: {SENSOR_NAME: "Weather"},
|
ATTR_API_WEATHER: {SENSOR_NAME: "Weather"},
|
||||||
|
ATTR_API_DEW_POINT: {
|
||||||
|
SENSOR_NAME: "Dew Point",
|
||||||
|
SENSOR_UNIT: TEMP_CELSIUS,
|
||||||
|
SENSOR_DEVICE_CLASS: DEVICE_CLASS_TEMPERATURE,
|
||||||
|
},
|
||||||
ATTR_API_TEMPERATURE: {
|
ATTR_API_TEMPERATURE: {
|
||||||
SENSOR_NAME: "Temperature",
|
SENSOR_NAME: "Temperature",
|
||||||
SENSOR_UNIT: TEMP_CELSIUS,
|
SENSOR_UNIT: TEMP_CELSIUS,
|
||||||
@ -215,13 +225,20 @@ WEATHER_SENSOR_TYPES = {
|
|||||||
ATTR_API_CLOUDS: {SENSOR_NAME: "Cloud coverage", SENSOR_UNIT: PERCENTAGE},
|
ATTR_API_CLOUDS: {SENSOR_NAME: "Cloud coverage", SENSOR_UNIT: PERCENTAGE},
|
||||||
ATTR_API_RAIN: {SENSOR_NAME: "Rain", SENSOR_UNIT: LENGTH_MILLIMETERS},
|
ATTR_API_RAIN: {SENSOR_NAME: "Rain", SENSOR_UNIT: LENGTH_MILLIMETERS},
|
||||||
ATTR_API_SNOW: {SENSOR_NAME: "Snow", SENSOR_UNIT: LENGTH_MILLIMETERS},
|
ATTR_API_SNOW: {SENSOR_NAME: "Snow", SENSOR_UNIT: LENGTH_MILLIMETERS},
|
||||||
|
ATTR_API_UV_INDEX: {
|
||||||
|
SENSOR_NAME: "UV Index",
|
||||||
|
SENSOR_UNIT: UV_INDEX,
|
||||||
|
},
|
||||||
ATTR_API_CONDITION: {SENSOR_NAME: "Condition"},
|
ATTR_API_CONDITION: {SENSOR_NAME: "Condition"},
|
||||||
ATTR_API_WEATHER_CODE: {SENSOR_NAME: "Weather Code"},
|
ATTR_API_WEATHER_CODE: {SENSOR_NAME: "Weather Code"},
|
||||||
}
|
}
|
||||||
FORECAST_SENSOR_TYPES = {
|
FORECAST_SENSOR_TYPES = {
|
||||||
ATTR_FORECAST_CONDITION: {SENSOR_NAME: "Condition"},
|
ATTR_FORECAST_CONDITION: {SENSOR_NAME: "Condition"},
|
||||||
ATTR_FORECAST_PRECIPITATION: {SENSOR_NAME: "Precipitation"},
|
ATTR_FORECAST_PRECIPITATION: {SENSOR_NAME: "Precipitation"},
|
||||||
ATTR_FORECAST_PRECIPITATION_PROBABILITY: {SENSOR_NAME: "Precipitation probability"},
|
ATTR_FORECAST_PRECIPITATION_PROBABILITY: {
|
||||||
|
SENSOR_NAME: "Precipitation probability",
|
||||||
|
SENSOR_UNIT: PERCENTAGE,
|
||||||
|
},
|
||||||
ATTR_FORECAST_PRESSURE: {SENSOR_NAME: "Pressure"},
|
ATTR_FORECAST_PRESSURE: {SENSOR_NAME: "Pressure"},
|
||||||
ATTR_FORECAST_TEMP: {
|
ATTR_FORECAST_TEMP: {
|
||||||
SENSOR_NAME: "Temperature",
|
SENSOR_NAME: "Temperature",
|
||||||
|
@ -25,6 +25,7 @@ from homeassistant.util import dt
|
|||||||
from .const import (
|
from .const import (
|
||||||
ATTR_API_CLOUDS,
|
ATTR_API_CLOUDS,
|
||||||
ATTR_API_CONDITION,
|
ATTR_API_CONDITION,
|
||||||
|
ATTR_API_DEW_POINT,
|
||||||
ATTR_API_FEELS_LIKE_TEMPERATURE,
|
ATTR_API_FEELS_LIKE_TEMPERATURE,
|
||||||
ATTR_API_FORECAST,
|
ATTR_API_FORECAST,
|
||||||
ATTR_API_HUMIDITY,
|
ATTR_API_HUMIDITY,
|
||||||
@ -32,6 +33,7 @@ from .const import (
|
|||||||
ATTR_API_RAIN,
|
ATTR_API_RAIN,
|
||||||
ATTR_API_SNOW,
|
ATTR_API_SNOW,
|
||||||
ATTR_API_TEMPERATURE,
|
ATTR_API_TEMPERATURE,
|
||||||
|
ATTR_API_UV_INDEX,
|
||||||
ATTR_API_WEATHER,
|
ATTR_API_WEATHER,
|
||||||
ATTR_API_WEATHER_CODE,
|
ATTR_API_WEATHER_CODE,
|
||||||
ATTR_API_WIND_BEARING,
|
ATTR_API_WIND_BEARING,
|
||||||
@ -119,6 +121,7 @@ class WeatherUpdateCoordinator(DataUpdateCoordinator):
|
|||||||
ATTR_API_FEELS_LIKE_TEMPERATURE: current_weather.temperature("celsius").get(
|
ATTR_API_FEELS_LIKE_TEMPERATURE: current_weather.temperature("celsius").get(
|
||||||
"feels_like"
|
"feels_like"
|
||||||
),
|
),
|
||||||
|
ATTR_API_DEW_POINT: (round(current_weather.dewpoint / 100, 1)),
|
||||||
ATTR_API_PRESSURE: current_weather.pressure.get("press"),
|
ATTR_API_PRESSURE: current_weather.pressure.get("press"),
|
||||||
ATTR_API_HUMIDITY: current_weather.humidity,
|
ATTR_API_HUMIDITY: current_weather.humidity,
|
||||||
ATTR_API_WIND_BEARING: current_weather.wind().get("deg"),
|
ATTR_API_WIND_BEARING: current_weather.wind().get("deg"),
|
||||||
@ -128,6 +131,7 @@ class WeatherUpdateCoordinator(DataUpdateCoordinator):
|
|||||||
ATTR_API_SNOW: self._get_snow(current_weather.snow),
|
ATTR_API_SNOW: self._get_snow(current_weather.snow),
|
||||||
ATTR_API_WEATHER: current_weather.detailed_status,
|
ATTR_API_WEATHER: current_weather.detailed_status,
|
||||||
ATTR_API_CONDITION: self._get_condition(current_weather.weather_code),
|
ATTR_API_CONDITION: self._get_condition(current_weather.weather_code),
|
||||||
|
ATTR_API_UV_INDEX: current_weather.uvi,
|
||||||
ATTR_API_WEATHER_CODE: current_weather.weather_code,
|
ATTR_API_WEATHER_CODE: current_weather.weather_code,
|
||||||
ATTR_API_FORECAST: forecast_weather,
|
ATTR_API_FORECAST: forecast_weather,
|
||||||
}
|
}
|
||||||
@ -151,7 +155,7 @@ class WeatherUpdateCoordinator(DataUpdateCoordinator):
|
|||||||
entry.rain, entry.snow
|
entry.rain, entry.snow
|
||||||
),
|
),
|
||||||
ATTR_FORECAST_PRECIPITATION_PROBABILITY: (
|
ATTR_FORECAST_PRECIPITATION_PROBABILITY: (
|
||||||
entry.precipitation_probability * 100
|
round(entry.precipitation_probability * 100)
|
||||||
),
|
),
|
||||||
ATTR_FORECAST_PRESSURE: entry.pressure.get("press"),
|
ATTR_FORECAST_PRESSURE: entry.pressure.get("press"),
|
||||||
ATTR_FORECAST_WIND_SPEED: entry.wind().get("speed"),
|
ATTR_FORECAST_WIND_SPEED: entry.wind().get("speed"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user