Migrate tomorrowio to native_* (#74050)

This commit is contained in:
Erik Montnemery 2022-06-27 20:25:36 +02:00 committed by GitHub
parent 992ceb1a09
commit 5f06404db5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 17 deletions

View File

@ -8,13 +8,13 @@ from pytomorrowio.const import DAILY, FORECASTS, HOURLY, NOWCAST, WeatherCode
from homeassistant.components.weather import ( from homeassistant.components.weather import (
ATTR_FORECAST_CONDITION, ATTR_FORECAST_CONDITION,
ATTR_FORECAST_PRECIPITATION, ATTR_FORECAST_NATIVE_PRECIPITATION,
ATTR_FORECAST_NATIVE_TEMP,
ATTR_FORECAST_NATIVE_TEMP_LOW,
ATTR_FORECAST_NATIVE_WIND_SPEED,
ATTR_FORECAST_PRECIPITATION_PROBABILITY, ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_FORECAST_TEMP,
ATTR_FORECAST_TEMP_LOW,
ATTR_FORECAST_TIME, ATTR_FORECAST_TIME,
ATTR_FORECAST_WIND_BEARING, ATTR_FORECAST_WIND_BEARING,
ATTR_FORECAST_WIND_SPEED,
WeatherEntity, WeatherEntity,
) )
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
@ -74,11 +74,11 @@ async def async_setup_entry(
class TomorrowioWeatherEntity(TomorrowioEntity, WeatherEntity): class TomorrowioWeatherEntity(TomorrowioEntity, WeatherEntity):
"""Entity that talks to Tomorrow.io v4 API to retrieve weather data.""" """Entity that talks to Tomorrow.io v4 API to retrieve weather data."""
_attr_temperature_unit = TEMP_CELSIUS _attr_native_precipitation_unit = LENGTH_MILLIMETERS
_attr_pressure_unit = PRESSURE_HPA _attr_native_pressure_unit = PRESSURE_HPA
_attr_wind_speed_unit = SPEED_METERS_PER_SECOND _attr_native_temperature_unit = TEMP_CELSIUS
_attr_visibility_unit = LENGTH_KILOMETERS _attr_native_visibility_unit = LENGTH_KILOMETERS
_attr_precipitation_unit = LENGTH_MILLIMETERS _attr_native_wind_speed_unit = SPEED_METERS_PER_SECOND
def __init__( def __init__(
self, self,
@ -119,12 +119,12 @@ class TomorrowioWeatherEntity(TomorrowioEntity, WeatherEntity):
data = { data = {
ATTR_FORECAST_TIME: forecast_dt.isoformat(), ATTR_FORECAST_TIME: forecast_dt.isoformat(),
ATTR_FORECAST_CONDITION: translated_condition, ATTR_FORECAST_CONDITION: translated_condition,
ATTR_FORECAST_PRECIPITATION: precipitation, ATTR_FORECAST_NATIVE_PRECIPITATION: precipitation,
ATTR_FORECAST_PRECIPITATION_PROBABILITY: precipitation_probability, ATTR_FORECAST_PRECIPITATION_PROBABILITY: precipitation_probability,
ATTR_FORECAST_TEMP: temp, ATTR_FORECAST_NATIVE_TEMP: temp,
ATTR_FORECAST_TEMP_LOW: temp_low, ATTR_FORECAST_NATIVE_TEMP_LOW: temp_low,
ATTR_FORECAST_WIND_BEARING: wind_direction, ATTR_FORECAST_WIND_BEARING: wind_direction,
ATTR_FORECAST_WIND_SPEED: wind_speed, ATTR_FORECAST_NATIVE_WIND_SPEED: wind_speed,
} }
return {k: v for k, v in data.items() if v is not None} return {k: v for k, v in data.items() if v is not None}
@ -145,12 +145,12 @@ class TomorrowioWeatherEntity(TomorrowioEntity, WeatherEntity):
return CONDITIONS[condition] return CONDITIONS[condition]
@property @property
def temperature(self): def native_temperature(self):
"""Return the platform temperature.""" """Return the platform temperature."""
return self._get_current_property(TMRW_ATTR_TEMPERATURE) return self._get_current_property(TMRW_ATTR_TEMPERATURE)
@property @property
def pressure(self): def native_pressure(self):
"""Return the raw pressure.""" """Return the raw pressure."""
return self._get_current_property(TMRW_ATTR_PRESSURE) return self._get_current_property(TMRW_ATTR_PRESSURE)
@ -160,7 +160,7 @@ class TomorrowioWeatherEntity(TomorrowioEntity, WeatherEntity):
return self._get_current_property(TMRW_ATTR_HUMIDITY) return self._get_current_property(TMRW_ATTR_HUMIDITY)
@property @property
def wind_speed(self): def native_wind_speed(self):
"""Return the raw wind speed.""" """Return the raw wind speed."""
return self._get_current_property(TMRW_ATTR_WIND_SPEED) return self._get_current_property(TMRW_ATTR_WIND_SPEED)
@ -183,7 +183,7 @@ class TomorrowioWeatherEntity(TomorrowioEntity, WeatherEntity):
) )
@property @property
def visibility(self): def native_visibility(self):
"""Return the raw visibility.""" """Return the raw visibility."""
return self._get_current_property(TMRW_ATTR_VISIBILITY) return self._get_current_property(TMRW_ATTR_VISIBILITY)

View File

@ -29,11 +29,16 @@ from homeassistant.components.weather import (
ATTR_FORECAST_WIND_SPEED, ATTR_FORECAST_WIND_SPEED,
ATTR_WEATHER_HUMIDITY, ATTR_WEATHER_HUMIDITY,
ATTR_WEATHER_OZONE, ATTR_WEATHER_OZONE,
ATTR_WEATHER_PRECIPITATION_UNIT,
ATTR_WEATHER_PRESSURE, ATTR_WEATHER_PRESSURE,
ATTR_WEATHER_PRESSURE_UNIT,
ATTR_WEATHER_TEMPERATURE, ATTR_WEATHER_TEMPERATURE,
ATTR_WEATHER_TEMPERATURE_UNIT,
ATTR_WEATHER_VISIBILITY, ATTR_WEATHER_VISIBILITY,
ATTR_WEATHER_VISIBILITY_UNIT,
ATTR_WEATHER_WIND_BEARING, ATTR_WEATHER_WIND_BEARING,
ATTR_WEATHER_WIND_SPEED, ATTR_WEATHER_WIND_SPEED,
ATTR_WEATHER_WIND_SPEED_UNIT,
DOMAIN as WEATHER_DOMAIN, DOMAIN as WEATHER_DOMAIN,
) )
from homeassistant.config_entries import SOURCE_USER from homeassistant.config_entries import SOURCE_USER
@ -104,8 +109,13 @@ async def test_v4_weather(hass: HomeAssistant) -> None:
assert weather_state.attributes[ATTR_FRIENDLY_NAME] == "Tomorrow.io - Daily" assert weather_state.attributes[ATTR_FRIENDLY_NAME] == "Tomorrow.io - Daily"
assert weather_state.attributes[ATTR_WEATHER_HUMIDITY] == 23 assert weather_state.attributes[ATTR_WEATHER_HUMIDITY] == 23
assert weather_state.attributes[ATTR_WEATHER_OZONE] == 46.53 assert weather_state.attributes[ATTR_WEATHER_OZONE] == 46.53
assert weather_state.attributes[ATTR_WEATHER_PRECIPITATION_UNIT] == "mm"
assert weather_state.attributes[ATTR_WEATHER_PRESSURE] == 30.35 assert weather_state.attributes[ATTR_WEATHER_PRESSURE] == 30.35
assert weather_state.attributes[ATTR_WEATHER_PRESSURE_UNIT] == "hPa"
assert weather_state.attributes[ATTR_WEATHER_TEMPERATURE] == 44.1 assert weather_state.attributes[ATTR_WEATHER_TEMPERATURE] == 44.1
assert weather_state.attributes[ATTR_WEATHER_TEMPERATURE_UNIT] == "°C"
assert weather_state.attributes[ATTR_WEATHER_VISIBILITY] == 8.15 assert weather_state.attributes[ATTR_WEATHER_VISIBILITY] == 8.15
assert weather_state.attributes[ATTR_WEATHER_VISIBILITY_UNIT] == "km"
assert weather_state.attributes[ATTR_WEATHER_WIND_BEARING] == 315.14 assert weather_state.attributes[ATTR_WEATHER_WIND_BEARING] == 315.14
assert weather_state.attributes[ATTR_WEATHER_WIND_SPEED] == 33.59 # 9.33 m/s ->km/h assert weather_state.attributes[ATTR_WEATHER_WIND_SPEED] == 33.59 # 9.33 m/s ->km/h
assert weather_state.attributes[ATTR_WEATHER_WIND_SPEED_UNIT] == "km/h"