FWIW, the generic_thermostat integration will use almost anything you throw at it, including an input_number entity for target_sensor and an input_boolean for heater. It’s happy as long as:
target_sensorcontains a numeric valueheateraccepts an on/off command
The numeric values could be in Kelvin, Celsius, Fahrenheit, or Rankine, the generic_thermostat integration doesn’t concern itself with the unit system.
The issue is that the generic_thermostat will be displayed, by the Thermostat card, using the default unit system (in this case metric instead of imperial units). It doesn’t have a configuration option to change the displayed unit system.

One way around this would be to use a custom thermostat card such as nervetattoo’s Simple Thermostat Card which allows you to choose an alternate temperature unit (or show none).
unitstring|bool: Override the unit to display. Set to false to hide unit