def get_details(self) -> None: """Build Core200S/300S Purifier details dictionary.""" head = Helpers.bypass_header() body = Helpers.bypass_body_v2(self.manager) body['cid'] = self.cid body['configModule'] = self.config_module body['payload'] = { 'method': 'getPurifierStatus', 'source': 'APP', 'data': {} } r, _ = Helpers.call_api( '/cloud/v2/deviceManaged/bypassV2', method='post', headers=head, json=body, ) outer_result = r.get('result', {}) inner_result = None if outer_result: inner_result = r.get('result', {}).get('result') if inner_result is not None and Helpers.code_check(r): if outer_result.get('code') == 0: self.build_purifier_dict(inner_result) else: logger.debug('error in inner result dict from purifier') if inner_result.get('configuration', {}): self.build_config_dict(inner_result.get('configuration', {})) else: logger.debug('No configuration found in purifier status') else: logger.debug('Error in purifier response')
def toggle_switch(self, toggle: bool) -> bool: """Toggle purifier on/off.""" if not isinstance(toggle, bool): logger.debug('Invalid toggle value for purifier switch') return False head = Helpers.bypass_header() body = Helpers.bypass_body_v2(self.manager) body['cid'] = self.cid body['configModule'] = self.config_module body['payload'] = { 'data': { 'enabled': toggle, 'id': 0 }, 'method': 'setSwitch', 'source': 'APP' } r, _ = Helpers.call_api( '/cloud/v2/deviceManaged/bypassV2', method='post', headers=head, json=body, ) if Helpers.code_check(r): return True logger.debug("Error toggling Core200S/300S purifier - %s", self.device_name) return False
def build_api_dict(self, method: str) -> Tuple[Dict, Dict]: """Build humidifier api call header and body. Available methods are: 'getHumidifierStatus', 'setAutomaticStop', 'setSwitch', 'setNightLightBrightness', 'setVirtualLevel', 'setTargetHumidity', 'setHumidityMode' """ if method not in self._api_modes: logger.debug('Invalid mode - %s', method) raise ValueError head = Helpers.bypass_header() body = Helpers.bypass_body_v2(self.manager) body['cid'] = self.cid body['configModule'] = self.config_module body['payload'] = {'method': method, 'source': 'APP'} return head, body
def __build_api_dict(self, method: str) -> Tuple[Dict, Dict]: """Build Core200S/300S api call header and body. Available methods are: 'getPurifierStatus', 'setSwitch', 'setNightLight', 'setLevel', 'setDisplay' 'setPurifierMode', 'setChildLock' """ modes = [ 'getPurifierStatus', 'setSwitch', 'setNightLight', 'setLevel', 'setPurifierMode', 'setDisplay', 'setChildLock' ] if method not in modes: logger.debug('Invalid mode - %s', method) return {}, {} head = Helpers.bypass_header() body = Helpers.bypass_body_v2(self.manager) body['cid'] = self.cid body['configModule'] = self.config_module body['payload'] = {'method': method, 'source': 'APP'} return head, body
def build_api_dict(self, method: str) -> Tuple[Dict, Dict]: """Build device api body dictionary. standard modes are: ['getPurifierStatus', 'setSwitch', 'setNightLight', 'setLevel', 'setPurifierMode', 'setDisplay', 'setChildLock'] """ modes = [ 'getPurifierStatus', 'setSwitch', 'setNightLight', 'setLevel', 'setPurifierMode', 'setDisplay', 'setChildLock', 'setIndicatorLight' ] if method not in modes: logger.debug('Invalid mode - %s', method) return {}, {} head = Helpers.bypass_header() body = Helpers.bypass_body_v2(self.manager) body['cid'] = self.cid body['configModule'] = self.config_module body['payload'] = {'method': method, 'source': 'APP'} return head, body
def get_details(self) -> None: """Build 200S/300S Humidifier details dictionary.""" head = Helpers.bypass_header() body = Helpers.bypass_body_v2(self.manager) body['cid'] = self.cid body['configModule'] = self.config_module body['payload'] = { 'method': 'getHumidifierStatus', 'source': 'APP', 'data': {} } r, _ = Helpers.call_api( '/cloud/v2/deviceManaged/bypassV2', method='post', headers=head, json_object=body, ) if r is None or not isinstance(r, dict): logger.debug("Error getting status of %s ", self.device_name) return outer_result = r.get('result', {}) inner_result = None if outer_result is not None: inner_result = r.get('result', {}).get('result') if inner_result is not None and Helpers.code_check(r): if outer_result.get('code') == 0: self.build_humid_dict(inner_result) else: logger.debug('error in inner result dict from humidifier') if inner_result.get('configuration', {}): self.build_config_dict(inner_result.get('configuration', {})) else: logger.debug('No configuration found in humidifier status') else: logger.debug('Error in humidifier response')