|
14 | 14 |
|
15 | 15 | from .exceptions import check_error, exception |
16 | 16 |
|
| 17 | + |
17 | 18 | def gendevice(devtype, host, mac, name=None, cloud=None): |
18 | 19 | devices = { |
19 | | - sp1: [0], |
20 | | - sp2: [0x2711, # SP2 |
21 | | - 0x2719, 0x7919, 0x271a, 0x791a, # Honeywell SP2 |
22 | | - 0x2720, # SPMini |
23 | | - 0x753e, # SP3 |
24 | | - 0x7D00, # OEM branded SP3 |
25 | | - 0x947a, 0x9479, # SP3S |
26 | | - 0x2728, # SPMini2 |
27 | | - 0x2733, 0x273e, # OEM branded SPMini |
28 | | - 0x7530, 0x7546, 0x7918, # OEM branded SPMini2 |
29 | | - 0x7544, # SP2-CL |
30 | | - 0x7D0D, # TMall OEM SPMini3 |
31 | | - 0x2736 # SPMiniPlus |
32 | | - ], |
33 | | - rm: [0x2712, # RM2 |
34 | | - 0x2737, # RM Mini |
35 | | - 0x273d, # RM Pro Phicomm |
36 | | - 0x2783, # RM2 Home Plus |
37 | | - 0x277c, # RM2 Home Plus GDT |
38 | | - 0x272a, # RM2 Pro Plus |
39 | | - 0x2787, # RM2 Pro Plus2 |
40 | | - 0x279d, # RM2 Pro Plus3 |
41 | | - 0x27a9, # RM2 Pro Plus_300 |
42 | | - 0x278b, # RM2 Pro Plus BL |
43 | | - 0x2797, # RM2 Pro Plus HYC |
44 | | - 0x27a1, # RM2 Pro Plus R1 |
45 | | - 0x27a6, # RM2 Pro PP |
46 | | - 0x278f, # RM Mini Shate |
47 | | - 0x27c2, # RM Mini 3 |
48 | | - 0x27d1, # new RM Mini3 |
49 | | - 0x27de # RM Mini 3 (C) |
50 | | - ], |
51 | | - rm4: [0x51da, # RM4 Mini |
52 | | - 0x5f36, # RM Mini 3 |
53 | | - 0x6026, # RM4 Pro |
54 | | - 0x6070, # RM4c Mini |
55 | | - 0x61a2, # RM4 Pro |
56 | | - 0x610e, # RM4 Mini |
57 | | - 0x610f, # RM4c |
58 | | - 0x62bc, # RM4 Mini |
59 | | - 0x62be # RM4c Mini |
60 | | - ], |
61 | | - a1: [0x2714], # A1 |
62 | | - mp1: [0x4EB5, # MP1 |
63 | | - 0x4EF7 # Honyar oem mp1 |
64 | | - ], |
65 | | - hysen: [0x4EAD], # Hysen controller |
66 | | - S1C: [0x2722], # S1 (SmartOne Alarm Kit) |
67 | | - dooya: [0x4E4D], # Dooya DT360E (DOOYA_CURTAIN_V2) |
68 | | - bg1: [0x51E3], # BG Electrical Smart Power Socket |
69 | | - lb1 : [0x60c8] # RGB Smart Bulb |
| 20 | + 0x0000: (sp1, "SP1", "Broadlink"), |
| 21 | + |
| 22 | + 0x2711: (sp2, "SP2", "Broadlink"), |
| 23 | + 0x2719: (sp2, "SP2-compatible", "Honeywell"), |
| 24 | + 0x271a: (sp2, "SP2-compatible", "Honeywell"), |
| 25 | + 0x2720: (sp2, "SP mini", "Broadlink"), |
| 26 | + 0x2728: (sp2, "SP2-compatible", "URANT"), |
| 27 | + 0x2733: (sp2, "SP3", "Broadlink"), |
| 28 | + 0x2736: (sp2, "SP mini+", "Broadlink"), |
| 29 | + 0x273e: (sp2, "SP mini", "Broadlink"), |
| 30 | + 0x7530: (sp2, "SP2", "Broadlink (OEM)"), |
| 31 | + 0x753e: (sp2, "SP mini 3", "Broadlink"), |
| 32 | + 0X7544: (sp2, "SP2-CL", "Broadlink"), |
| 33 | + 0x7546: (sp2, "SP2-UK/BR/IN", "Broadlink (OEM)"), |
| 34 | + 0x7918: (sp2, "SP2", "Broadlink (OEM)"), |
| 35 | + 0x7919: (sp2, "SP2-compatible", "Honeywell"), |
| 36 | + 0x791a: (sp2, "SP2-compatible", "Honeywell"), |
| 37 | + 0x7d00: (sp2, "SP3-EU", "Broadlink (OEM)"), |
| 38 | + 0x7d0d: (sp2, "SP mini 3", "Broadlink (OEM)"), |
| 39 | + 0x9479: (sp2, "SP3S-US", "Broadlink"), |
| 40 | + 0x947a: (sp2, "SP3S-EU", "Broadlink"), |
| 41 | + |
| 42 | + 0x2712: (rm, "RM pro/pro+", "Broadlink"), |
| 43 | + 0x272a: (rm, "RM pro", "Broadlink"), |
| 44 | + 0x2737: (rm, "RM mini 3", "Broadlink"), |
| 45 | + 0x273d: (rm, "RM pro", "Broadlink"), |
| 46 | + 0x277c: (rm, "RM home", "Broadlink"), |
| 47 | + 0x2783: (rm, "RM home", "Broadlink"), |
| 48 | + 0x2787: (rm, "RM pro", "Broadlink"), |
| 49 | + 0x278b: (rm, "RM plus", "Broadlink"), |
| 50 | + 0x278f: (rm, "RM mini", "Broadlink"), |
| 51 | + 0x2797: (rm, "RM pro+", "Broadlink"), |
| 52 | + 0x279d: (rm, "RM pro+", "Broadlink"), |
| 53 | + 0x27a1: (rm, "RM plus", "Broadlink"), |
| 54 | + 0x27a6: (rm, "RM plus", "Broadlink"), |
| 55 | + 0x27a9: (rm, "RM pro+", "Broadlink"), |
| 56 | + 0x27c2: (rm, "RM mini 3", "Broadlink"), |
| 57 | + 0x27d1: (rm, "RM mini 3", "Broadlink"), |
| 58 | + 0x27de: (rm, "RM mini 3", "Broadlink"), |
| 59 | + |
| 60 | + 0x51da: (rm4, "RM4 mini", "Broadlink"), |
| 61 | + 0x5f36: (rm4, "RM mini", "Broadlink"), |
| 62 | + 0x6026: (rm4, "RM4 pro", "Broadlink"), |
| 63 | + 0x6070: (rm4, "RM4C mini", "Broadlink"), |
| 64 | + 0x610e: (rm4, "RM4 mini", "Broadlink"), |
| 65 | + 0x610f: (rm4, "RM4C mini", "Broadlink"), |
| 66 | + 0x61a2: (rm4, "RM4 pro", "Broadlink"), |
| 67 | + 0x62bc: (rm4, "RM4 mini", "Broadlink"), |
| 68 | + 0x62be: (rm4, "RM4C mini", "Broadlink"), |
| 69 | + |
| 70 | + 0x2714: (a1, "e-Sensor", "Broadlink"), |
| 71 | + |
| 72 | + 0x4eb5: (mp1, "MP1-1K4S", "Broadlink"), |
| 73 | + 0x4ef7: (mp1, "MP1-1K4S", "Broadlink (OEM)"), |
| 74 | + 0x4f65: (mp1, "MP1-1K3S2U", "Broadlink"), |
| 75 | + |
| 76 | + 0x5043: (lb1, "SB800TD", "Broadlink (OEM)"), |
| 77 | + 0x504e: (lb1, "LB1", "Broadlink"), |
| 78 | + 0x60c7: (lb1, "LB1", "Broadlink"), |
| 79 | + 0x60c8: (lb1, "LB1", "Broadlink"), |
| 80 | + 0x6112: (lb1, "LB1", "Broadlink"), |
| 81 | + |
| 82 | + 0x2722: (S1C, "S2KIT", "Broadlink"), |
| 83 | + |
| 84 | + 0x4ead: (hysen, "HY02B05H", "Hysen"), |
| 85 | + |
| 86 | + 0x4e4d: (dooya, "DT360E-45/20", "Dooya"), |
| 87 | + |
| 88 | + 0x51e3: (bg1, "BG800/BG900", "BG Electrical"), |
70 | 89 | } |
71 | 90 |
|
72 | 91 | # Look for the class associated to devtype in devices |
73 | | - [device_class] = [dev for dev in devices if devtype in devices[dev]] or [None] |
74 | | - if device_class is None: |
| 92 | + try: |
| 93 | + dev_class, model, manufacturer = devices[devtype] |
| 94 | + except KeyError: |
75 | 95 | return device(host, mac, devtype, name=name, cloud=cloud) |
76 | | - return device_class(host, mac, devtype, name=name, cloud=cloud) |
| 96 | + |
| 97 | + dev = dev_class(host, mac, devtype, name=name, cloud=cloud) |
| 98 | + dev.model = model |
| 99 | + dev.manufacturer = manufacturer |
| 100 | + return dev |
77 | 101 |
|
78 | 102 |
|
79 | 103 | def discover(timeout=None, local_ip_address=None, discover_ip_address='255.255.255.255'): |
@@ -170,6 +194,8 @@ def __init__(self, host, mac, devtype, timeout=10, name=None, cloud=None): |
170 | 194 | self.devtype = devtype if devtype is not None else 0x272a |
171 | 195 | self.name = name |
172 | 196 | self.cloud = cloud |
| 197 | + self.model = None |
| 198 | + self.manufacturer = None |
173 | 199 | self.timeout = timeout |
174 | 200 | self.count = random.randrange(0xffff) |
175 | 201 | self.iv = bytearray( |
@@ -1000,8 +1026,8 @@ class lb1(device): |
1000 | 1026 | 'color jumping' : 6, |
1001 | 1027 | 'multicolor jumping' : 7 } |
1002 | 1028 |
|
1003 | | - def __init__(self, host, mac, devtype): |
1004 | | - device.__init__(self, host, mac, devtype) |
| 1029 | + def __init__(self, *args, **kwargs): |
| 1030 | + device.__init__(self, *args, **kwargs) |
1005 | 1031 | self.type = "SmartBulb" |
1006 | 1032 |
|
1007 | 1033 | def send_command(self,command, type = 'set'): |
|
0 commit comments