Vor einiger Zeit nutzte ich den MPP250 von Votronik in meinem Bus.
Um die Daten über Lora zu schicken habe ich ein Heltec Cubecell benutzt.
Hatte damals Probleme Infos über das Protokol zu finden und deshalb selbst einen Blick drauf geworfen.
Vllt helfen die Infos (schon bisschen her, k.A. ob es Updates gab oder schon anderweitig dokumentiert)
In dem Kabel zum Display gibt es GND, 12V, UART TX (und vllt RX, k.A.).
UART TX hat eine sehr merkwürdige Baudrate von 1000, Pegel waren glaube ich 5V.
Statusdaten werden im Betrieb kontinuierlich übertragen, 16Byte Pakete, 0xAA markiert den Start.
In den 16Byte ist wenn ich das richtig sehe eine triviale Prüfsumme enthalten.
Dieser Pythoncode enthält was ich damals rausgefunden habe, sind nur die wichtigsten Parameter, die noch unbekannten Bytes waren für meine Anwendung nicht wichtig.
def genChecksum(dataIn):
s = 0
for i in dataIn:
s = s^i
return s
def decode(uartFrame):
assert(len(uartFrame) == 16), 'data len not as expected'
assert(uartFrame[0] == 0xaa), 'magic byte not found'
assert(genChecksum(uartFrame[1:-1]) == uartFrame[15]), 'crc error'
voltageCell = ((uartFrame[5] << 8) | uartFrame[4]) / 100.0 # voltage in 10mV
voltageBat = ((uartFrame[3] << 8) | uartFrame[2]) / 100.0 # voltage in 10mV
currentBat = ((uartFrame[7] << 8) | uartFrame[6]) / 10.0 # current in 100mA
unknown = uartFrame[8:14]
aesOn = bool(uartFrame[14] & (1<<5))
excessSolar = bool(uartFrame[14] & (1<<4))
statBits = bin(uartFrame[14])
return {'voltageBat': voltageBat, 'voltageCell': voltageCell, 'currentBat': currentBat, 'aesOn': aesOn, 'excessSolar': excessSolar, 'statBits': statBits, 'unknown': unknown}
# test it!
# decode([0xAA, 0x1A, 0x2B, 0x05, 0x66, 0x06, 0x14, 0x00, 0x00, 0x00, 0x9F, 0x21, 0x35, 0x22, 0x09, 0xE0])
# >>{'aesOn': False,
# 'currentBat': 2.0,
# 'excessSolar': False,
# 'voltageBat': 13.23,
# 'voltageCell': 16.38}
Viele Grüße!