DIYLESS module. Heating won't start in the morning

The last couple of weeks I have been trying to get my Opentherm DIYLESS module to start the boiler in the morning. I have a Daalderop Combifort 24/50+ boiler and the module works oke during daytime. But it won’t start in the morning.
In the logfiles I can see that the output stays 0 even when I set the taget temperature higher. I use a heartbeat of 5 seconds so the module stays active.
The workaround I use now is reloading the yaml code and than the boiler is starting fine.

NFO Successful handshake with ot-thermostaat @ 192.168.2.167 in 0.218s
[07:56:49.503][I][app:185]: ESPHome version 2025.10.3 compiled on Oct 27 2025, 06:55:44
[07:56:58.662][I][climate:221]: Mode=HEAT, Target=19.0, Current=18.3, Output=0.0
[07:56:58.669][I][main:243]: climate mode=HEAT, target=19.0, current=18.3, output=0.0
[07:56:58.669][I][interval:258]: Update - Temp=18.3, Target=19.0, CH=0, Flame=0

This is the Climate part of the code.

# Use PID Climate component for automatic boiler setpoint calculation
climate:
  - platform: pid
    id: ch_climate
    name: "Heating Climate"
    heat_output: ch_setpoint
    default_target_temperature: 19.0
    sensor: wnk_temperature_plankje
    visual:
      min_temperature: 10
      max_temperature: 26
      temperature_step:
        target_temperature: 0.5
        current_temperature: 0.1
    control_parameters:
      kp: 0.5
      ki: 0.001
      kd: 0 # Derivative term reacts too much to small changes in temperature, effectively turning off the boiler while target temperature is still far
      output_averaging_samples: 5
      min_integral: -50.0
      max_integral: 50.0
    deadband_parameters:
      threshold_high: 0.3
      threshold_low: -0.3
      kp_multiplier: 0
      ki_multiplier: 0.5
      kd_multiplier: 0.0
      deadband_output_averaging_samples: 10
    on_state:
      - lambda: |-
          ESP_LOGI("climate", "Mode=%s, Target=%.1f, Current=%.1f, Output=%.1f", 
            climate_mode_to_string(x.mode), 
            x.target_temperature, 
            id(wnk_temperature_plankje).state,
            id(ch_setpoint).state);
      - if:
          condition:
            lambda: 'return x.mode == CLIMATE_MODE_HEAT;'
          then:
            - if:
                condition:
                  lambda: 'return id(wnk_temperature_plankje).state < x.target_temperature;'
                then:
                  - switch.turn_on: ch_enable
                else:
                  - switch.turn_off: ch_enable
          else:
            - switch.turn_off: ch_enable

      - logger.log:
          format: "climate mode=%s, target=%.1f, current=%.1f, output=%.1f"
          args: ['std::string(LOG_STR_ARG(climate_mode_to_string(x.mode))).c_str()', 'x.target_temperature', 'id(wnk_temperature_plankje).state', 'id(ch_setpoint).state']
          level: INFO

I am out of options and don’t know how to solve this anymore.

My first guess would be to remove the lambda condition at the end of you config…

But I just started to get this diyless thing to work on my own cv. So definitely not the most experienced user here…