Loop with timer
This commit is contained in:
24
app.py
24
app.py
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user