Set MQTT Thermostat Temperature Unit

I recently got a LinkNLink eRemote to control a Fujitsu mini split. It uses MQTT to connect with Home Assistant. It sends thermostat values as Celsius, and because the device doesn’t clarify which temperature unit it’s using, Home Assistant defaults to the system unit, which is Fahrenheit.


(the shed isn’t that cold I promise)

Is there any way to set the temperature units that a Thermostat is using? I know sensors have a unit_of_measure attribute, but that doesn’t seem to be the case for thermostats.

The MQTT discovery data is as follows:

object_id: lnlinkha_uuid
unique_id: uuid
availability_topic: home/uuid/available
icon: mdi:air-conditioner
state_topic: home/uuid/state
command_topic: home/uuid/set
temperature_command_topic: home/uuid/set/temp
fan_mode_command_topic: home/uuid/set/fan
mode_command_topic: home/uuid/set/mode
json_attributes_topic: home/uuid/state
temperature_state_topic: home/uuid/state
current_temperature_topic: home/uuid/state
fan_mode_state_topic: home/uuid/state
mode_state_topic: home/uuid/state
temp_step: 1
fan_modes:
  - auto
  - low
  - medium
  - high
value_template: '{{value_json.temp}}'
current_temperature_template: '{{value_json.envtemp}}'
fan_mode_value_template: '{% set modes = [''auto'',''low'',''medium'',''high''] %}{{modes[value_json.ac_mark]}}'
power_command_template: '{% set payload = {''pwr'': 1 if value == ''ON'' else 0} %}{{payload | to_json}}'
temperature_command_template: '{% set payload = {''temp'': value} %}{{payload | to_json}}'
fan_mode_command_template: >-
  {% set modes = {'auto':0,'low':1,'medium':2,'high':3} %}{% set payload =
  {'ac_mark': modes[value]} %}{{payload | to_json}}
mode_state_template: >-
  {% if value_json.pwr == 0 %}off{% else %}{% set modes =
  ['auto','cool','dry','fan_only','heat'] %}{{modes[value_json.ac_mode]}}{%
  endif %}
mode_command_template: >-
  {% if value == 'off' %}{% set payload = {'pwr':0} %}{% else %}{% set modes =
  {'auto':0,'cool':1,'dry':2,'fan_only':3,'heat':4} %}{% set payload =
  {'ac_mode': modes[value], 'pwr':1} %}{% endif %}{{payload | to_json}}
device:
  identifiers:
    - uuid
  model: ' from eRemote'
  manufacturer: LinknLink
  name: Shed Thermostat
max_temp: 32
name: AC from eRemote
min_temp: 16
modes:
  - 'off'
  - auto
  - cool
  - heat
  - dry
  - fan_only

I’ve tried adding the temperature unit to the configuration yaml per the MQTT HVAC documentation, but that doesn’t seem to do anything.

homeassistant:
    customize:
        climate.shed:
            temperature_unit: "C"

Is there anything I’m missing or any way to tell Home Assistant that the thermostat is sending the temperature as Celsius so Home Assistant can convert it to Fahrenheit for me? I know one option would be to create a separate sensor that does a conversion for me, but I’d really rather the thermostat information show as Fahrenheit when I’m adjusting the thermostat on a card or in the entity popup.

homeassistant:
  customize:
    climate.shed:
      temperature_unit: "°C"

No change. I’ve tried every variation of C, c, °C, °c and no matter what I’ve done it doesn’t seem to read the value. I verified that the temperature unit is set in the Developer Tools, but the thermostat card/entity popup still show the wrong value.

Then you need to raise an issue with LinkNLink eRemote, as that is what is publishing the incomplete data (no temperature_unit).