diff options
author | Matthew Garrett <mjg59@google.com> | 2017-11-25T20·38-0800 |
---|---|---|
committer | Matthew Garrett <mjg59@google.com> | 2017-11-25T20·38-0800 |
commit | dd6eb8767e7a7f1f54aa1e7a7b57309bc4fc5fba (patch) | |
tree | 12f19fc58a3fef2ca1e4e619c6b6a21c3efa35d3 | |
parent | 8bc67af6d73c75587d40f6dbfa3b975c7d69a8a4 (diff) |
Experimental RF code
-rw-r--r-- | README.md | 39 | ||||
-rw-r--r-- | broadlink/__init__.py | 27 |
2 files changed, 65 insertions, 1 deletions
diff --git a/README.md b/README.md index 1305ea0f5a7b..48708827ce36 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,23 @@ Enter learning mode: devices[0].enter_learning() ``` +Sweep RF frequencies: +``` +devices[0].sweep_frequency() +``` + +Check whether a frequency has been found: +``` +found = devices[0].check_frequency() +``` +(This will return True if the RM has locked onto a frequency, False otherwise) + +Attempt to learn an RF packet: +``` +found = devices[0].find_rf_packet() +``` +(This will return True if a packet has been found, False otherwise) + Obtain an IR or RF packet while in learning mode: ``` ir_packet = devices[0].check_data() @@ -76,4 +93,24 @@ devices[0].set_power(1, True) Check power state on a SmartPowerStrip: ``` state = devices[0].check_power() -``` \ No newline at end of file +``` + +Learning RF packets +------------------- + +timeout = 10 +devices[0].sweep_frequency() +# Hold down the rf button +for i in range(0, timeout): + found = devices[0].check_frequency() + if found == True: + break + time.sleep(1) +# Tap the rf button +for i in range(0, timeout): + found = devices[0].find_rf_packet() + if found == True: + break + time.sleep(1) +# Obtain the code +code = devices[0].check_data() diff --git a/broadlink/__init__.py b/broadlink/__init__.py index ea4cbc5fab34..a4c8a4841aff 100644 --- a/broadlink/__init__.py +++ b/broadlink/__init__.py @@ -501,6 +501,33 @@ class rm(device): packet[0] = 3 self.send_packet(0x6a, packet) + def sweep_frequency(self): + packet = bytearray(16) + packet[0] = 0x19; + self.send_packet(0x6a, packet) + + def check_frequency(self): + packet = bytearray(16) + packet[0] = 0x1a + response = self.send_packet(0x6a, packet) + err = response[0x22] | (response[0x23] << 8) + if err == 0: + payload = self.decrypt(bytes(response[0x38:])) + if payload[0x04] == 1: + return True + return False + + def find_rf_packet(self): + packet = bytearray(16) + packet[0] = 0x1b + response = self.send_packet(0x6a, packet) + err = response[0x22] | (response[0x23] << 8) + if err == 0: + payload = self.decrypt(bytes(response[0x38:])) + if payload[0x04] == 1: + return True + return False + def check_temperature(self): packet = bytearray(16) packet[0] = 1 |