def consumeRxData(self, remoteAddress16, dat): 'This method is to be called immediately after a data frame is received from the sensor node. It parses and handles the payload.' tnow = time.time() self.lastTimeReceived = tnow self.address16 = remoteAddress16 self.timeBetweenMeasurements = ord(dat[1]) nCoreDataBytes = ord(dat[2]) self.nMPS = nCoreDataBytes / Config.LSA_DATA_MODALITY self.timeBetweenEmissions = self.timeBetweenMeasurements * self.nMPS self.sensorData = [] self.batteryVoltage = [] self.mcuTemperature = [] for i in range(0, nCoreDataBytes, Config.LSA_DATA_MODALITY): mv = ord(dat[Config.LSA_HEADER_SIZE+i])<<16 | ord(dat[Config.LSA_HEADER_SIZE+i+1])<<8 | ord(dat[Config.LSA_HEADER_SIZE+i+2]) _bat= ord(dat[Config.LSA_HEADER_SIZE+i+3])<<8 | ord(dat[Config.LSA_HEADER_SIZE+i+4]) bat = float(_bat / 100.0); tmp = ord(dat[Config.LSA_HEADER_SIZE+i+5]) self.sensorData.append(mv) self.batteryVoltage.append(bat) self.mcuTemperature.append(tmp) self.timeStamps = [] for i in range(self.nMPS-1, -1, -1): tm = tnow - i * self.timeBetweenMeasurements self.timeStamps.append(tm) pass RemoteXB_Node.writeDataLines(self, self.asCSVDataEntry()) pass
def __init__(self, shortID, nodeName, dataDir, statusDir): RemoteXB_Node.__init__(self, shortID, nodeName, dataDir, statusDir) self.timeBetweenMeasurements = 0 self.timeBetweenEmissions = 0 self.sensorData = [] self.timeStamps = [] self.batteryVoltage = [] self.mcuTemperature = [] self.lastTimeReceived = 0.0 self.nMPS = 0