Off defaults to none in mqtt climate entity

I have a template with an if statement to check if my eq3 valve is closed and in manual mode. However, the preset_moded defaults to ‘none’ if I set it in my if statement to ‘off’. Any idea why?

      hold_state_template: >-
        {% if value_json.temp == 4.5 and value_json.mode == 'manual' %}
          off # is set to none ?!
        {% elif value_json.temp == 30 and value_json.mode == 'manual' %}
          on
        {% else %}   
          {{ value_json.mode }}
        {% endif %}  

complete config:

    - name: TRV
      modes: ["heat","off","auto"]
      min_temp: 4.5
      max_temp: 30
      precision: 0.1
      temp_step: 0.5
      mode_command_topic: cmnd/tasmota_ble/EQ3/001A2216F844/mode
      temperature_command_topic: cmnd/tasmota_ble/EQ3/001A2216F844/settemp
      current_temperature_topic: stat/EQ3/001A2216F844
      current_temperature_template: '{{ value_json.temp }}'
      mode_state_topic: stat/EQ3/001A2216F844
      mode_state_template: >-
        {% if value_json.temp == 4.5 %}
          off
        {% elif value_json.hassmode == 'auto' %}
          auto
        {% else %}   
          heat
        {% endif %}  
      hold_modes: ["auto","manual","off","on","boost","lock","unlock","day","night"]
      hold_command_topic: cmnd/tasmota_ble/EQ3/001A2216F844
      hold_state_template: >-
        {% if value_json.temp == 4.5 and value_json.mode == 'manual' %}
          off
        {% elif value_json.temp == 30 and value_json.mode == 'manual' %}
          on
        {% else %}   
          {{ value_json.mode }}
        {% endif %}  
      hold_state_topic: stat/EQ3/001A2216F844