An auto-programming control system for a combustion burner having a plurality of burner firing rates, comprising: a controller configured to control an air-fuel ratio of a fluid flow to the combustion burner; a memory in communication with the controller; and wherein the controller is configured to fire the combustion burner at each of the plurality of burner firing rates, and at each of the plurality of burner firing rates the controller is configured to: set an air-fuel setting; receive a measure of a combustion constituent exiting a combustion chamber of the combustion burner at the air-fuel setting; determine a difference between the measure of the combustion constituent exiting the combustion chamber and a set point; and adjust the air-fuel setting until the difference between the measure of the combustion constituent exiting the combustion chamber and the set point is below a threshold, and then save an association between the air-fuel setting and the corresponding one of the plurality of burner firing rates to the memory; and move to a next burner firing rate of the plurality of burner firing rates and repeat, and a sensor in communication with the controller via an input/output port in communication with the controller, the sensor configured to sense and provide the measure of the combustion constituent exiting the combustion chamber to the controller, the system being characterised in that the controller is configured to calibrate the sensor by comparing an expected value to the measure of the combustion constituent exiting the combustion chamber when an air flow is provided through the combustion chamber without combustion. a controller configured to control an air-fuel ratio of a fluid flow to the combustion burner; a memory in communication with the controller; and wherein the controller is configured to fire the combustion burner at each of the plurality of burner firing rates, and at each of the plurality of burner firing rates the controller is configured to: set an air-fuel setting; receive a measure of a combustion constituent exiting a combustion chamber of the combustion burner at the air-fuel setting; determine a difference between the measure of the combustion constituent exiting the combustion chamber and a set point; and adjust the air-fuel setting until the difference between the measure of the combustion constituent exiting the combustion chamber and the set point is below a threshold, and then save an association between the air-fuel setting and the corresponding one of the plurality of burner firing rates to the memory; and move to a next burner firing rate of the plurality of burner firing rates and repeat, and a sensor in communication with the controller via an input/output port in communication with the controller, the sensor configured to sense and provide the measure of the combustion constituent exiting the combustion chamber to the controller, the system being characterised in that the controller is configured to calibrate the sensor by comparing an expected value to the measure of the combustion constituent exiting the combustion chamber when an air flow is provided through the combustion chamber without combustion. set an air-fuel setting; receive a measure of a combustion constituent exiting a combustion chamber of the combustion burner at the air-fuel setting; determine a difference between the measure of the combustion constituent exiting the combustion chamber and a set point; and adjust the air-fuel setting until the difference between the measure of the combustion constituent exiting the combustion chamber and the set point is below a threshold, and then save an association between the air-fuel setting and the corresponding one of the plurality of burner firing rates to the memory; and move to a next burner firing rate of the plurality of burner firing rates and repeat, and a sensor in communication with the controller via an input/output port in communication with the controller, the sensor configured to sense and provide the measure of the combustion constituent exiting the combustion chamber to the controller, the system being characterised in that the controller is configured to calibrate the sensor by comparing an expected value to the measure of the combustion constituent exiting the combustion chamber when an air flow is provided through the combustion chamber without combustion.