Skip to content

Commit f10e4fd

Browse files
felipedielmjg59
authored andcommitted
Add models and manufacturers
1 parent e41d240 commit f10e4fd

1 file changed

Lines changed: 82 additions & 56 deletions

File tree

broadlink/__init__.py

Lines changed: 82 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -14,66 +14,90 @@
1414

1515
from .exceptions import check_error, exception
1616

17+
1718
def gendevice(devtype, host, mac, name=None, cloud=None):
1819
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"),
7089
}
7190

7291
# 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:
7595
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
77101

78102

79103
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):
170194
self.devtype = devtype if devtype is not None else 0x272a
171195
self.name = name
172196
self.cloud = cloud
197+
self.model = None
198+
self.manufacturer = None
173199
self.timeout = timeout
174200
self.count = random.randrange(0xffff)
175201
self.iv = bytearray(
@@ -1000,8 +1026,8 @@ class lb1(device):
10001026
'color jumping' : 6,
10011027
'multicolor jumping' : 7 }
10021028

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)
10051031
self.type = "SmartBulb"
10061032

10071033
def send_command(self,command, type = 'set'):

0 commit comments

Comments
 (0)