1234567891011121314151617181920212223242526272829303132 |
- import logging
- from datetime import timedelta
- from structures.correlated import CorrelatedMeasurements
- logger = logging.getLogger(__name__)
- class TimeCorrelation:
- def __init__(self, parent):
- self.state = {}
- self.timestamp = None
- def execute(self, values: list):
- results = []
- for i, measurement in enumerate(values):
- self.state[type(measurement).__name__] = measurement
- if self.timestamp and self.timestamp > measurement.timestamp + timedelta(milliseconds=100):
- logger.error(f"Timestamps are not in order: {measurement.series} is {self.timestamp - measurement.timestamp} to late")
-
- if len(values) > i+1 and values[i+1].timestamp == measurement.timestamp:
- continue
- self.timestamp = measurement.timestamp
- results.append(CorrelatedMeasurements(
- timestamp = measurement.timestamp,
- source = ','.join([x.source for x in self.state.values()]),
- measurement_24v = self.state.get("Measurement24v", None),
- measurement_480v = self.state.get("Measurement480v", None),
- measurement_plant = self.state.get("CompactLogixState", None) or self.state.get("S7State", None)
- ))
- return results
|