Ejemplo n.º 1
0
def light_clb(data):
    data = bytes_to_int(data.messages[0].data[3:])
    if (lightBeam.bitSelect & data):
        if (lightBeam.isPressing is False):
            lightBeam.isPressing = True
            lightBeam.ModeNight()
    elif (lightBeam.isPressing is True):
        lightBeam.isPressing = False
        lightBeam.ModeDay()
    return
Ejemplo n.º 2
0
def vin(messages):
    """VIN decoder."""
    d = messages[0].data
    if len(d) == 0:
        return None
    else:
        vin_str = ""
        for v in range(16, 33):
            vin_str = vin_str + chr(bytes_to_int(d[v:v + 1]))
        return dict(vin=vin_str)
Ejemplo n.º 3
0
def rev_clb(data):
    data = bytes_to_int(data.messages[0].data[3:])
    if (revGear.bitSelect & data):
        if (revGear.isPressing is False):
            revGear.isPressing = True
            revGear.revCamOn()
    elif (revGear.isPressing is True):
        revGear.isPressing = False
        revGear.revCamOff()
    return
Ejemplo n.º 4
0
def bms_2101(messages):
    """BMS 2101 decoder."""
    d = messages[0].data
    if len(d) == 0:
        return None
    else:
        charging_bits = d[11]
        charging = 1 if charging_bits & 0x80 else 0  # 8th bit is 1

        battery_current = bytes_to_int_signed(d[12:14]) / 10.0
        battery_voltage = bytes_to_int(d[14:16]) / 10.0

        return dict(socBms=d[6] / 2.0,  # %
                    bmsIgnition=1 if d[52] & 0x4 else 0,  # 3rd bit is 1
                    bmsMainRelay=1 if charging_bits & 0x1 else 0,  # 1st bit is 1
                    auxBatteryVoltage=d[31] / 10.0,  # V

                    charging=charging,
                    normalChargePort=1 if charging_bits & 0x20 else 0,  # 6th bit is 1
                    rapidChargePort=1 if charging_bits & 0x40 else 0,  # 7th bit is 1
                    fanStatus=d[29],  # Hz
                    fanFeedback=d[30],
                    cumulativeEnergyCharged=bytes_to_int(d[40:44]) / 10.0,  # kWh
                    cumulativeEnergyDischarged=bytes_to_int(d[44:48]) / 10.0,  # kWh

                    cumulativeChargeCurrent=bytes_to_int(d[32:36]) / 10.0,  # A
                    cumulativeDischargeCurrent=bytes_to_int(d[36:40]) / 10.0,  # A

                    cumulativeOperatingTime=bytes_to_int(d[48:52]),  # seconds

                    availableChargePower=bytes_to_int(d[7:9]) / 100.0,  # kW
                    availableDischargePower=bytes_to_int(d[9:11]) / 100.0,  # kW

                    dcBatteryInletTemperature=bytes_to_int_signed(d[22:23]),  # C
                    dcBatteryMaxTemperature=bytes_to_int_signed(d[16:17]),  # C
                    dcBatteryMinTemperature=bytes_to_int_signed(d[17:18]),  # C
                    dcBatteryCellMaxVoltage=d[25] / 50,  # V
                    dcBatteryCellNoMaxVoltage=d[26],
                    dcBatteryCellMinVoltage=d[27] / 50,  # V
                    dcBatteryCellNoMinVoltage=d[28],
                    dcBatteryCurrent=battery_current,  # A
                    dcBatteryPower=round(battery_current * battery_voltage / 1000.0, 3),  # kW
                    dcBatteryVoltage=battery_voltage,  # V

                    driveMotorSpeed=bytes_to_int_signed(d[55:57]),  # RPM

                    dcBatteryModuleTemp01=bytes_to_int_signed(d[18:19]),  # C
                    dcBatteryModuleTemp02=bytes_to_int_signed(d[19:20]),  # C
                    dcBatteryModuleTemp03=bytes_to_int_signed(d[20:21]),  # C
                    dcBatteryModuleTemp04=bytes_to_int_signed(d[21:22]),  # C
                    dcBatteryModuleTemp05=bytes_to_int_signed(d[22:23]),  # C
                    )
Ejemplo n.º 5
0
def key_clb(data):
    data = bytes_to_int(data.messages[0].data[3:])
    for c, keyButton in enumerate(keyButtons, 1):
        if (keyButton.bitSelect & data):
            if (keyButton.isPressing is False):
                keyButton.isPressing = True
                keyButton.pressButton()
        elif (keyButton.isPressing is True):
            keyButton.isPressing = False
            keyButton.releaseButton()
    return
Ejemplo n.º 6
0
def odometer(messages):
    """Odometer decoder."""
    d = messages[0].data
    if len(d) == 0:
        return None
    else:
        v = bytes_to_int(d[9:12])
        if v == 0:
            return None
        else:
            return dict(odometer=v)  # Km
Ejemplo n.º 7
0
def bms_2105(messages):
    """BMS 2105 decoder."""
    d = messages[0].data
    if len(d) == 0:
        return None
    else:
        return dict(soh=bytes_to_int(d[27:29]) / 10.0,  # %
                    dcBatteryCellMaxDeterioration=bytes_to_int(d[27:29]) / 10.0,  # %
                    dcBatteryCellMinDeterioration=bytes_to_int(d[30:32]) / 10.0,  # %
                    socDisplay=int(d[33] / 2.0),  # %
                    dcBatteryModuleTemp06=bytes_to_int_signed(d[11:12]),  # C
                    dcBatteryModuleTemp07=bytes_to_int_signed(d[12:13]),  # C
                    dcBatteryModuleTemp08=bytes_to_int_signed(d[13:14]),  # C
                    dcBatteryModuleTemp09=bytes_to_int_signed(d[14:15]),  # C
                    dcBatteryModuleTemp10=bytes_to_int_signed(d[15:16]),  # C
                    dcBatteryModuleTemp11=bytes_to_int_signed(d[16:17]),  # C
                    dcBatteryModuleTemp12=bytes_to_int_signed(d[17:18]),  # C
                    dcBatteryCellVoltageDeviation=d[22] / 50,  # V
                    dcBatteryHeater1Temperature=float(d[25]),  # C
                    dcBatteryHeater2Temperature=float(d[26]),  # C
                    dcBatteryCellNoMaxDeterioration=int(d[29]),
                    dcBatteryCellNoMinDeterioration=int(d[32]),
                    )
Ejemplo n.º 8
0
def dpad_clb(data):
    try:
        data = bytes_to_int(data.messages[0].data[3:])
        for c, dpadButton in enumerate(dpadButtons, 1):
            if (dpadButton.bitSelect & data):
                if (dpadButton.isPressing is False):
                    dpadButton.isPressing = True
                    dpadButton.pressButton()
            elif (dpadButton.isPressing is True):
                dpadButton.isPressing = False
                dpadButton.releaseButton()
    except:
        pass
    return
Ejemplo n.º 9
0
def temperature(messages):
    # "(((A*256)+B)/100)-40)"
    d = messages[0].data
    v = (bytes_to_int(d) /
         100) - 40  # helper function for converting byte arrays to ints
    return (v, Unit.TEMP)
Ejemplo n.º 10
0
def fuel(messages):
        d = messages[0].data
        v = bytes_to_int(d) / 4.0
        return v 
Ejemplo n.º 11
0
 def decoder(self, messages):
     d = messages[0].data
     d = d[2:]
     v = bytes_to_int(d) / 4.0
     return v
Ejemplo n.º 12
0
def rpm(messages):
    """ decoder for RPM messages """
    d = messages[0].data
    v = bytes_to_int(d) / 4.0
    return v * Unit.RPM
def engine_load(messages):
    d = messages[0].data
    v = bytes_to_int(d) / 2.55
    return v
def distance_w_mil(messages):
    d = messages[0].data
    v = bytes_to_int(d)
    return v
def control_module_vtg(messages):
    d = messages[0].data
    v = bytes_to_int(d) / 1000
    return v
def engine_temp(messages):
    d = messages[0].data
    v = bytes_to_int(d) - 40
    return v
Ejemplo n.º 17
0
def vin(messages):
    """ Decoder for VIN messages """
    data = messages[0].data
    data = data[2:]
    v = bytes_to_int(data) / 4.0
    return v * OBD.Unit.VIN
def speed(messages):
    d = messages[0].data
    v = bytes_to_int(d)
    return v