天气实体
平台实体派生自homeassistant.components.weather.WeatherEntity。
特性
属性应该始终只从内存返回信息,而不执行 I/O(如网络请求)。实现 update() 或 async_update() 来获取数据。
单位换算
属性必须遵循表中相应测量单位中提到的单位。
对于用户来说,属性将按照单位制呈现。这是通过在创建状态对象时自动转换单位来实现的。
对于每个天气实体,用户还可以选择覆盖表示单位,即状态对象中使用的单位。
状态和条件的推荐值
这些天气状况包含在我们的翻译文件中,并显示相应的图标。
这意味着 weather 平台本身不需要处理语言本地化。
支持的功能
支持的功能通过使用 WeatherEntityFeature 枚举中的值来定义
和 使用按位或 (|) 运算符进行组合。
天气预报
天气平台可以选择提供天气预报。通过设置正确的支持的功能来表明支持天气预报。天气预报不是实体状态的一部分,而是通过单独的 API 提供;前端等消费者可以订阅天气预报更新。
预测数据
预测数据可以是每日、每小时或每日两次。集成可以提供其中任何一个或全部。
集成应实现下面记录的一种或多种异步方法 async_forecast_daily、async_forecast_hourly 和 async_forecast_twice_daily 来获取预测数据。
预测数据需要遵循与属性定义相同的测量单位(如果适用)。
获取天气预报的方法
调用这些方法是为了从 API 获取预测。
更新天气预报
强烈建议天气实体缓存获取的天气预报,以避免不必要的 API 访问。
当更新的天气预报可用时,天气预报缓存应该失效,并且应该等待方法 WeatherEntity.async_update_listeners 来触发将更新的天气预报推送到任何活动订阅者。如果有活动监听器,WeatherEntity.async_update_listeners 将调用相应的 async_forecast_xxx 方法。如果没有活动侦听器,WeatherEntity.async_update_listeners 将不会调用 async_forecast_xxx 的任何方法。

