Esphome - rozbudowa modułu Climate

Cześć
Jako że minął sezon grzewczy, chciałbym przebudować system którego używałem do tej pory.
Ogrzewanie swojego warsztatu mam zrealizowane za pomocą nagrzewnicy wodnej i osobnej pompy obiegowej do niej. Na chwilę obecną I bieg dmuchawy nagrzewnicy był połączony równolegle z zasilaniem pompy co przy ogrzewaniu warsztatu sprawdzało się w 100 procentach. Poniżej kod z którego korzystam.

climate:
  - platform: thermostat
    name: "Warsztat"
    sensor: Tmp
    min_heating_off_time: 30s
    min_heating_run_time: 30s
    min_idle_time: 30s
    heat_deadband: 0.2
    heat_overrun: 0.2
    heat_action:
      - switch.turn_on: pk30a1
    idle_action:
      - switch.turn_off: pk30a1
    default_preset: Grzanie
    preset:
      - name: Grzanie
        default_target_temperature_low: 23 °C
      - name: Noc
        default_target_temperature_low: 16 °C

W ramach przebudowy chcę dołożyć kilka funkcji ale nie wiem jak to ogarnąć programowo:

  1. Dołożyłem 3 kolejne przekaźniki (razem są 4) gdzie jeden ma włączać pompę a 3 kolejne sterować prędkością wentylatora nagrzewnicy. Ma to na celu użycie samego wentylatora do chłodzenia warsztatu bez włączania pompy.
  2. Pomiędzy pompą a nagrzewnicą zamontowałem zawór przełączający (ręczny z możliwością założenia siłownika) który umożliwia mi użycie pompy albo do zasilania nagrzewnicy, albo do ogrzewania wody w basenie przez wymiennik płytowy.

Przechodzimy do sedna sprawy.
Szukałem ale nie znalazłem odpowiedzi jak w module Climate obsłużyć 3 biegi wentylatora i osobno chłodzenie czyli praca bez pompy.
Jednocześnie muszę mieć możliwość włączenia samej pompy w trybie grzania basenu (beż żadnej automatyki temperaturowej). Podejrzewam że przyda się tu jakiś przełącznik w stylu “Grzanie warsztatu / grzanie basenu”
Hydraulika i elektryka jest zrobiona ale brakuje mi sporo wiedzy programistycznej.
Czy ktoś z Was może mi w tym pomóc?

Edit:

Zmodyfikowałem kod do obsługi grzania i chłodzenia oraz prędkości wentylatora.
Problem pojawia się kiedy próbuję uzależnić prędkość w zależności od temperatury (błąd kompilacji).
Gdzie popełniam błąd?

climate:
  - platform: thermostat
    name: "Warsztat"
    id: termostat
    sensor: Tmp
    visual:
      min_temperature: 15
      max_temperature: 40
    min_cooling_off_time: 1s
    min_cooling_run_time: 1s
    min_heating_off_time: 1s
    min_heating_run_time: 1s
    min_idle_time: 1s
    heat_deadband: 0.2
    heat_overrun: 0.2

    heat_action:
      - switch.turn_on: pompawent
      - fan.turn_on:
          id: flowair
          speed: 1

    cool_action:
      - fan.turn_on:
          id: flowair
          speed:
            value: !lambda |-
              if (id(termostat).current_temperature > id(termostat).target_temperature_high +6) {
              return "3";
              }
              if (id(termostat).current_temperature > id(termostat).target_temperature_high +3) {
              return "2";
              } else {
              return "1";
              }

    idle_action:
      - fan.turn_off: flowair
      - switch.turn_off: pompawent
    default_preset: Warsztat
    preset:
      - name: Warsztat
        default_target_temperature_low: 18.0
        default_target_temperature_high: 25.0