Wait for the required EcoFlow reports in each collection

A Bluetooth collection listened for a fixed 10 seconds and returned the data that arrived. If a required report was late, the snapshot missed shared measurements without notice.

Each decoder now tracks the reports behind the shared measurements. A collection listens for 10 seconds, then until those reports arrive, for at most 30 seconds in total. The new ef_missing_measurements field names the reports that did not arrive. The server log shows one line each time that list changes.

The diagnostic tool now uses the River 2 heartbeat list from the decoder.
This commit is contained in:
tim
2026-10-10 09:03:35 +02:00
parent b569bcf27b
commit 161ae7ee65
9 changed files with 249 additions and 11 deletions
+6
View File
@@ -27,6 +27,12 @@ rules for interpreting the device reports.
| `bms_charge_is_charging` | Whether battery-side power flows into the battery. |
| `bms_charge_is_discharging` | Whether battery-side power flows out of the battery. |
| `ef_charge_state` | Numeric device state code. Observed R601 values are 0 for idle, 1 for charging, and 2 for discharging. |
| `ef_missing_measurements` | Text. Required reports that the server collection did not receive, or empty text for a complete collection. |
The server collection requires the PD, EMS, and BMS heartbeats from River 2.
From River 3 it requires battery charge, total input and output power, battery
power, one battery temperature, and both time estimates. Receipt counts, not the
value, so an unavailable estimate still completes the collection.
Input power alone does not indicate battery charging. The device can supply an
AC load without charging its battery. Do not apply River 2 state-code meanings