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中文网的作者@繁星