diff --git a/src/energenie/Registry.py b/src/energenie/Registry.py index 1c261f9..c949930 100644 --- a/src/energenie/Registry.py +++ b/src/energenie/Registry.py @@ -256,7 +256,8 @@ fsk_router = Router("fsk") -ook_router = Router("ook") +#OOK receive not yet written +##ook_router = Router("ook") diff --git a/src/energenie/__init__.py b/src/energenie/__init__.py index 9e89d80..dbce157 100644 --- a/src/energenie/__init__.py +++ b/src/energenie/__init__.py @@ -6,6 +6,8 @@ # # Future versions of this *might* also start receive monitor or scheduler threads. +import time + try: # Python 3 from . import radio @@ -27,6 +29,35 @@ OpenThings.init(Devices.CRYPT_PID) +def loop(receive_time=1): + """Handle receive processing""" + radio.receiver(fsk=True) + timeout = time.time() + receive_time + handled = False + + while True: + if radio.is_receive_waiting(): + payload = radio.receive_cbp() + now = time.time() + try: + msg = OpenThings.decode(payload, receive_timestamp=now) + hdr = msg["header"] + mfr_id = hdr["mfrid"] + product_id = hdr["productid"] + device_id = hdr["sensorid"] + address = (mfr_id, product_id, device_id) + + Registry.fsk_router.handle_message(address, payload) + handled = True + except OpenThings.OpenThingsException: + print("Can't decode payload:%s" % payload) + + now = time.time() + if now > timeout: break + + return handled + + def finished(): """Cleanly close the Energenie system when finished""" radio.finished()