2020 0x2716 : (sp2 , "NEO PRO" , "Ankuoo" ),
2121 0x2717 : (sp2 , "NEO" , "Ankuoo" ),
2222 0x2719 : (sp2 , "SP2-compatible" , "Honeywell" ),
23- 0x271a : (sp2 , "SP2-compatible" , "Honeywell" ),
23+ 0x271A : (sp2 , "SP2-compatible" , "Honeywell" ),
24+ 0x271D : (sp2 , "Ego" , "Efergy" ),
2425 0x2720 : (sp2 , "SP mini" , "Broadlink" ),
2526 0x2728 : (sp2 , "SP2-compatible" , "URANT" ),
2627 0x2733 : (sp2 , "SP3" , "Broadlink" ),
2728 0x2736 : (sp2 , "SP mini+" , "Broadlink" ),
28- 0x273e : (sp2 , "SP mini" , "Broadlink" ),
29+ 0x273E : (sp2 , "SP mini" , "Broadlink" ),
2930 0x7530 : (sp2 , "SP2" , "Broadlink (OEM)" ),
3031 0x7539 : (sp2 , "SP2-IL" , "Broadlink (OEM)" ),
31- 0x753e : (sp2 , "SP mini 3" , "Broadlink" ),
32+ 0x753E : (sp2 , "SP mini 3" , "Broadlink" ),
3233 0x7540 : (sp2 , "MP2" , "Broadlink" ),
33- 0X7544 : (sp2 , "SP2-CL" , "Broadlink" ),
34+ 0x7544 : (sp2 , "SP2-CL" , "Broadlink" ),
3435 0x7546 : (sp2 , "SP2-UK/BR/IN" , "Broadlink (OEM)" ),
3536 0x7547 : (sp2 , "SC1" , "Broadlink" ),
3637 0x7918 : (sp2 , "SP2" , "Broadlink (OEM)" ),
3738 0x7919 : (sp2 , "SP2-compatible" , "Honeywell" ),
38- 0x791a : (sp2 , "SP2-compatible" , "Honeywell" ),
39- 0x7d00 : (sp2 , "SP3-EU" , "Broadlink (OEM)" ),
40- 0x7d0d : (sp2 , "SP mini 3" , "Broadlink (OEM)" ),
39+ 0x791A : (sp2 , "SP2-compatible" , "Honeywell" ),
40+ 0x7D00 : (sp2 , "SP3-EU" , "Broadlink (OEM)" ),
41+ 0x7D0D : (sp2 , "SP mini 3" , "Broadlink (OEM)" ),
4142 0x9479 : (sp2 , "SP3S-US" , "Broadlink" ),
42- 0x947a : (sp2 , "SP3S-EU" , "Broadlink" ),
43- 0x756c : (sp4 , "SP4M" , "Broadlink" ),
43+ 0x947A : (sp2 , "SP3S-EU" , "Broadlink" ),
44+ 0x756C : (sp4 , "SP4M" , "Broadlink" ),
45+ 0x756F : (sp4 , "MCB1" , "Broadlink" ),
4446 0x7579 : (sp4 , "SP4L-EU" , "Broadlink" ),
4547 0x7583 : (sp4 , "SP mini 3" , "Broadlink" ),
46- 0x7d11 : (sp4 , "SP mini 3" , "Broadlink" ),
47- 0x648b : (sp4b , "SP4M-US" , "Broadlink" ),
48+ 0x7D11 : (sp4 , "SP mini 3" , "Broadlink" ),
49+ 0xA56A : (sp4 , "MCB1" , "Broadlink" ),
50+ 0xA589 : (sp4 , "SP4L-UK" , "Broadlink" ),
51+ 0x5115 : (sp4b , "SCB1E" , "Broadlink" ),
52+ 0x51E2 : (sp4b , "AHC/U-01" , "BG Electrical" ),
53+ 0x6111 : (sp4b , "MCB1" , "Broadlink" ),
54+ 0x6113 : (sp4b , "SCB1E" , "Broadlink" ),
55+ 0x618B : (sp4b , "SP4L-EU" , "Broadlink" ),
56+ 0x6489 : (sp4b , "SP4L-AU" , "Broadlink" ),
57+ 0x648B : (sp4b , "SP4M-US" , "Broadlink" ),
4858 0x2712 : (rm , "RM pro/pro+" , "Broadlink" ),
49- 0x272a : (rm , "RM pro" , "Broadlink" ),
59+ 0x272A : (rm , "RM pro" , "Broadlink" ),
5060 0x2737 : (rm , "RM mini 3" , "Broadlink" ),
51- 0x273d : (rm , "RM pro" , "Broadlink" ),
52- 0x277c : (rm , "RM home" , "Broadlink" ),
61+ 0x273D : (rm , "RM pro" , "Broadlink" ),
62+ 0x277C : (rm , "RM home" , "Broadlink" ),
5363 0x2783 : (rm , "RM home" , "Broadlink" ),
5464 0x2787 : (rm , "RM pro" , "Broadlink" ),
55- 0x278b : (rm , "RM plus" , "Broadlink" ),
56- 0x278f : (rm , "RM mini" , "Broadlink" ),
65+ 0x278B : (rm , "RM plus" , "Broadlink" ),
66+ 0x278F : (rm , "RM mini" , "Broadlink" ),
5767 0x2797 : (rm , "RM pro+" , "Broadlink" ),
58- 0x279d : (rm , "RM pro+" , "Broadlink" ),
59- 0x27a1 : (rm , "RM plus" , "Broadlink" ),
60- 0x27a6 : (rm , "RM plus" , "Broadlink" ),
61- 0x27a9 : (rm , "RM pro+" , "Broadlink" ),
62- 0x27c2 : (rm , "RM mini 3" , "Broadlink" ),
63- 0x27c3 : (rm , "RM pro+" , "Broadlink" ),
64- 0x27c7 : (rm , "RM mini 3" , "Broadlink" ),
65- 0x27cc : (rm , "RM mini 3" , "Broadlink" ),
66- 0x27cd : (rm , "RM mini 3" , "Broadlink" ),
67- 0x27d0 : (rm , "RM mini 3" , "Broadlink" ),
68- 0x27d1 : (rm , "RM mini 3" , "Broadlink" ),
69- 0x27de : (rm , "RM mini 3" , "Broadlink" ),
70- 0x51da : (rm4 , "RM4 mini" , "Broadlink" ),
71- 0x5f36 : (rm4 , "RM mini 3" , "Broadlink" ),
68+ 0x279D : (rm , "RM pro+" , "Broadlink" ),
69+ 0x27A1 : (rm , "RM plus" , "Broadlink" ),
70+ 0x27A6 : (rm , "RM plus" , "Broadlink" ),
71+ 0x27A9 : (rm , "RM pro+" , "Broadlink" ),
72+ 0x27C2 : (rm , "RM mini 3" , "Broadlink" ),
73+ 0x27C3 : (rm , "RM pro+" , "Broadlink" ),
74+ 0x27C7 : (rm , "RM mini 3" , "Broadlink" ),
75+ 0x27CC : (rm , "RM mini 3" , "Broadlink" ),
76+ 0x27CD : (rm , "RM mini 3" , "Broadlink" ),
77+ 0x27D0 : (rm , "RM mini 3" , "Broadlink" ),
78+ 0x27D1 : (rm , "RM mini 3" , "Broadlink" ),
79+ 0x27D3 : (rm , "RM mini 3" , "Broadlink" ),
80+ 0x27DE : (rm , "RM mini 3" , "Broadlink" ),
81+ 0x51DA : (rm4 , "RM4 mini" , "Broadlink" ),
82+ 0x5F36 : (rm4 , "RM mini 3" , "Broadlink" ),
7283 0x6026 : (rm4 , "RM4 pro" , "Broadlink" ),
7384 0x6070 : (rm4 , "RM4C mini" , "Broadlink" ),
74- 0x610e : (rm4 , "RM4 mini" , "Broadlink" ),
75- 0x610f : (rm4 , "RM4C mini" , "Broadlink" ),
76- 0x61a2 : (rm4 , "RM4 pro" , "Broadlink" ),
77- 0x62bc : (rm4 , "RM4 mini" , "Broadlink" ),
78- 0x62be : (rm4 , "RM4C mini" , "Broadlink" ),
79- 0x648d : (rm4 , "RM4 mini" , "Broadlink" ),
80- 0x649b : (rm4 , "RM4 pro" , "Broadlink" ),
81- 0x653a : (rm4 , "RM4 mini" , "Broadlink" ),
85+ 0x610E : (rm4 , "RM4 mini" , "Broadlink" ),
86+ 0x610F : (rm4 , "RM4C mini" , "Broadlink" ),
87+ 0x61A2 : (rm4 , "RM4 pro" , "Broadlink" ),
88+ 0x62BC : (rm4 , "RM4 mini" , "Broadlink" ),
89+ 0x62BE : (rm4 , "RM4C mini" , "Broadlink" ),
90+ 0x6364 : (rm4 , "RM4S" , "Broadlink" ),
91+ 0x648D : (rm4 , "RM4 mini" , "Broadlink" ),
92+ 0x649B : (rm4 , "RM4 pro" , "Broadlink" ),
93+ 0x6508 : (rm4 , "RM mini 3" , "Broadlink" ),
94+ 0x6539 : (rm4 , "RM4C mini" , "Broadlink" ),
95+ 0x653A : (rm4 , "RM4 mini" , "Broadlink" ),
96+ 0x653C : (rm4 , "RM4 pro" , "Broadlink" ),
8297 0x2714 : (a1 , "e-Sensor" , "Broadlink" ),
83- 0x4eb5 : (mp1 , "MP1-1K4S" , "Broadlink" ),
84- 0x4ef7 : (mp1 , "MP1-1K4S" , "Broadlink (OEM)" ),
85- 0x4f1b : (mp1 , "MP1-1K3S2U" , "Broadlink (OEM)" ),
86- 0x4f65 : (mp1 , "MP1-1K3S2U" , "Broadlink" ),
98+ 0x4EB5 : (mp1 , "MP1-1K4S" , "Broadlink" ),
99+ 0x4EF7 : (mp1 , "MP1-1K4S" , "Broadlink (OEM)" ),
100+ 0x4F1B : (mp1 , "MP1-1K3S2U" , "Broadlink (OEM)" ),
101+ 0x4F65 : (mp1 , "MP1-1K3S2U" , "Broadlink" ),
87102 0x5043 : (lb1 , "SB800TD" , "Broadlink (OEM)" ),
88- 0x504e : (lb1 , "LB1" , "Broadlink" ),
89- 0x60c7 : (lb1 , "LB1" , "Broadlink" ),
90- 0x60c8 : (lb1 , "LB1" , "Broadlink" ),
103+ 0x504E : (lb1 , "LB1" , "Broadlink" ),
104+ 0x60C7 : (lb1 , "LB1" , "Broadlink" ),
105+ 0x60C8 : (lb1 , "LB1" , "Broadlink" ),
91106 0x6112 : (lb1 , "LB1" , "Broadlink" ),
92107 0x2722 : (S1C , "S2KIT" , "Broadlink" ),
93- 0x4ead : (hysen , "HY02B05H" , "Hysen" ),
94- 0x4e4d : (dooya , "DT360E-45/20" , "Dooya" ),
95- 0x51e3 : (bg1 , "BG800/BG900" , "BG Electrical" ),
108+ 0x4EAD : (hysen , "HY02B05H" , "Hysen" ),
109+ 0x4E4D : (dooya , "DT360E-45/20" , "Dooya" ),
110+ 0x51E3 : (bg1 , "BG800/BG900" , "BG Electrical" ),
96111}
97112
98113
99114def gendevice (
100- dev_type : int ,
101- host : Tuple [str , int ],
102- mac : Union [bytes , str ],
103- name : str = None ,
104- is_locked : bool = None ,
115+ dev_type : int ,
116+ host : Tuple [str , int ],
117+ mac : Union [bytes , str ],
118+ name : str = None ,
119+ is_locked : bool = None ,
105120) -> device :
106121 """Generate a device."""
107122 try :
@@ -122,10 +137,10 @@ def gendevice(
122137
123138
124139def hello (
125- host : str ,
126- port : int = 80 ,
127- timeout : int = 10 ,
128- local_ip_address : str = None ,
140+ host : str ,
141+ port : int = 80 ,
142+ timeout : int = 10 ,
143+ local_ip_address : str = None ,
129144) -> device :
130145 """Direct device discovery.
131146
@@ -138,31 +153,27 @@ def hello(
138153
139154
140155def discover (
141- timeout : int = 10 ,
142- local_ip_address : str = None ,
143- discover_ip_address : str = ' 255.255.255.255' ,
144- discover_ip_port : int = 80 ,
156+ timeout : int = 10 ,
157+ local_ip_address : str = None ,
158+ discover_ip_address : str = " 255.255.255.255" ,
159+ discover_ip_port : int = 80 ,
145160) -> List [device ]:
146161 """Discover devices connected to the local network."""
147- responses = scan (
148- timeout , local_ip_address , discover_ip_address , discover_ip_port
149- )
162+ responses = scan (timeout , local_ip_address , discover_ip_address , discover_ip_port )
150163 return [gendevice (* resp ) for resp in responses ]
151164
152165
153166def xdiscover (
154- timeout : int = 10 ,
155- local_ip_address : str = None ,
156- discover_ip_address : str = ' 255.255.255.255' ,
157- discover_ip_port : int = 80 ,
167+ timeout : int = 10 ,
168+ local_ip_address : str = None ,
169+ discover_ip_address : str = " 255.255.255.255" ,
170+ discover_ip_port : int = 80 ,
158171) -> Generator [device , None , None ]:
159172 """Discover devices connected to the local network.
160173
161174 This function returns a generator that yields devices instantly.
162175 """
163- responses = scan (
164- timeout , local_ip_address , discover_ip_address , discover_ip_port
165- )
176+ responses = scan (timeout , local_ip_address , discover_ip_address , discover_ip_port )
166177 for resp in responses :
167178 yield gendevice (* resp )
168179
@@ -191,13 +202,12 @@ def setup(ssid: str, password: str, security_mode: int) -> None:
191202 payload [0x85 ] = pass_length # Character length of password
192203 payload [0x86 ] = security_mode # Type of encryption
193204
194- checksum = sum (payload , 0xbeaf ) & 0xffff
195- payload [0x20 ] = checksum & 0xff # Checksum 1 position
205+ checksum = sum (payload , 0xBEAF ) & 0xFFFF
206+ payload [0x20 ] = checksum & 0xFF # Checksum 1 position
196207 payload [0x21 ] = checksum >> 8 # Checksum 2 position
197208
198- sock = socket .socket (socket .AF_INET , # Internet
199- socket .SOCK_DGRAM ) # UDP
209+ sock = socket .socket (socket .AF_INET , socket .SOCK_DGRAM ) # Internet # UDP
200210 sock .setsockopt (socket .SOL_SOCKET , socket .SO_REUSEADDR , 1 )
201211 sock .setsockopt (socket .SOL_SOCKET , socket .SO_BROADCAST , 1 )
202- sock .sendto (payload , (' 255.255.255.255' , 80 ))
212+ sock .sendto (payload , (" 255.255.255.255" , 80 ))
203213 sock .close ()
0 commit comments