Skip to main content

天气实体

homeassistant.components.weather.WeatherEntity 派生实体平台

属性

tip

属性应始终仅从内存返回信息,而不执行 I/O(如网络请求)。实现 update()async_update() 来获取数据。

名称类型默认值描述
cloud_coverageintNone当前云层覆盖率(%)。
conditionstring必填当前天气状况。
humidityfloatNone当前湿度(%)。
native_apparent_temperaturefloatNone当前明显的(体感)温度(°C 或 °F)。
native_dew_pointfloatNone当前露点温度(°C 或 °F)。
native_precipitation_unitstringNone降水单位;毫米或英寸。
native_pressurefloatNone当前气压(hPa, mbar, inHg 或 mmHg)。
native_pressure_unitstringNone气压单位;hPa, mbar, inHg 或 mmHg。如果设置了 native_pressure,则为必填。
native_temperaturefloat必填当前温度(°C 或 °F)。
native_temperature_unitstring必填温度单位;°C 或 °F。
native_visibilityfloatNone当前能见度(公里或英里)。
native_visibility_unitstringNone能见度单位;公里或英里。如果设置了 native_visibility,则为必填。
native_wind_gust_speedfloatNone当前风阵速度(米/秒, 公里/小时, 英里/小时, 英尺/秒或节)。
native_wind_speedfloatNone当前风速(米/秒, 公里/小时, 英里/小时, 英尺/秒或节)。
native_wind_speed_unitstringNone风速单位;米/秒, 公里/小时, 英里/小时, 英尺/秒或节。如果设置了 native_wind_speed,则为必填。
ozonefloatNone当前臭氧水平。
uv_indexfloatNone当前的 紫外线指数
wind_bearingfloat 或 stringNone当前风向角度(度)或 1-3 个字母的方位方向。

单位转换

属性必须遵循表中各自的计量单位。

对用户而言,属性将根据单位制进行呈现。这是通过在创建状态对象时自动转换单位来实现的。

对于每个天气实体,用户还可以选择覆盖呈现单位,即状态对象中使用的单位。

状态和条件的推荐值

这些天气条件包含在我们的翻译文件中,并显示对应的图标。

条件描述
clear-night晴朗的夜晚
cloudy多云
exceptional特殊
fog
hail冻雨
lightning闪电/雷暴
lightning-rainy闪电/雷暴和雨
partlycloudy少量云
pouring大雨
rainy
snowy
snowy-rainy雪和雨
sunny晴天
windy
windy-variant风和云

这意味着 weather 平台不需要支持多种语言。

支持的功能

支持的功能通过在 WeatherEntityFeature 枚举中使用值来定义,并使用按位或(|)运算符结合。

描述
FORECAST_DAILY设备支持每日天气预报。
FORECAST_HOURLY设备支持每小时天气预报。
FORECAST_TWICE_DAILY设备支持每日两次的天气预报。

天气预报

天气平台可以选择性地提供天气预报。支持天气预报通过设置正确的 支持特性 来指示。天气预报不是实体状态的一部分,而是通过单独的 API 提供。消费者,例如前端,可以订阅天气预报更新。

预报数据

预报数据可以是每日的、每小时的或每日两次的。一个集成可以提供其中的任何或全部。

集成应实现一个或多个异步方法 async_forecast_dailyasync_forecast_hourlyasync_forecast_twice_daily,如下所述,以获取预报数据。

名称类型默认值描述
datetimestring必填RFC 3339 格式的 UTC 日期时间。
is_daytimeboolNone这是返回的预测数据中必填的,以指示是白天还是夜晚。
cloud_coverageintNone云层覆盖率(%)。
conditionstringNone该时刻的天气状况。
humidityfloatNone湿度(%)。
native_apparent_temperaturefloatNone明显的(体感)温度(°C 或 °F)
native_dew_pointfloatNone露点温度(°C 或 °F)
native_precipitationfloatNone降水量(毫米或英寸)。
native_pressurefloatNone气压(hPa, mbar, inHg 或 mmHg)。
native_temperaturefloat必填较高的温度(°C 或 °F)
native_templowfloatNone较低的日间温度(°C 或 °F)
native_wind_gust_speedintNone风阵速度(米/秒,公里/小时,英里/小时,英尺/秒或节)。
native_wind_speedintNone风速(米/秒,公里/小时,英里/小时,英尺/秒或节)。
precipitation_probabilityintNone降水概率(%)。
uv_indexfloatNone紫外线指数。
wind_bearingfloat 或 stringNone风向的方位角(度)或 1-3 个字母的方位方向。

预报数据需要遵循与属性相同的计量单位,适用时。

获取天气预报的方法

这些方法用于从 API 获取预报。

class MyWeatherEntity(WeatherEntity):
"""表示一个天气实体。"""

async def async_forecast_daily(self) -> list[Forecast] | None:
"""返回以本地单位表示的每日预报。

仅在设置了 `WeatherEntityFeature.FORECAST_DAILY` 时实现此方法
"""

async def async_forecast_twice_daily(self) -> list[Forecast] | None:
"""返回以本地单位表示的每日两次的预报。

仅在设置了 `WeatherEntityFeature.FORECAST_TWICE_DAILY` 时实现此方法
"""

async def async_forecast_hourly(self) -> list[Forecast] | None:
"""返回以本地单位表示的每小时预报。

仅在设置了 `WeatherEntityFeature.FORECAST_HOURLY` 时实现此方法
"""

更新天气预报

强烈建议天气实体缓存获取的天气预报,以避免不必要的 API 访问。

当更新的天气预报可用时,天气预报缓存应被作废,并应等待调用 WeatherEntity.async_update_listeners 方法,以向任何活动订阅者推送更新的天气预报。如果有活动监听器,WeatherEntity.async_update_listeners 将调用相应的 async_forecast_xxx 方法。如果没有活动监听器,WeatherEntity.async_update_listeners 就不会调用任何 async_forecast_xxx 方法。