Fix temperature parsing when below zero
This commit is contained in:
parent
985f63d237
commit
2cef664c7f
1 changed files with 10 additions and 2 deletions
12
solar_ble.py
12
solar_ble.py
|
@ -161,6 +161,12 @@ CMD_ = b"\xff\x78\x00\x00\x00\x01"
|
||||||
STATUS = {}
|
STATUS = {}
|
||||||
|
|
||||||
|
|
||||||
|
def parse_temperature(bin):
|
||||||
|
if bin & 0x80:
|
||||||
|
return (bin & 0x7F) * -1
|
||||||
|
return bin & 0x7F
|
||||||
|
|
||||||
|
|
||||||
# GET_BATTERY_STATE
|
# GET_BATTERY_STATE
|
||||||
def parse_battery_state(data: bytes) -> dict:
|
def parse_battery_state(data: bytes) -> dict:
|
||||||
res = dict(
|
res = dict(
|
||||||
|
@ -175,13 +181,15 @@ def parse_battery_state(data: bytes) -> dict:
|
||||||
"load_current",
|
"load_current",
|
||||||
"load_power",
|
"load_power",
|
||||||
),
|
),
|
||||||
struct.unpack("!HHHbbHHH", data),
|
struct.unpack("!HHHBBHHH", data),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
res["battery_voltage"] /= 10
|
res["battery_voltage"] /= 10
|
||||||
res["battery_current"] /= 100
|
res["battery_current"] /= 100
|
||||||
res["load_voltage"] /= 10
|
res["load_voltage"] /= 10
|
||||||
res["load_current"] /= 100
|
res["load_current"] /= 100
|
||||||
|
res["_internal_temperature?"] = parse_temperature(res["_internal_temperature?"])
|
||||||
|
res["battery_temperature"] = parse_temperature(res["battery_temperature"])
|
||||||
STATUS.update(res)
|
STATUS.update(res)
|
||||||
|
|
||||||
log(str(res))
|
log(str(res))
|
||||||
|
@ -246,7 +254,7 @@ def parse_packet(data):
|
||||||
|
|
||||||
|
|
||||||
def readMemory(fh: RawIOBase, address: int, words: int = 1):
|
def readMemory(fh: RawIOBase, address: int, words: int = 1):
|
||||||
log(f"Reading {words} words from 0x{address:04X}")
|
# log(f"Reading {words} words from 0x{address:04X}")
|
||||||
write(fh, construct_request(address, words=words))
|
write(fh, construct_request(address, words=words))
|
||||||
header = fh.read(3)
|
header = fh.read(3)
|
||||||
if header and len(header) == 3:
|
if header and len(header) == 3:
|
||||||
|
|
Loading…
Reference in a new issue