【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?
新年展望

TAG:智能家居 | 開源項目 | 開源軟體 |