Exemple #1
0
    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)
Exemple #2
0
 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)
Exemple #3
0
    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)
Exemple #4
0
    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)
Exemple #5
0
    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)