A battery monitoring system comprising: a battery; a monitor circuit embedded in or attached to the battery; a processor in electronic communication with the monitor circuit; and a tangible, non-transitory memory configured to communicate with the processor, the tangible, non-transitory memory having instructions stored thereon, the processor is configured to execute the instructions to perform operations comprising: receiving, by the processor, voltage data of the battery measured by the monitor circuit; receiving, by the processor, temperature data of the battery measured by the monitor circuit; characterised in that the operations further comprise: storing, by the processor, a battery operating history comprising the voltage data and the temperature data in a battery operating history matrix, wherein the battery operating history matrix comprises: a plurality of columns, each column representing a voltage range within which the battery operates, such that the plurality of columns covers all possible operating voltages of the battery; a plurality of rows each row representing a temperature range within which the battery operates, such that the plurality of rows covers all possible operating temperatures of the battery, wherein a numerical value in a cell of the battery operating history matrix represents a cumulative amount of time that the battery has been in a particular state corresponding to the voltage range and the temperature range for that cell; and transmitting, by the processor, the battery operating history matrix to a remote device. a battery; a monitor circuit embedded in or attached to the battery; a processor in electronic communication with the monitor circuit; and a tangible, non-transitory memory configured to communicate with the processor, the tangible, non-transitory memory having instructions stored thereon, the processor is configured to execute the instructions to perform operations comprising: receiving, by the processor, voltage data of the battery measured by the monitor circuit; receiving, by the processor, temperature data of the battery measured by the monitor circuit; characterised in that the operations further comprise: storing, by the processor, a battery operating history comprising the voltage data and the temperature data in a battery operating history matrix, wherein the battery operating history matrix comprises: a plurality of columns, each column representing a voltage range within which the battery operates, such that the plurality of columns covers all possible operating voltages of the battery; a plurality of rows each row representing a temperature range within which the battery operates, such that the plurality of rows covers all possible operating temperatures of the battery, wherein a numerical value in a cell of the battery operating history matrix represents a cumulative amount of time that the battery has been in a particular state corresponding to the voltage range and the temperature range for that cell; and transmitting, by the processor, the battery operating history matrix to a remote device. receiving, by the processor, voltage data of the battery measured by the monitor circuit; receiving, by the processor, temperature data of the battery measured by the monitor circuit; characterised in that the operations further comprise: storing, by the processor, a battery operating history comprising the voltage data and the temperature data in a battery operating history matrix, wherein the battery operating history matrix comprises: a plurality of columns, each column representing a voltage range within which the battery operates, such that the plurality of columns covers all possible operating voltages of the battery; a plurality of rows each row representing a temperature range within which the battery operates, such that the plurality of rows covers all possible operating temperatures of the battery, wherein a numerical value in a cell of the battery operating history matrix represents a cumulative amount of time that the battery has been in a particular state corresponding to the voltage range and the temperature range for that cell; and transmitting, by the processor, the battery operating history matrix to a remote device. a plurality of columns, each column representing a voltage range within which the battery operates, such that the plurality of columns covers all possible operating voltages of the battery; a plurality of rows each row representing a temperature range within which the battery operates, such that the plurality of rows covers all possible operating temperatures of the battery, wherein a numerical value in a cell of the battery operating history matrix represents a cumulative amount of time that the battery has been in a particular state corresponding to the voltage range and the temperature range for that cell; and transmitting, by the processor, the battery operating history matrix to a remote device.