A battery power management unit, BPMU, for an electrical energy storage system, comprising: a microcontroller configured to be in communication with at least one battery pack; one or more processors connected with the microcontroller and having at least one tangible, non-transitory machine readable medium encoded with one or more programs, and the BPMU configured to perform steps of: reading data from the internal battery management unit, BMU, of a respective battery pack to establish capacity, an energy baseline, and an initial value of state of charge, SOC, of the respective battery pack, wherein the energy baseline is the total operable capacity of a new battery pack; defining an idle time for each respective battery pack so as to refresh the internal BMU of the respective battery pack; checking voltage and current of the respective battery pack at a time interval; calculating power of the respective battery pack based on the voltage and the current, and integrating the power into an energy reading of the respective battery pack; determining and updating state of charge, SOC, of the respective battery pack based on the initial value of SOC, the current, and the time interval; and transmitting updated data of the respective battery pack including the SOC and the energy reading to a system controller for controlling discharging power from or charging power to the respective battery pack based on the updated data of the respective battery pack. a microcontroller configured to be in communication with at least one battery pack; one or more processors connected with the microcontroller and having at least one tangible, non-transitory machine readable medium encoded with one or more programs, and the BPMU configured to perform steps of: reading data from the internal battery management unit, BMU, of a respective battery pack to establish capacity, an energy baseline, and an initial value of state of charge, SOC, of the respective battery pack, wherein the energy baseline is the total operable capacity of a new battery pack; defining an idle time for each respective battery pack so as to refresh the internal BMU of the respective battery pack; checking voltage and current of the respective battery pack at a time interval; calculating power of the respective battery pack based on the voltage and the current, and integrating the power into an energy reading of the respective battery pack; determining and updating state of charge, SOC, of the respective battery pack based on the initial value of SOC, the current, and the time interval; and transmitting updated data of the respective battery pack including the SOC and the energy reading to a system controller for controlling discharging power from or charging power to the respective battery pack based on the updated data of the respective battery pack. reading data from the internal battery management unit, BMU, of a respective battery pack to establish capacity, an energy baseline, and an initial value of state of charge, SOC, of the respective battery pack, wherein the energy baseline is the total operable capacity of a new battery pack; defining an idle time for each respective battery pack so as to refresh the internal BMU of the respective battery pack; checking voltage and current of the respective battery pack at a time interval; calculating power of the respective battery pack based on the voltage and the current, and integrating the power into an energy reading of the respective battery pack; determining and updating state of charge, SOC, of the respective battery pack based on the initial value of SOC, the current, and the time interval; and transmitting updated data of the respective battery pack including the SOC and the energy reading to a system controller for controlling discharging power from or charging power to the respective battery pack based on the updated data of the respective battery pack.