diff --git a/addons/airsend/hassapi.class.php b/addons/airsend/hassapi.class.php index a0ef282..1d803c9 100644 --- a/addons/airsend/hassapi.class.php +++ b/addons/airsend/hassapi.class.php @@ -300,7 +300,39 @@ class HassAPI{ } } - public function loadStates() { + public function loadStatesForSync() { + $ret = false; + if($this->states){ + $ret = true; + }else{ + if($this->isAuthorized()){ + $loaded = false; + $data_age = @(time() - filemtime('states.json')); + if($data_age > 100){ + $this->states_get_cache(); + } + $data = @file_get_contents('states.json'); + if(isset($data)){ + $this->states = json_decode($data, true); + if($this->states){ + foreach ($this->states as &$value) { + $h = str_split(hash('sha256', $value['entity_id']),12)[0]; + $val = intval($h, 16); + $value['entity_uid_sha256'] = $val; + } + $loaded = true; + $ret = true; + } + } + if($loaded == false){ + trigger_error("API GET states wrong response", E_USER_ERROR); + } + } + } + return $this->states; + } + + Private function loadStates() { $ret = false; if($this->states){ $ret = true; diff --git a/addons/airsend/sync_hass_states.php b/addons/airsend/sync_hass_states.php index 18f9bc1..08095cb 100644 --- a/addons/airsend/sync_hass_states.php +++ b/addons/airsend/sync_hass_states.php @@ -25,7 +25,7 @@ $api = new HassAPI($HASS_API_URL, $HASS_API_TOKEN, $auto_include); if ($api->isAuthorized()) { // On récupère la liste des entités que Home Assistant connaît // Cela nous sert de "liste de courses" pour savoir ce qu'on doit mettre à jour. - $all_entities = $api->loadStates(); + $all_entities = $api->loadStatesForSync(); foreach ($all_entities as $entity_data) { $id = $entity_data['entity_id'];