Add in AP Mode device setup for new Broadlink devices. (#53)
This commit is contained in:
parent
5195856200
commit
d989c27d36
3 changed files with 72 additions and 0 deletions
|
|
@ -503,3 +503,40 @@ class rm2(rm):
|
|||
dev = discover()
|
||||
self.host = dev.host
|
||||
self.mac = dev.mac
|
||||
|
||||
# Setup a new Broadlink device via AP Mode. Review the README to see how to enter AP Mode.
|
||||
# Only tested with Broadlink RM3 Mini (Blackbean)
|
||||
def setup(ssid, password, security_mode):
|
||||
# Security mode options are (0 - none, 1 = WEP, 2 = WPA1, 3 = WPA2, 4 = WPA1/2)
|
||||
payload = bytearray(0x88)
|
||||
payload[0x26] = 0x14 # This seems to always be set to 14
|
||||
# Add the SSID to the payload
|
||||
ssid_start = 68
|
||||
ssid_length = 0
|
||||
for letter in ssid:
|
||||
payload[(ssid_start + ssid_length)] = ord(letter)
|
||||
ssid_length += 1
|
||||
# Add the WiFi password to the payload
|
||||
pass_start = 100
|
||||
pass_length = 0
|
||||
for letter in password:
|
||||
payload[(pass_start + pass_length)] = ord(letter)
|
||||
pass_length += 1
|
||||
|
||||
payload[0x84] = ssid_length # Character length of SSID
|
||||
payload[0x85] = pass_length # Character length of password
|
||||
payload[0x86] = security_mode # Type of encryption (00 - none, 01 = WEP, 02 = WPA1, 03 = WPA2, 04 = WPA1/2)
|
||||
|
||||
checksum = 0xbeaf
|
||||
for i in range(len(payload)):
|
||||
checksum += payload[i]
|
||||
checksum = checksum & 0xffff
|
||||
|
||||
payload[0x20] = checksum & 0xff # Checksum 1 position
|
||||
payload[0x21] = checksum >> 8 # Checksum 2 position
|
||||
|
||||
sock = socket.socket(socket.AF_INET, # Internet
|
||||
socket.SOCK_DGRAM) # UDP
|
||||
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
|
||||
sock.sendto(payload, ('255.255.255.255', 80))
|
||||
Loading…
Add table
Add a link
Reference in a new issue