def updateReceivedData(self, dataIdentifier, value): if self.lastValueMapping[dataIdentifier] is None or self.lastValueMapping[dataIdentifier] != value: self.lastValueMapping[dataIdentifier] = value measurement = Measurement.currentMeasurement({dataIdentifier: value}) self.measurementBuffer.append(measurement) else: logging.getLogger().error( "New data are equals to previous one ({}: {}). Skipping...".format(dataIdentifier, repr(value)))
def tryBuffer(self, updateBuffer, dataIdentifier, data): try: updateBuffer.updateReceivedData(dataIdentifier, data) if updateBuffer.isComplete(): d = updateBuffer.getData() updateBuffer.reset() measurement = Measurement.currentMeasurement(d) self.channelUpdateSupervisor.dataAvailable(updateBuffer.channel, measurement) except TopicException as ex: pass
def tryBuffer(self, updateBuffer, dataIdentifier, data): try: updateBuffer.updateReceivedData(dataIdentifier, data) if updateBuffer.isComplete(): d = updateBuffer.getData() updateBuffer.reset() measurement = Measurement.currentMeasurement(d) self.channelUpdateSupervisor.dataAvailable( updateBuffer.channel, measurement) except TopicException as ex: pass
def createAverageMeasurement(self): """ Create measurement from collected data during update interval period. """ averageData = {} for measurement in self.intervalMeasurements: for dataIdentifier, value in measurement.fields.items(): if dataIdentifier not in averageData: averageData[dataIdentifier] = 0 averageData[dataIdentifier] += float(value) for dataIdentifier, value in averageData.items(): averageData[dataIdentifier] = averageData[dataIdentifier] / float( len(self.intervalMeasurements)) lastTime = self.intervalMeasurements[-1] return Measurement(averageData, lastTime)
def getMeasurement(self): return Measurement.currentMeasurement(self.getData())