ESPHome - sterowanie grzałką

Witam
Potrzebuję pomocy, aby zrobić sobie sterowanie grzałką. Mam pomiar temperatury wody przez czujnik DS18b20 podłączony do ESP32 pod GPIO5, następnie pod GPIO13 podłączony jest przekaźnik. Teoretycznie logika jest prosta:

  • temperatura spada poniżej 25°C załącza się przekaźnik
  • temperatura przekracza 27°C przekaźnik się wyłącza

Mam obecnie taki kod:

esphome:
  name: sterownikakwarium
  friendly_name: sterownikakwarium

esp32:
  board: esp32dev
  framework:
    type: arduino




# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "zAaUkkXiKhhpXCJdCU3PSB5yv1B9tPVUtDWnJgzM/ww="

ota:
  - platform: esphome
    password: "cc386af11b4bce7a078599cada8a7e9b"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  #use_address: 192.168.0.228
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Sterownikakwarium"
    password: "Oed8RkJgWCrd"



one_wire:
  - platform: gpio
    pin: GPIO5

sensor:
  - platform: dallas_temp
    address: 0x7f0921c0ff653228  # Zmień na adres swojego czujnika
    name: temperatura_wody
    id: temperatura_wody
    unit_of_measurement: °C
    update_interval: 3s

switch:
  - platform: gpio
    name: przekaznik_grzalka
    id: pk_grzalka
    pin:
      number: GPIO13
      mode:
        output: true

automation:
  - trigger:
      - platform: state
        entity_id: sensor.temperatura_wody
    condition:
      - condition: template
        value_template: "{{ states('sensor.temperatura_wody') | float < 25 }}"
    action:
      - service: switch.turn_on
        target:
          entity_id: pk_grzalka

  - trigger:
      - platform: state
        entity_id: sensor.temperatura_wody
    condition:
      - condition: template
        value_template: "{{ states('sensor.temperatura_wody') | float > 27 }}"
    action:
      - service: switch.turn_off
        target:
          entity_id: pk_grzalka

ale cały czas pokazuje błędy w sekcji >automation< i nie mogę go skompilować.
Ogólnie chcę stworzyć prosty sterownik do akwarium.
Obecnie mam to zrobione na Blynk-u i swoim serwerze.

Witamy na forum, jak miło, że mamy prawidłowo wstawiony kod.
W dokumentacji samego ESPHome masz gotową implementację dla takiego zastosowania:

Thermostat Climate Controller — ESPHome

Bang Bang Climate Controller — ESPHome

2 polubienia

Dzięki za kierunek, chyba trochę chciałem przekombinować, już przetestowałem Bang_Bang wydaje się mi pasować.
Pytanie jak można zmienić wyświetlanie aby na czerwono było wyświetlane tylko zakres pracy podgrzewania?

image

Podaj kod YAML to będzie można porównać z dokumentacją.

Za część wizualną odpowiada komponent Climate Component — ESPHome:
A dokładniej sekcja visual

esphome:
  name: sterownikakwarium
  friendly_name: sterownikakwarium

esp32:
  board: esp32dev
  framework:
    type: arduino




# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "zAaUkkXiKhhpXCJdCU3PSB5yv1B9tPVUtDWnJgzM/ww="

ota:
  - platform: esphome
    password: "cc386af11b4bce7a078599cada8a7e9b"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  #use_address: 192.168.0.228
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Sterownikakwarium"
    password: "Oed8RkJgWCrd"

captive_portal:
  

one_wire:
  - platform: gpio
    pin: GPIO5

sensor:
  - platform: dallas_temp
    address: 0x7f0921c0ff653228  # Zmień na adres swojego czujnika
    name: temperatura_wody
    id: temperatura_wody
    unit_of_measurement: °C
    update_interval: 3s

switch:
  - platform: gpio
    name: przekaznik_grzalka
    id: pk_grzalka
    pin:
      number: GPIO13
      mode:
        output: true

climate:
  - platform: bang_bang
    visual: 
      max_temperature: 30
      min_temperature: 20
      
    name: "Termostat akwarium"
    sensor: temperatura_wody
    default_target_temperature_low: 25 °C
    default_target_temperature_high: 27 °C

    heat_action:
      - switch.turn_on: pk_grzalka
    idle_action:
      - switch.turn_off: pk_grzalka
      

@HeniuGG w tym przypadku wystarczy tylko fragment kodu z climate, reszta kodu ESPHome jest nieistotna w tym przypadku.