def get_event_list(self, *, device_ids: Sequence[str] = [], event_values: Union[EventAlarmType, Sequence[EventAlarmType]] = [], event_tags: Sequence[str] = [], event_type: str = "1", begin: Optional[datetime] = None, end: Optional[datetime] = None, limit: int = 20, order_by: int = 2, **kwargs) -> WyzeResponse: SV_GET_EVENT_LIST = 'bdcb412e230049c0be0916e75022d3f3' if limit < 1 or limit > 20: raise WyzeRequestError(f"limit {limit} must be between 1 and 20") if order_by not in [1, 2]: raise WyzeRequestError(f"order_by {order_by} must be one of {[1, 2]}") if begin is None: begin = datetime.now() - timedelta(days=1) if end is None: end = datetime.now() if isinstance(event_values, (list, Tuple)): kwargs.update({ "event_value_list": [code for alarm_type in event_values for code in alarm_type.codes] }) else: kwargs.update({"event_value_list": [code for code in event_values.codes]}) kwargs.update({ "device_mac_list": device_ids, 'begin_time': datetime_to_epoch(begin), "event_tag_list": event_tags, "event_type": event_type, 'end_time': datetime_to_epoch(end), 'order_by': order_by, 'count': limit, "sv": SV_GET_EVENT_LIST, }) return self.api_call('/app/v2/device/get_event_list', json=kwargs)
def get_family_record_count(self, *, uuid: str, begin: datetime, end: Optional[datetime] = None, **kwargs) -> FordResponse: """ See: com.yunding.ford.manager.NetLockManager.getFamilyRecordCount """ kwargs.update({'uuid': uuid, 'begin': str(datetime_to_epoch(begin))}) if end is not None: kwargs.update({'end': datetime_to_epoch(end)}) return self.api_call('/openapi/v1/safety/count', params=kwargs)
def get_records(self, *, user_id: Optional[str] = None, start_time: datetime, end_time: datetime, **kwargs) -> WyzeResponse: """ Get a range of records from the user's profile. See: com.wyze.ihealth.d.b.i and com.samsung.android.sdk.healthdata.HealthConstants.SessionMeasurement """ if user_id: kwargs.update({'family_member_id': user_id}) kwargs.update({'start_time': str(0), 'end_time': str(datetime_to_epoch(end_time))}) return self.api_call('/plugin/scale/get_record_range', http_verb="GET", params=kwargs)
def get_family_record(self, *, uuid: str, begin: datetime, end: Optional[datetime] = None, offset: int = 0, limit: int = 20, **kwargs) -> FordResponse: """ Gets a reverse chronological list of lock event records. `begin` is the earliest time. See: com.yunding.ford.manager.NetLockManager.getFamilyRecord """ kwargs.update({ 'uuid': uuid, 'begin': str(datetime_to_epoch(begin)), 'offset': str(offset), 'limit': str(limit) }) if end is not None: kwargs.update({'end': str(datetime_to_epoch(end))}) return self.api_call('/openapi/v1/safety/family_record', params=kwargs)
def set_device_timer(self, *, mac: str, delay_time: int, action_value: int, **kwargs) -> WyzeResponse: """ action_value: 0=off, 1=on See: com.HLApi.CloudAPI.CloudProtocol.deviceTimerSet """ SV_SET_DEVICE_TIMER = 'b4810ce03e7747669fdc4644e554fd23' kwargs.update({ "device_mac": mac, "action_type": 1, "action_value": action_value, "delay_time": delay_time, "plan_execute_ts": datetime_to_epoch(datetime.now() + timedelta(seconds=delay_time)), "sv": SV_SET_DEVICE_TIMER }) return self.api_call('/app/v2/device/timer/set', json=kwargs)
def get_sweep_records(self, *, did: str, keys: Union[str, Sequence[str]], limit: int = 20, since: datetime, **kwargs) -> WyzeResponse: # if isinstance(keys, (list, Tuple)): # kwargs.update({"keys": ",".join(keys)}) # else: # kwargs.update({"keys": keys}) kwargs.update({ 'did': did, "purpose": "history_map", "count": limit, "last_time": datetime_to_epoch(since) }) return self.api_call('/plugin/venus/sweep_record/query_data', http_verb="GET", params=kwargs)