Loop with timer

This commit is contained in:
Ard Kuijpers
2020-06-03 22:25:18 +02:00
parent a6c00302d9
commit b5e00d1943
2 changed files with 28 additions and 10 deletions

24
app.py
View File

@@ -1,5 +1,6 @@
import os
import time
import threading
from dsmr_parser import telegram_specifications
from dsmr_parser.clients import SerialReader, SERIAL_SETTINGS_V2_2, SERIAL_SETTINGS_V4, SERIAL_SETTINGS_V5
@@ -38,19 +39,22 @@ def main():
spec = telegram_specifications.V5
device = Device_DSMR("dsmr", name="Digitale Slimme Meter")
serial_reader = SerialReader(cfg.dsmr_port, serial_setup, spec)
while True:
try:
telegram = next(serial_reader.read_as_object())
device.update(telegram)
logger.info(f"New telegram at {telegram.P1_MESSAGE_TIMESTAMP.value}")
time.sleep(cfg.dsmr_update_interval)
except SerialException as serial_exc:
logger.warning("Serial exception", exc_info=serial_exc)
def handle_next_telegram():
telegram = next(serial_reader.read_as_object())
device.update(telegram)
logger.info(f"New telegram at {telegram.P1_MESSAGE_TIMESTAMP.value}")
def startTimer():
threading.Timer(cfg.dsmr_update_interval, startTimer).start()
handle_next_telegram()
startTimer()
# for telegram in serial_reader.read_as_object():
# device.update(telegram)
if __name__ == "__main__":
main()
main()