import snap7 import time import re from datetime import datetime from inputs.common import Input class SiemensCPU(Input): interval = 0.02 def __init__(self): super().__init__(self.read_handler) self.server = snap7.server.Server(True) size = 100 self.DBdata = (snap7.types.wordlen_to_ctypes[snap7.types.WordLen.Byte.value] * size)() self.server.register_area(snap7.types.srvAreaDB, 1, self.DBdata) self.server.start(1102) def read_handler(self): event : snap7.types.SrvEvent while event := self.server.pick_event(): timestamp = datetime.now() text = self.server.event_text(event) match = re.match("^(?P\d+-\d+-\d+ \d+:\d+:\d+) \[(?P[\w\.:]+)\] (?P[\w ]+), Area : (?P.+), Start : (?P\d+), Size : (?P\d+) --> (?P.+)$", text) if not match: print(text) continue