PID Climate maximum value too low

I built a mug warmer using an ESP32 D1 Mini and a spare Prusa XL Heatbed tile with ESPHome. The problem is, that after setting the initial PID temperature in ESPHome, the maximum temperature that I can set defaults to 30°C. I’m using PID Climate (which seems to be the only sort of PID tuning available in ESPHome), and there doesn’t seem to be an option to set the maximum temperature higher than 30°C. Of course, this makes sense in any other normal setting (who wants teir rooms warmer than 30°C?), but I’d love to be able to set the temperature at around 60-70°C, so my drinks stay warm. Wiring up the tile without some sort of PID control results in much higher temps (around 90-100°C) which is too hot for the other parts (printed PETG parts get soft), so that is not an option either, unfortunately.

If anyone has an idea how I can change this, I would appreciate it very much. This is the last thing that keeps me from finishing my project. :slight_smile:

ESPHome config:

 sensor:
   - platform: dallas_temp
   address: 0x53062017a4f9aa28
    name: temperature
    id: temperature
    update_interval: 2s
  - platform: ntc
    id: temperature2
    sensor: 
    calibration:
      #- 42.302kOhm -> 27°C
      #- 47.85kOhm -> 40°C
      #- 25.352kOhm -> 65°C
      #- 10.430kOhm -> 85°C
      reference_resistance: 100kOhm
      reference_temperature: 25°C
      b_constant: 3950
      
  - platform: resistance
    id: resistance_sensor
    sensor: source_sensor
    configuration: DOWNSTREAM
    resistor: 100kOhm
    name: Resistance sensor
  - platform: adc
    id: source_sensor
    pin: GPIO35
   update_interval: 2s
 

# Example configuration entry
output:
  - platform: ledc
    pin: GPIO4
    id: heater

# Example usage in a light
light:
  - platform: monochromatic
    output: heater
    name: "heater mosfet"

climate:
  - platform: pid
    id: pid_climate
    name: "PID Climate Controller"
    sensor: temperature
    default_target_temperature: 60°C
    heat_output: heater
    control_parameters:
      kp: 0.0
      ki: 0.0
      kd: 0.0
      output_averaging_samples: 5      # smooth the output over 5 samples
      derivative_averaging_samples: 5  # smooth the derivative value over 10 samples
    deadband_parameters:
      threshold_high: 0.5°C       # deadband within +/-0.5°C of target_temperature
      threshold_low: -0.5°C

button:
  - platform: template
    name: "PID Autotune"
    on_press:
      - climate.pid.autotune: pid_climate

According to the docs, you can set min/max on any climate component:

Forget what I said, I forgot a line. It works, thank you so much :heart:

climate:
  - platform: pid
    id: pid_climate
    name: "PID Climate Controller"
    sensor: temperature
    visual:
      min_temperature: 20
      max_temperature: 70
    default_target_temperature: 60°C
    heat_output: heater
    control_parameters:
      kp: 0.0
      ki: 0.0
      kd: 0.0
      output_averaging_samples: 5      # smooth the output over 5 samples
      derivative_averaging_samples: 5  # smooth the derivative value over 10 samples
    deadband_parameters:
      threshold_high: 0.5°C       # deadband within +/-0.5°C of target_temperature
      threshold_low: -0.5°C
1 Like