diff --git a/server/src/services/batteryManager.js b/server/src/services/batteryManager.js index 6088e3a6..12ebde9d 100644 --- a/server/src/services/batteryManager.js +++ b/server/src/services/batteryManager.js @@ -93,8 +93,16 @@ function handleSensorEvent({ roverId, sensors, batteryState }) { }); } - if (state.batteryLocked && (isFull || !dockedCharging)) { - logger.info('Unlocking rover after charge', { roverId, isFull, docked: dockedCharging }); + const waitingState = chargingState === 4; + const shouldUnlock = state.batteryLocked && (!dockedCharging || (isFull && waitingState)); + + if (shouldUnlock) { + logger.info('Unlocking rover after charge', { + roverId, + isFull, + docked: dockedCharging, + waitingState, + }); lockRover(roverId, false, { reason: 'battery' }); state.batteryLocked = false; publishEvent({