Add LiPo battery monitoring with ESP-NOW cache and dashboard API.
Slaves report pack voltages every 30s; the master caches them for fast BATTERY_STATUS reads. goTool exposes REST/WebSocket and shows values in the dashboard, with a nanopb fix so optional lipo submessages encode. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -24,6 +24,7 @@ enum MessageType {
|
||||
RESTART = 23;
|
||||
ACCEL_SNAPSHOT = 24;
|
||||
ACCEL_STREAM = 25;
|
||||
BATTERY_STATUS = 26;
|
||||
}
|
||||
|
||||
message UartMessage {
|
||||
@@ -54,6 +55,8 @@ message UartMessage {
|
||||
AccelSnapshotResponse accel_snapshot_response = 24;
|
||||
AccelStreamRequest accel_stream_request = 25;
|
||||
AccelStreamResponse accel_stream_response = 26;
|
||||
BatteryStatusRequest battery_status_request = 27;
|
||||
BatteryStatusResponse battery_status_response = 28;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,6 +133,33 @@ message AccelStreamResponse {
|
||||
uint32 slaves_updated = 4;
|
||||
}
|
||||
|
||||
/** Host → master: read LiPo ADC voltages (master local and/or slaves via ESP-NOW). */
|
||||
message BatteryStatusRequest {
|
||||
/** 0 = master only; >0 = one slave; ignored when all_clients */
|
||||
uint32 client_id = 1;
|
||||
/** Master (client_id 0) plus every registered slave */
|
||||
bool all_clients = 2;
|
||||
}
|
||||
|
||||
message LipoReading {
|
||||
bool valid = 1;
|
||||
/** Estimated pack voltage in millivolts from ADC */
|
||||
uint32 voltage_mv = 2;
|
||||
}
|
||||
|
||||
message BatterySample {
|
||||
uint32 client_id = 1;
|
||||
LipoReading lipo1 = 2;
|
||||
LipoReading lipo2 = 3;
|
||||
/** Milliseconds since last ESP-NOW battery report from this pod. */
|
||||
uint32 age_ms = 4;
|
||||
}
|
||||
|
||||
message BatteryStatusResponse {
|
||||
bool success = 1;
|
||||
repeated BatterySample samples = 2 [(nanopb).max_count = 17];
|
||||
}
|
||||
|
||||
// Host → master: read cached accel samples from slaves (only while stream enabled).
|
||||
// client_id 0 = all registered slaves; otherwise one slave.
|
||||
message AccelSnapshotRequest {
|
||||
|
||||
Reference in New Issue
Block a user