# radio2_test.py 15/04/2016 D.J.Whale
#
# A simple Energenie radio exerciser
#
# Repeatedly transmits OOK packets to turn switch 1 on and off.
#
import radio2 as radio
import time
# How many times to repeat the OOK payload.
# 4800bps*8*16=26ms per payload
# 75 payloads is 2 seconds
# 255 payloads is 6.8 seconds
TIMES = 75
DELAY = 0.5
# The 'radio' module knows nothing about the Energenie (HS1527) bit encoding,
# so this test code manually encodes the bits.
# For the full Python stack, there is an encoder module that can generate
# specific payloads. Repeats are done in radio_transmitter.
# The HRF preamble feature is no longer used, it's more predictable to
# put the preamble in the payload.
# preamble pulse with timing violation gap
PREAMBLE = [0x80, 0x00, 0x00, 0x00]
# Energenie 'random' 20 bit address is 0x6C6C6
# 0110 1100 0110 1100 0110
# 0 encoded as 8 (1000)
# 1 encoded as E (1110)
ADDR = [0x8E, 0xE8, 0xEE, 0x88, 0x8E, 0xE8, 0xEE, 0x88, 0x8E, 0xE8]
# Energenie 'switch 1 ON' command F 1111 (0xEE, 0xEE)
SW1_ON = [0xEE, 0xEE]
# Energenie 'switch 1 OFF' command E 1110 (0xEE, 0xE8)
SW1_OFF = [0xEE, 0xE8]
# manual preamble, 20 bit encoded address, 4 encoded data bits
enc_1on = PREAMBLE + ADDR + SW1_ON
enc_1off = PREAMBLE + ADDR + SW1_OFF
def radio_test_ook():
"""Repeatedly test switch 1 ON then OFF"""
radio.init()
# init() defaults to standby()
try:
radio.modulation(ook=True)
while True:
print("Switch 1 ON")
radio.transmit(enc_1on, TIMES)
# auto returns to standby
if DELAY!=0: time.sleep(DELAY)
print("Switch 1 OFF")
radio.transmit(enc_1off, TIMES)
# auto returns to standby
if DELAY!=0: time.sleep(DELAY)
finally:
radio.finished()
if __name__ == "__main__":
radio_test_ook()
# END