【0.65.6】HomeAssistant Sensor數據變更機制解讀
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群:429305910 進行探討與交流 , 文章來源於HAChina中文網 的作者@繁星
推薦閱讀:
※海爾智慧家庭獲首張「國際通行證」,開拓智慧生活新時代
※智能安防產品,以視頻監控為例,如何能做出產品亮點來?
※國外的智能家居的具體情況是怎樣的?
※怎麼評價谷歌發布的Google Home Mini?
※新年展望