Business operations API: get_battery_soc/get_household_wattage/get_device_inventory
This commit is contained in:
1 parent
363c7cc6a2
commit
b79adc5d54
7 files changed
+307
-112
No files matched your search
@@ -168,34 +168,16 @@ def get_battery(
|
||||
key_radix=key_radix, timeout=timeout,
|
||||
)
|
||||
try:
|
||||
client.send_rpc(CommunicationCmd.QUERY_DEVICE_INFO,
|
||||
equip_no="",
|
||||
data={"minProtocolVer": "V1.00.00"})
|
||||
except Exception as exc: # discovery is best-effort; keep going
|
||||
log.debug("port %d discovery failed: %s", port, exc)
|
||||
attempts: Tuple[Tuple[CommunicationCmd, Any], ...] = (
|
||||
(CommunicationCmd.DEVICE_APOWER_INFO, {"update": 2}),
|
||||
(CommunicationCmd.BMS, {"id": 1}),
|
||||
(CommunicationCmd.BMS, {"id": 2}),
|
||||
(CommunicationCmd.EMS, None),
|
||||
)
|
||||
for cmd, data in attempts:
|
||||
try:
|
||||
reply = client.send_rpc(cmd, data=data)
|
||||
except (ConnectionError, socket.error, TimeoutError) as exc:
|
||||
last_err = exc
|
||||
log.debug("port %d cmd %s failed: %s", port, cmd, exc)
|
||||
break # port unreachable — try next port
|
||||
except Exception as exc: # envelope-level failure; try next cmd
|
||||
last_err = exc
|
||||
log.debug("port %d cmd %s error: %s", port, cmd, exc)
|
||||
continue
|
||||
result = extract_soc(reply)
|
||||
result.update({"cmd": str(cmd), "port": port, "reply": reply})
|
||||
if result["value"] is not None and not _is_empty_pack(
|
||||
reply, result):
|
||||
return result
|
||||
last_err = ValueError(f"reply on port {port} cmd {cmd} has no SoC field")
|
||||
result = client.get_battery_soc()
|
||||
except (ConnectionError, socket.error, TimeoutError) as exc:
|
||||
last_err = exc
|
||||
log.debug("port %d failed: %s", port, exc)
|
||||
continue # port unreachable — try next port
|
||||
if result["value"] is not None:
|
||||
result.update({"port": port})
|
||||
return result
|
||||
last_err = ValueError(
|
||||
f"no SoC field in replies via {host}:{port}")
|
||||
raise ConnectionError(f"no battery reply via {host}:{list(ports)}") from last_err
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user