Source code for libdeye.const

"""Constants for the Deye Cloud API."""

from enum import IntEnum
from typing import TypedDict

DEYE_API_END_USER_ENDPOINT = "https://api.deye.com.cn/v3/enduser"
DEYE_LOGIN_PARAM_APP_ID = "a774310e-a430-11e7-9d4c-00163e0c1b21"
DEYE_LOGIN_PARAM_EXTEND = '{"cid":"63d5b0df098443db906f857003f29d12","type":"1"}'
QUERY_DEVICE_STATE_COMMAND_CLASSIC = b"\x00\x01"


[docs] class DeyeDeviceMode(IntEnum): """All supported mode""" MANUAL_MODE = 0 CLOTHES_DRYER_MODE = 1 AIR_PURIFIER_MODE = 2 AUTO_MODE = 3 UNKNOWN_MODE = 4 UNKNOWN_MODE_2 = 5 SLEEP_MODE = 6
[docs] class DeyeFanSpeed(IntEnum): """All supported fan speed""" STOPPED = 0 LOW = 1 MIDDLE = 2 HIGH = 3 FULL = 4
[docs] class DeyeProductConfig(TypedDict): """Feature config for a specific Deye product""" mode: list[DeyeDeviceMode] fan_speed: list[DeyeFanSpeed] min_target_humidity: int max_target_humidity: int anion: bool oscillating: bool water_pump: bool
[docs] class DeyeProductPartialConfig(TypedDict, total=False): """Feature config for a specific Deye product (partial)""" mode: list[DeyeDeviceMode] fan_speed: list[DeyeFanSpeed] min_target_humidity: int max_target_humidity: int anion: bool oscillating: bool water_pump: bool
PRODUCT_FEATURE_CONFIG: dict[str, DeyeProductPartialConfig] = { "07dddba41c3011e8829100163e0f811e": { # 612S "mode": [], "fan_speed": [DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH], "oscillating": False, "water_pump": False, }, "441480dcf29611eca05a0242ac480009": { # 8220C "mode": [DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.AUTO_MODE], "fan_speed": [DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH], "max_target_humidity": 90, "anion": False, "oscillating": False, "water_pump": False, }, "e69a5f54983f11ec964d0242ac480009": { # B12A3 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, DeyeDeviceMode.AIR_PURIFIER_MODE, DeyeDeviceMode.SLEEP_MODE, ], "min_target_humidity": 30, "max_target_humidity": 80, "fan_speed": [], "oscillating": False, "water_pump": False, }, "c56f9e0c7d2b11e9829100163e0f811e": { # D50A3 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, DeyeDeviceMode.SLEEP_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.MIDDLE, DeyeFanSpeed.HIGH, ], "anion": False, "oscillating": False, "water_pump": False, }, "86cec9fc5c9811e8829100163e0f811e": { # D50B3 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.MIDDLE, DeyeFanSpeed.HIGH, ], "anion": False, "oscillating": False, }, "c2c2d92c049f11e8829100163e0f811e": { # E12A3 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, ], "fan_speed": [], "anion": False, "oscillating": False, "water_pump": False, }, "8d52bc78f38511e89d4c00163e0c1b21": { # G25A3 "mode": [], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "anion": False, "water_pump": False, }, "a3850ae49ea511e89d4c00163e0c1b21": { # N20A3 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, DeyeDeviceMode.AUTO_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.MIDDLE, DeyeFanSpeed.HIGH, ], "min_target_humidity": 30, "max_target_humidity": 70, "oscillating": False, "water_pump": False, }, "5ea0feae4b1111ebb73c0242ac480009": { # L48A3 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "anion": False, "oscillating": False, "water_pump": False, }, "2c4bd0861c3011e89d4c00163e0c1b21": { # T22A3 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, DeyeDeviceMode.AIR_PURIFIER_MODE, DeyeDeviceMode.AUTO_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.MIDDLE, DeyeFanSpeed.HIGH, ], "oscillating": False, "water_pump": False, }, "6f97c340a43011e7829100163e0f811e": { # TM208FC "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, DeyeDeviceMode.AIR_PURIFIER_MODE, DeyeDeviceMode.AUTO_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "oscillating": False, "water_pump": False, }, "20eae2ea268511e8829100163e0f811e": { # U20A3 "oscillating": False, "water_pump": False, }, "363b686a31ee11efb7203b3cd9717242": { # U20Air "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, DeyeDeviceMode.SLEEP_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "oscillating": False, "water_pump": False, }, "2b770cba268611e89d4c00163e0c1b21": { # V58A3 "oscillating": False, "water_pump": False, }, "17ab051af38611e89d4c00163e0c1b21": { # W20A3 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "anion": False, "oscillating": False, "water_pump": False, }, "06e8c86cca0811e99d4c00163e0c1b21": { # W20A3-京鱼座 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "anion": False, "oscillating": False, "water_pump": False, }, "d74ab1167d9f11e8829100163e0f811e": { # X20A3 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, DeyeDeviceMode.AUTO_MODE, DeyeDeviceMode.SLEEP_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.MIDDLE, DeyeFanSpeed.HIGH, ], "oscillating": False, "water_pump": False, }, "ff71de22187111e99d4c00163e0c1b21": { # Z12A3 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "anion": False, "oscillating": False, "water_pump": False, }, "1b351ce6187211e99d4c00163e0c1b21": { # Z20B3 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "anion": False, "oscillating": False, "water_pump": False, }, "82547192d2a811e99d4c00163e0c1b21": { # Z20B3-天猫精灵 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "anion": False, "oscillating": False, "water_pump": False, }, "32c309aa779011ed8cf00242ac480009": { # 890C "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.AUTO_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "max_target_humidity": 90, "anion": False, "oscillating": False, "water_pump": False, }, "764c37606bc711eea9b10242ac480009": { # 890T "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.AUTO_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "max_target_humidity": 90, "anion": False, "oscillating": False, "water_pump": False, }, "edd9a010778f11ed97500242ac480009": { # 6138A "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.AUTO_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "max_target_humidity": 90, "anion": False, "oscillating": False, "water_pump": False, }, "246e3b9a779011ed9a5f0242ac480009": { # 8138C "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.AUTO_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "max_target_humidity": 90, "anion": False, "oscillating": False, "water_pump": False, }, "5b0033e0f65411ee880a0242ac480009": { # 8158C "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.AUTO_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "max_target_humidity": 90, "anion": False, "oscillating": False, "water_pump": False, }, "be47762e6bc711eea54d0242ac480009": { # 8158T "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.AUTO_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "max_target_humidity": 90, "anion": False, "oscillating": False, "water_pump": False, }, "db6707b2268911e8829100163e0f811e": { # S12A3 "mode": [], "fan_speed": [DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH], "oscillating": False, "water_pump": False, }, "775bd87e9bfc11eb9b040242ac480009": { # 620S "mode": [], "fan_speed": [DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH], "oscillating": False, "water_pump": False, }, "720618be0e4e11e99d4c00163e0c1b21": { # F20C3 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, DeyeDeviceMode.AIR_PURIFIER_MODE, DeyeDeviceMode.AUTO_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "oscillating": False, "water_pump": False, }, "b767729a234e11e8829100163e0f811e": { # JD121EC "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, ], "fan_speed": [], "anion": False, "oscillating": False, "water_pump": False, }, "fcda68cc6a1211e8829100163e0f811e": { # JD201FC "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, DeyeDeviceMode.AIR_PURIFIER_MODE, DeyeDeviceMode.AUTO_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "oscillating": False, "water_pump": False, }, "0c44950cc8b811efaf1d0242ac480009": { # Y16A3 "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, DeyeDeviceMode.AIR_PURIFIER_MODE, DeyeDeviceMode.AUTO_MODE, DeyeDeviceMode.SLEEP_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "oscillating": False, "water_pump": False, }, "a83dfb084b4211f08c060242ac480009": { # SC60Y "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, DeyeDeviceMode.AIR_PURIFIER_MODE, DeyeDeviceMode.AUTO_MODE, DeyeDeviceMode.SLEEP_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.HIGH, ], "oscillating": False, "water_pump": False, }, }
[docs] def get_product_feature_config(product_id: str) -> DeyeProductConfig: """Get supported features of the product""" default: DeyeProductConfig = { "mode": [ DeyeDeviceMode.MANUAL_MODE, DeyeDeviceMode.CLOTHES_DRYER_MODE, DeyeDeviceMode.AIR_PURIFIER_MODE, DeyeDeviceMode.AUTO_MODE, DeyeDeviceMode.SLEEP_MODE, ], "fan_speed": [ DeyeFanSpeed.LOW, DeyeFanSpeed.MIDDLE, DeyeFanSpeed.HIGH, DeyeFanSpeed.FULL, ], "min_target_humidity": 25, "max_target_humidity": 80, "anion": True, "oscillating": True, "water_pump": True, } try: return default | PRODUCT_FEATURE_CONFIG[product_id] except KeyError: return default