Automatyzacja która jest właściwa bardziej poprawniejsza

Witam ostatnio zauważyłem że czasami jest w logu automatyzacja została już wyzwolona i nie wiem co jest przyczyną. Jedną automatyzację miałem tak zrobioną ale chciałem wykorzystać "jeżeli " żeby było bardziej poprawniej więc która automatyzacja jest poprawna lub zbliżona do poprawnej

Pompa kotlownia

id: '16864208
alias: Pompa kotlownia
description: ''
triggers:
  - type: temperature
    device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
    entity_id: sensor.tasmota_ds18b20_1_temperature
    domain: sensor
    below: 33
    trigger: device
  - type: temperature
    device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
    entity_id: sensor.tasmota_ds18b20_1_temperature
    domain: sensor
    above: 30
    trigger: device
  - value_template: '{{float(states(''sensor.tasmota_ds18b20_1_temperature''))>30}}'
    trigger: template
  - value_template: '{{float(states(''sensor.tasmota_ds18b20_1_temperature''))<33}}'
    trigger: template
conditions: []
actions:
  - if:
      - condition: device
        type: is_on
        device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
        entity_id: switch.sonofftemp
        domain: switch
      - type: is_temperature
        condition: device
        device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
        entity_id: sensor.tasmota_ds18b20_1_temperature
        domain: sensor
        below: 34
      - condition: template
        value_template: '{{float(states(''sensor.tasmota_ds18b20_1_temperature''))<34}}'
    then:
      - type: turn_off
        device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
        entity_id: switch.sonofftemp
        domain: switch
    else: []
  - if:
      - condition: device
        type: is_off
        device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
        entity_id: switch.sonofftemp
        domain: switch
      - condition: template
        value_template: '{{float(states(''sensor.tasmota_ds18b20_1_temperature''))>29}}'
    then:
      - type: turn_on
        device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
        entity_id: switch.sonofftemp
        domain: switch
mode: single

A tutaj z " jeżeli" będę wdzięczny jeżeli ktoś poprawi lub podpowie co zrobić aby było poprawnie.Nadmieniam.ze wszystko działa ale.nie wiem czy nie jest za dużo wyzwalaczy.
Wykorzystałem template oraz encje temperatury powyżej i poniżej jakby Template nie zadziałał bo by miał już wartość true a pompka byłaby zgaszona.

alias: Pompa test
description: ""
triggers:
  - type: temperature
    device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
    entity_id: sensor.tasmota_ds18b20_1_temperature
    domain: sensor
    below: 33
    trigger: device
  - type: temperature
    device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
    entity_id: sensor.tasmota_ds18b20_1_temperature
    domain: sensor
    above: 30
    trigger: device
  - value_template: "{{float(states('sensor.tasmota_ds18b20_1_temperature'))<31}}"
    trigger: template
  - value_template: "{{float(states('sensor.tasmota_ds18b20_1_temperature'))<33}}"
    trigger: template
  - value_template: "{{float(states('sensor.tasmota_ds18b20_1_temperature'))>30}}"
    trigger: template
  - value_template: "{{float(states('sensor.tasmota_ds18b20_1_temperature'))>35}}"
    trigger: template
  - value_template: "{{float(states('sensor.tasmota_ds18b20_1_temperature'))>40}}"
    trigger: template
conditions: []
actions:
  - if:
      - condition: device
        type: is_on
        device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
        entity_id: switch.sonofftemp
        domain: switch
      - condition: or
        conditions:
          - condition: template
            value_template: "{{float(states('sensor.tasmota_ds18b20_1_temperature'))<34}}"
          - type: is_temperature
            condition: device
            device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
            entity_id: sensor.tasmota_ds18b20_1_temperature
            domain: sensor
            below: 34
    then:
      - type: turn_off
        device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
        entity_id: switch.sonofftemp
        domain: switch
        enabled: true
    else: []
  - if:
      - condition: device
        type: is_off
        device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
        entity_id: switch.sonofftemp
        domain: switch
      - condition: template
        value_template: "{{float(states('sensor.tasmota_ds18b20_1_temperature'))>29}}"
      - condition: or
        conditions:
          - condition: or
            conditions:
              - condition: template
                value_template: "{{float(states('sensor.tasmota_ds18b20_1_temperature'))>30}}"
              - type: is_temperature
                condition: device
                device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
                entity_id: sensor.tasmota_ds18b20_1_temperature
                domain: sensor
                above: 30
    then:
      - type: turn_on
        device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
        entity_id: switch.sonofftemp
        domain: switch
        enabled: true
mode: single

Chciałbym aby automatyzacja była zrobiona jak teraz np pompka włączona obniżenie temperatury i pompka wyłącz a jeżeli pompka wyłączona a temperatura powyżej to pompka włącz.

A.tutaj.log

homeassistant.components.automation.nowa_automatyzacja_2
Źródło: helpers/script.py:2041
integracja: Automatyzacja
Pierwsze zdarzenie: 14:26:31 (1 zdarzenia)
Ostatnio zalogowany: 14:26:31

Pompa test: Already running
Wyzwolony przez sensor.tasmota_ds18b20_1_temperature via template o 24 stycznia 2025 14:41:31
Zatrzymano, ponieważ tylko pojedyncze wykonanie jest dozwolone o 24 stycznia 2025 14:41:31 (czas wykonania: 0.00 sekund)

Łatwiej jeśli użyjesz wirtualnego termostatu

Przykład (w configuration.yaml )

climate:
  - platform: generic_thermostat
    name: Pompa kotłownia
    heater: switch.sonofftemp
    target_sensor: sensor.tasmota_ds18b20_1_temperature
    min_temp: 29
    max_temp: 34
    target_temp: 32
    cold_tolerance: 0.5
    hot_tolerance: 0.5
    ac_mode: false
    initial_hvac_mode: "heat"
    precision: 0.1

Jeśli chcesz korzystać z automatyzacji do sterowania to raczej powinieneś zrobić t w ten sposób:

alias: Pompa kotłownia, sterowanie 
description: ''
trigger:
  - platform: numeric_state
    entity_id: sensor.tasmota_ds18b20_1_temperature
    above: 30  # Włączenie, jeśli powyżej
  - platform: numeric_state
    entity_id: sensor.tasmota_ds18b20_1_temperature
    below: 33  # Wyłączenie, jeśli poniżej
condition: []
action:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.tasmota_ds18b20_1_temperature
            above: 30
          - condition: state
            entity_id: switch.sonofftemp
            state: 'off'
        sequence:
          - service: switch.turn_on
            target:
              entity_id: switch.sonofftemp
      - conditions:
          - condition: numeric_state
            entity_id: sensor.tasmota_ds18b20_1_temperature
            below: 33
          - condition: state
            entity_id: switch.sonofftemp
            state: 'on'
        sequence:
          - service: switch.turn_off
            target:
              entity_id: switch.sonofftemp
mode: single

Uważam, że termostat jest lepszym, pewniejszym, stabilniejszym rozwiązaniem
/

Pompa test: Already running

Tryb automatyzacji masz mode: single
Oznacza to że automatyzacja musi się zakończyć “by była dostępna na nowe dane”
Jeśli zmienisz np. na mode: restart automatyzacja po otrzymaniu nowych danych w wyzwalaczu rozpocznie na nowo poszczególne etapy automatyzacji.

Nie zrobię jako termostat ponieważ muszę ręcznie rozpalić w piecu.
Rozjaśniłeś mi z trybem single a restart teraz już wiem o co chodzi że automatyzacja jest rozpoczęta.
A ta druga automatyzacja też jest poprawna ?
I czy w twojej automatyzacji każdy stan poniżej 30 lub powyżej 33 będzie wyzwalał automatyzację ?

I czy nie jest tak że trigger Numeric State wyzwala tylko w momencie przejścia encji przez daną wartość. Trigger Template sprawdza warunek przy każdej zmianie stanu encji ?

Jak dobrze rozumiem to przy rozpalaniu w piecu możesz wyłączyć automatyzacje a po rozpaleniu włączyć

Lub zautomatyzować proces rozpalania dodając

W trakcie rozpalania włączysz “rozpalanie” a po rozpaleniu wyłącz

Po wyzwalaczach

...
condition:
  - condition: state
    entity_id: input_boolean.rozpalanie
    state: "off"  # Automatyzacja działa tylko, jeśli nie jesteś w podczas rozpalania
...

/
Co do 2 automatyzacji:
Zbędne i powtarzające się wyzwalacze, nie jasne warunki, wprowadzają one nadmiarową logikę.
Z piecem trzeba bardziej uważać, np. co się stanie przy restarcie HA, co jeśli sensor nie odczyta danych itd.
Prawdopodobnie dodał bym jeszcze jedną automatyzacje która to poinformuje o przekroczeniu jakiś wartości temperatur…,
/
Tak, 2 wyzwalacze, następnie jest rozbite na “wybór” - “jeśli to, to włącz jeśli to, to wyłącz”
/
Tak zdublowałeś.
Jest jeszcze kwestia wyzwalacza . Jeśli jest powyżej x i i nowy odczyt też jest powyżej x stopnie czyli stan się nie zmieni (prawda - fałsz)
/
Jeśli chcesz, aby automatyzacja reagowała dynamicznie na każdą zmianę temperatury i zawsze wykonywała najnowszą “logikę” – to restart

Przetestuj single- powinno działacz, stabilnie

Ale o to chodzi że pomocnika przełącznika nie muszę robić, teraz poprostu rozpalam w piecu to normalnie się pompka załącza.A w twojej automatyzacji co zrobiłeś dla mnie nie powinno być restart że np coś się zrestartuje i HA włączy się jak fizycznie na piecu będzie 40 stopni więc poprostu zrobi powyżej 34/33 włącz pompkę?
Czyli poprostu zdublowalem ten sam wyzwalacz sensora ale odbudowałem go w template dobrze rozumiem ?

I u mnie wyzwalaczem była encja powyżej temperatury 34 a ty zrobiłeś jako liczba stała czy to jest jakaś różnica ?

Czyli Prawda/Fałsz najlepiej jest robić jako warunek tylko
I czy nie będzie bezpieczniej zmienić z single na restart bo jeżeli bramka by się zrestartowała jak na piecu było by 44 a pompka by nie chodziła to przy starcie odczyt temperatury 44 a powyżej 34 włącz powodowało by załączenie pompki

Wszystko działa sprawdziłem i z “Opcjami” jest bardziej czytelniej nawet jak się zobaczy w schemat działania

Ale dobrze rozumiem że jak bym ustawić restart np powyżej 45 stopni to aplikacja za każdym razem powyżej 45 stopni np 46,56,67 będzie uruchamiała ta automatyzację ?

Zrobiłem / poprawiłem kolejna automatyzację myślę że tutaj tryb musi być restart tak czy nie ?

alias: Bilans grzałka stycznik test
description: ""
triggers:
  - trigger: template
    value_template: "{{float(states('sensor.energia_bilans_netto'))<-0.1}}"
  - trigger: template
    value_template: "{{float(states('sensor.energia_bilans_netto'))<0.0}}"
  - trigger: template
    value_template: "{{float(states('sensor.energia_bilans_netto'))>0.30}}"
  - trigger: numeric_state
    entity_id:
      - sensor.tasmota_ds18b20_2_temperature
    below: 44
  - trigger: numeric_state
    entity_id:
      - sensor.tasmota_ds18b20_2_temperature
    above: 47
  - trigger: numeric_state
    entity_id:
      - sensor.tasmota_ds18b20_2_temperature
    above: 54
  - trigger: time
    at: "11:30:00"
conditions: []
actions:
  - choose:
      - conditions:
          - condition: and
            conditions:
              - condition: time
                after: "11:30:00"
                before: "17:00:00"
              - condition: template
                value_template: "{{float(states('sensor.tasmota_ds18b20_2_temperature'))<44}}"
              - condition: template
                value_template: "{{float(states('sensor.energia_bilans_netto'))>0.30}}"
        sequence:
          - action: switch.turn_on
            target:
              entity_id: switch.stycznik
            data: {}
      - conditions:
          - condition: or
            conditions:
              - type: is_temperature
                condition: device
                device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
                entity_id: 236610b4d468894a1aabb99a16547677
                domain: sensor
                above: 46
              - condition: template
                value_template: "{{float(states('sensor.energia_bilans_netto'))<0.0}}"
              - condition: template
                value_template: "{{float(states('sensor.tasmota_ds18b20_2_temperature'))>47}}"
              - condition: template
                value_template: "{{float(states('sensor.energia_bilans_netto'))<-0.1}}"
        sequence:
          - action: switch.turn_off
            target:
              entity_id: switch.stycznik
            data: {}
      - conditions:
          - condition: or
            conditions:
              - type: is_temperature
                condition: device
                device_id: acf8f5bbd3f2fe3bcdcdf3445545621f
                entity_id: 236610b4d468894a1aabb99a16547677
                domain: sensor
                above: 53
        sequence:
          - action: switch.turn_off
            target:
              entity_id: switch.stycznik
            data: {}
mode: single