Esempio n. 1
0
    def __init__(self, payload):
        if len(payload) != SERVICE_DATA_SIZE:
            print("ERROR: INVALID SERVICE DATA LENGTH", len(payload), payload)
            return

        self.opCode = payload[0]
        self.dataType = payload[1]
        self.crownstoneId = payload[2]
        self.switchState = payload[3]

        # TODO: make less ugly
        if self.switchState > 100:
            self.relayState = 1
            self.igbtState = float(self.switchState - 128) / 100.0

        self.flagBitmask = payload[4]
        self.temperature = Conversion.uint8_to_int8(payload[5])
        self.powerFactor = float(Conversion.uint8_to_int8(payload[6])) / 127
        self.powerUsageReal = float(
            Conversion.uint8_array_to_int16(payload[7:7 + 2])) / 8
        self.energyUsed = Conversion.uint8_array_to_int32(
            payload[9:9 + 4]) * 64
        self.partialTimestamp = Conversion.uint8_array_to_int16(payload[13:13 +
                                                                        2])
        self.validation = Conversion.uint8_array_to_int16(payload[15:15 + 2])
    def parseState(self, meshStateItemState):
        self.crownstoneId       = meshStateItemState[0]
        self.switchState        = meshStateItemState[1]
        self.flagsBitmask        = meshStateItemState[2]
        self.temperature        = meshStateItemState[3]
        self.powerFactor        = float(meshStateItemState[4]) / 127
        self.powerUsageReal     = float(Conversion.uint8_array_to_int16(meshStateItemState[5:7])) / 8
        if self.powerFactor == 0:
            self.powerFactor = 1.0
        self.powerUsageApparent = self.powerUsageReal / self.powerFactor
        self.accumulatedEnergy         = Conversion.uint8_array_to_int32(meshStateItemState[7:11])
        self.partialTimestamp   = Conversion.uint8_array_to_uint16(meshStateItemState[11:13])
        self.timestamp          = reconstructTimestamp(time.time(), self.partialTimestamp)

        if self.crownstoneId == 0:
            self.deprecated = True
Esempio n. 3
0
    def __init__(self, payload):
        if len(payload) < self.packetSize:
            print("ERROR: INVALID PAYLOAD LENGTH", len(payload), payload)
            return

        i = 0
        self.currentRmsMA = Conversion.uint8_array_to_int32(
            payload[i:i + self.sampleSize])
        i += self.sampleSize

        self.currentRmsMedianMA = Conversion.uint8_array_to_int32(
            payload[i:i + self.sampleSize])
        i += self.sampleSize

        self.filteredCurrentRmsMA = Conversion.uint8_array_to_int32(
            payload[i:i + self.sampleSize])
        i += self.sampleSize

        self.filteredCurrentRmsMedianMA = Conversion.uint8_array_to_int32(
            payload[i:i + self.sampleSize])
        i += self.sampleSize

        self.avgZeroVoltage = Conversion.uint8_array_to_int32(
            payload[i:i + self.sampleSize])
        i += self.sampleSize

        self.avgZeroCurrent = Conversion.uint8_array_to_int32(
            payload[i:i + self.sampleSize])
        i += self.sampleSize

        self.powerMilliWattApparent = Conversion.uint8_array_to_int32(
            payload[i:i + self.sampleSize])
        i += self.sampleSize

        self.powerMilliWattReal = Conversion.uint8_array_to_int32(
            payload[i:i + self.sampleSize])
        i += self.sampleSize

        self.avgPowerMilliWattReal = Conversion.uint8_array_to_int32(
            payload[i:i + self.sampleSize])
Esempio n. 4
0
 def getInt32(self):
     return Conversion.uint8_array_to_int32(self._request(4))