HA插件更新机制
分析起因是在hachina.io发布的和风天气组件在更新到0.65.6版本,群友会发现数据不能自动更新,但是在每次重启的时候会拉去数据,所以我们对HomeAssistant Sensor数据变更机制进行了挖掘
方式1
以和风天气为实例
计时方式: TIME_BETWEEN_UPDATES = timedelta(seconds=1800)
首先导入 from homeassistant.util import Throttle
在 WeatherData
类中的update
函数中加入装饰器 @Throttle(TIME_BETWEEN_UPDATES)
class WeatherData(object):
@Throttle(TIME_BETWEEN_UPDATES)
def update(self):
pass
在 HeWeatherSensor
类中的update
函数中调用Data类中的更新函数
class HeWeatherSensor(Entity):
def update(self):
self._data.update()
self._updatetime = self._data.updatetime
平台设置内传入参数,下同
def setup_platform(hass, config, add_devices, discovery_info=None):
_LOGGER.info("Setup platform sensor.HeWeather")
city = config.get(CONF_CITY)
appkey = config.get(CONF_APPKEY)
aqi_city = config.get(CONF_AQI_CITY)
data = WeatherData(hass, city, appkey, aqi_city)
dev = []
for option in config[CONF_OPTIONS]:
dev.append(HeWeatherSensor(data, option))
add_devices(dev, True)
方式2
在Data类中 调用Throttle
函数
class Data(object):
"""Get the latest data from Darksky."""
def __init__(self, **args):
self.update = Throttle(interval)(self._update)
def _update(self):
# 更新操作
pass
然后在实体类中调用数据类的更新
class Sensor(Entity):
"""Implementation of a Dark Sky sensor."""
def __init__(self, forecast_data, **args):
self.forecast_data = forecast_data
def update(self):
self.forecast_data.update()
有问题欢迎加入HomeAssistant新手村 QQ群:547853162 探讨与交流,本文来源于HAChina中文网的作者@繁星