wyzeapy.services.switch_service API documentation

# wyzeapy.services.switch_service

View Source

     1#  Copyright (c) 2021. Mulliken, LLC - All Rights Reserved
     2#  You may use, distribute and modify this code under the terms
     3#  of the attached license. You should have received a copy of
     4#  the license with this file. If not, please write to:
     5#  katie@mulliken.net to receive a copy
     6from typing import List, Dict, Any
     7
     8from .base_service import BaseService
     9from ..types import Device, DeviceTypes, PropertyIDs
    10from datetime import timedelta, datetime
    11
    12
    13class Switch(Device):
    14    def __init__(self, dictionary: Dict[Any, Any]):
    15        super().__init__(dictionary)
    16        self.on: bool = False
    17
    18
    19class SwitchService(BaseService):
    20    async def update(self, switch: Switch):
    21        # Get updated device_params
    22        async with BaseService._update_lock:
    23            switch.device_params = await self.get_updated_params(switch.mac)
    24
    25        device_info = await self._get_property_list(switch)
    26
    27        for property_id, value in device_info:
    28            if property_id == PropertyIDs.ON:
    29                switch.on = value == "1"
    30            elif property_id == PropertyIDs.AVAILABLE:
    31                switch.available = value == "1"
    32
    33        return switch
    34
    35    async def get_switches(self) -> List[Switch]:
    36        if self._devices is None:
    37            self._devices = await self.get_object_list()
    38
    39        devices = [device for device in self._devices if device.type is DeviceTypes.PLUG or
    40                   device.type is DeviceTypes.OUTDOOR_PLUG]
    41        return [Switch(switch.raw_dict) for switch in devices]
    42
    43    async def turn_on(self, switch: Switch):
    44        await self._set_property(switch, PropertyIDs.ON.value, "1")
    45
    46    async def turn_off(self, switch: Switch):
    47        await self._set_property(switch, PropertyIDs.ON.value, "0")
    48
    49
    50class SwitchUsageService(SwitchService):
    51    """Class to retrieve the last 25 hours of usage data."""
    52
    53    async def update(self, device: Device):
    54        start_time = int(
    55            datetime.timestamp((datetime.now() - timedelta(hours=25))) * 1000
    56        )
    57        end_time = int(datetime.timestamp(datetime.now()) * 1000)
    58
    59        device.usage_history = await self._get_plug_history(
    60            device, start_time, end_time
    61        )
    62
    63        return device

class Switch(wyzeapy.types.Device): View Source

    14class Switch(Device):
    15    def __init__(self, dictionary: Dict[Any, Any]):
    16        super().__init__(dictionary)
    17        self.on: bool = False

Switch(dictionary: Dict[Any, Any]) View Source

    15    def __init__(self, dictionary: Dict[Any, Any]):
    16        super().__init__(dictionary)
    17        self.on: bool = False

on: bool

##### Inherited Members

wyzeapy.types.Device
  product_type
  product_model
  mac
  nickname
  device_params
  raw_dict
  callback_function
  available
  type

class SwitchService(wyzeapy.services.base_service.BaseService): View Source

    20class SwitchService(BaseService):
    21    async def update(self, switch: Switch):
    22        # Get updated device_params
    23        async with BaseService._update_lock:
    24            switch.device_params = await self.get_updated_params(switch.mac)
    25
    26        device_info = await self._get_property_list(switch)
    27
    28        for property_id, value in device_info:
    29            if property_id == PropertyIDs.ON:
    30                switch.on = value == "1"
    31            elif property_id == PropertyIDs.AVAILABLE:
    32                switch.available = value == "1"
    33
    34        return switch
    35
    36    async def get_switches(self) -> List[Switch]:
    37        if self._devices is None:
    38            self._devices = await self.get_object_list()
    39
    40        devices = [device for device in self._devices if device.type is DeviceTypes.PLUG or
    41                   device.type is DeviceTypes.OUTDOOR_PLUG]
    42        return [Switch(switch.raw_dict) for switch in devices]
    43
    44    async def turn_on(self, switch: Switch):
    45        await self._set_property(switch, PropertyIDs.ON.value, "1")
    46
    47    async def turn_off(self, switch: Switch):
    48        await self._set_property(switch, PropertyIDs.ON.value, "0")

Base service class for interacting with Wyze devices.

async def update(self, switch: Switch): View Source

    21    async def update(self, switch: Switch):
    22        # Get updated device_params
    23        async with BaseService._update_lock:
    24            switch.device_params = await self.get_updated_params(switch.mac)
    25
    26        device_info = await self._get_property_list(switch)
    27
    28        for property_id, value in device_info:
    29            if property_id == PropertyIDs.ON:
    30                switch.on = value == "1"
    31            elif property_id == PropertyIDs.AVAILABLE:
    32                switch.available = value == "1"
    33
    34        return switch

async def get_switches(self) -> List[Switch]: View Source

    36    async def get_switches(self) -> List[Switch]:
    37        if self._devices is None:
    38            self._devices = await self.get_object_list()
    39
    40        devices = [device for device in self._devices if device.type is DeviceTypes.PLUG or
    41                   device.type is DeviceTypes.OUTDOOR_PLUG]
    42        return [Switch(switch.raw_dict) for switch in devices]

async def turn_on(self, switch: Switch): View Source

    44    async def turn_on(self, switch: Switch):
    45        await self._set_property(switch, PropertyIDs.ON.value, "1")

async def turn_off(self, switch: Switch): View Source

    47    async def turn_off(self, switch: Switch):
    48        await self._set_property(switch, PropertyIDs.ON.value, "0")

##### Inherited Members

wyzeapy.services.base_service.BaseService
  BaseService
  start_update_manager
  register_updater
  unregister_updater
  set_push_info
  get_user_profile
  get_object_list
  get_updated_params

class SwitchUsageService(SwitchService): View Source

    51class SwitchUsageService(SwitchService):
    52    """Class to retrieve the last 25 hours of usage data."""
    53
    54    async def update(self, device: Device):
    55        start_time = int(
    56            datetime.timestamp((datetime.now() - timedelta(hours=25))) * 1000
    57        )
    58        end_time = int(datetime.timestamp(datetime.now()) * 1000)
    59
    60        device.usage_history = await self._get_plug_history(
    61            device, start_time, end_time
    62        )
    63
    64        return device

Class to retrieve the last 25 hours of usage data.

async def update(self, device: wyzeapy.types.Device): View Source

    54    async def update(self, device: Device):
    55        start_time = int(
    56            datetime.timestamp((datetime.now() - timedelta(hours=25))) * 1000
    57        )
    58        end_time = int(datetime.timestamp(datetime.now()) * 1000)
    59
    60        device.usage_history = await self._get_plug_history(
    61            device, start_time, end_time
    62        )
    63
    64        return device

##### Inherited Members

wyzeapy.services.base_service.BaseService
  BaseService
  start_update_manager
  register_updater
  unregister_updater
  set_push_info
  get_user_profile
  get_object_list
  get_updated_params
SwitchService
  get_switches
  turn_on
  turn_off