Experimental RF code

This commit is contained in:
Matthew Garrett 2017-11-25 12:38:57 -08:00
parent 8bc67af6d7
commit dd6eb8767e
2 changed files with 65 additions and 1 deletions

View file

@ -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()
```
```
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()

View file

@ -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