Automatyzacja głowic, termostatów + kocioł gazowy

Cześć Wszystkim!

Jestem posiadaczem kilku głowic Zigbee, mianowicie model TS0601. Dodatkowo zakupiłem przełącznik TS0001 - TuYa TS0001 control via MQTT | Zigbee2MQTT
Głowice zainstalowane, zarejestrowane w HA, przełącznik podłączony do kotła NO, COM - jest widoczny w HA i reaguje na przełączanie w Dashboard-zie. Zarówno głowice jak i kocioł reagują na zmiany statusu pracy. Generalnie wszystko działa - ręcznie.

Teraz sprawa najważniejsza, mianowicie dla każdego z pomieszczeń chciałbym ustalić odrębną temperaturę i na jej podstawie włączać lub wyłączać kocioł.
Widzę to tak:

  • jeżeli którykolwiek z termostatów wykryje temperaturę poniżej 20 stopni to automatyzacja HA włącza kocioł, głowica otwiera się, grzejnik grzeje niedogrzane pomieszczenie,
  • jeżeli termostat wykryje, że pomieszczenie osiągnęło temperaturę 21 stopni, automatyzacja zakręca głowicę, grzejnik nie grzeje,

ale uwaga

  • kocioł włącza się wtedy kiedy którekolwiek pomieszczenie wymaga dogrzania,
  • kocioł wyłącza się wtedy kiedy wszystkie pomieszczenia osiągną zadaną temperaturę, jeśli któreś się nagrzeje wcześniej to głowica się zakręca bo po co grzać nagrzane pomieszczenie,

Jak ustawić parametry automatyzacji - co będzie wyzwalaczem?
Czy konfigurację koniecznie trzeba zapisać w pliku climate.yaml?
Jeśli tak to jak ją uruchomić w HA?

Uprzejmie proszę o pomoc.

Małe uzupełnienie, czy w MQTT można tak ustawić termostaty aby były tylko termometrem i zaworem zakręcającym lub odkręcającym grzejnik? Jest mnóstwo innych ustawień np. w “Eksponuje” i tak naprawdę nie wiem jaki tryb należy ustawić aby kontrolę nas zachowaniem termostatu miał HA a nie sam termostat. Czas pracy identyczny przez całą dobę.

Mam inne głowice, może być zmiana stanu ( w moim przypadku na “heat” )

alias: grzanie
description: ""
trigger:
  - platform: state
    entity_id:
      - climate.nr1
    to: heat
  - platform: state
    entity_id:
      - climate.nr2
    to: heat
condition: []
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.TS0001
mode: restart

Kiedy głowica nr1 lub nr2 zmieni stan na grzanie, wtedy włączy piec

Z wyłączeniem pieca:

Można napisać nową automatyzacji na zasadzie
Kiedy climate.nr1 stan auto " i " climate.nr2 ma stan na auto…" i " … " i "…
switch.TS0001 “OFF”
Kiedy zostaną spełnione wszystkie warunki piec zostanie wyłączony

Dzięki za podpowiedzi. Jednak mam pytanie dlaczego stan ma być auto? No i jaki preset?

Ja mam taką automatyzację na wyłączenie kotła, ale mam wątpliwości odnośnie wyzwalacza bo przecież każda głowica może być wyzwalaczem bo jej właśnie akcja będzie dotyczyć.

alias: OGRZEWANIE_TEMP_MAX_WYŁĄCZENIE_SYPIALNIA
description: >-
Dla wszystkich głowic wyłączenie kotła po osiągnięciu temperatury wszystkich
głowic
trigger:

  • platform: numeric_state
    entity_id: climate.termostat_grzejnik_sypialnia
    attribute: current_temperature
    above: 21
    condition:
  • condition: and
    conditions:
    • condition: numeric_state
      entity_id: climate.termostat_grzejnik_salon
      attribute: current_temperature
      above: 21
  • condition: and
    conditions:
    • condition: numeric_state
      entity_id: climate.termostat_grzejnik_pokoj_dol
      attribute: current_temperature
      above: 21
  • condition: and
    conditions:
    • condition: numeric_state
      entity_id: climate.termostat_grzejnik_lazienka_prasowalnia
      attribute: current_temperature
      above: 21
  • condition: and
    conditions:
    • condition: numeric_state
      entity_id: climate.termostat_grzejnik_zdenek
      attribute: current_temperature
      above: 22
  • condition: and
    conditions:
    • condition: numeric_state
      entity_id: climate.termostat_grzejnik_maniek
      attribute: current_temperature
      above: 22
      action:
  • type: turn_off
    device_id: b909d5dd84f141604cd9bbfa888dc843
    entity_id: switch.kociol_gazowy
    domain: switch
  • device_id: ded16dd4a5c2d800bff4e6f93e2a4ca8
    domain: climate
    entity_id: climate.termostat_grzejnik_sypialnia
    type: set_hvac_mode
    hvac_mode: “off”
    mode: single

To powyżej ma niby wyłączać kocioł po spełnieniu wszystkich warunków, ale wyzwalaczem jest sypialnia - coś nie gra chyba.

Tylko jak ma być ustawiona głowica - czy sama ma pilnować temperatury czy HA za pomocą automatyzacji ma to robić?

Spróbuj poprawnie wklejać kod (3x znak nad TAB wklejony kod 3x znak nad TAB)

Mam inne głowice (Tado), wiec umie to inaczej wygląda
Mam podstawowy harmonogram, po ręcznej lub googla, alexa wraca stan na auto
Cały proces automatyzacji możesz zobaczyć

no niestety nie kumam tych automatyzacji
głowica dla mnie powinna pracować głównie na dwa sposoby:

  1. pozbawiona własnej inteligencji - tylko termometr i zawór zamknij / otwórz dopływ wody, wtedy sterowanie reakcjami na zmiany temperatur steruje HA
  2. z własną inteligencją, wtedy sama utrzymuje zadaną temperaturę a HA co najwyżej sugeruje kalendarz kiedy ma się to dziać.

Chciałbym aby głowica pracowała w scenariuszu numer 1.
Jak to ustawić w automatyzacjach?

alias: OGRZEWANIE_TEMP_MAX_WYŁĄCZENIE_SYPIALNIA
description: >-
  Dla wszystkich głowic wyłączenie kotła po osiągnięciu temperatury wszystkich
  głowic
trigger:
  - platform: numeric_state
    entity_id: climate.termostat_grzejnik_sypialnia
    attribute: current_temperature
    above: 21
condition:
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: climate.termostat_grzejnik_salon
        attribute: current_temperature
        above: 21
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: climate.termostat_grzejnik_pokoj_dol
        attribute: current_temperature
        above: 20
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: climate.termostat_grzejnik_lazienka_prasowalnia
        attribute: current_temperature
        above: 21
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: climate.termostat_grzejnik_zdenek
        attribute: current_temperature
        above: 21
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: climate.termostat_grzejnik_maniek
        attribute: current_temperature
        above: 21
action:
  - type: turn_off
    device_id: b909d5dd84f141604cd9bbfa888dc843
    entity_id: switch.kociol_gazowy
    domain: switch
  - device_id: ded16dd4a5c2d800bff4e6f93e2a4ca8
    domain: climate
    entity_id: climate.termostat_grzejnik_sypialnia
    type: set_hvac_mode
    hvac_mode: "off"
mode: single

Ja bym spróbował tak:
Wyzwalaczem czas, sprawdzenie warunków , akcja

alias: OGRZEWANIE_TEMP_MAX_WYŁĄCZENIE_SYPIALNIA
description: >-
  Dla wszystkich głowic wyłączenie kotła po osiągnięciu temperatury wszystkich
  głowic
trigger:
    - platform: time_pattern
      minutes: "/5"
condition:
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: climate.termostat_grzejnik_sypialnia
        attribute: current_temperature
        above: 21
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: climate.termostat_grzejnik_salon
        attribute: current_temperature
        above: 21
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: climate.termostat_grzejnik_pokoj_dol
        attribute: current_temperature
        above: 20
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: climate.termostat_grzejnik_lazienka_prasowalnia
        attribute: current_temperature
        above: 21
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: climate.termostat_grzejnik_zdenek
        attribute: current_temperature
        above: 21
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: climate.termostat_grzejnik_maniek
        attribute: current_temperature
        above: 21
action:
  - type: turn_off
    device_id: b909d5dd84f141604cd9bbfa888dc843
    entity_id: switch.kociol_gazowy
    domain: switch
  - device_id: ded16dd4a5c2d800bff4e6f93e2a4ca8
    domain: climate
    entity_id: climate.termostat_grzejnik_sypialnia
    type: set_hvac_mode
    hvac_mode: "off"
mode: restart


Dzięki, spróbuję, mam nadzieję, że zadziała. :slight_smile:

Edit:

Czy możesz wyjaśnić jaki czas i dlaczego?

“Czas”, bardziej wyzwalacz czasowy. Co 5 minut będzie uruchamiał automatykę .
W Twoim kodzie wyzwalaczem jest jeden kaloryfer , jeśli w nim nie nastąpi zmiana stanu reszta automatyki jest zatrzymaną

Rozumiem, dzięki za pomoc.
Jak tylko przetestuję podzielę się wynikami.

Edit:

Dziękuję, działa. Zrobiłem jeszcze test wyłączania kotła na podstawie pozycji termostatu w każdym z kaloryferów - też działa. Problemem był wyzwalacz czyli jeden kaloryfer.

1 polubienie

Witam Panowie . Próbuję na tym przykładzie ustawić automatyzację wył i wł Pompy obiegowej . Dodałęm dwie osobne , ale nie reagują . Co tu jest nie tak ?

alias: Popmpy wył
description: ""
trigger:
  - type: value
    platform: device
    device_id: 44154719808d3a8507d44410c275def2
    entity_id: sensor.pow_r2_ds18b20_id
    domain: sensor
    above: 39
    below: 38
    for:
      hours: 0
      minutes: 1
      seconds: 0
condition:
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: sensor.pow_r2_ds18b20_id
        attribute: current_temperature
        below: 35
action:
  - type: turn_off
    device_id: 44154719808d3a8507d44410c275def2
    entity_id: switch.pow_r2
    domain: switch
mode: restart

alias: Popmpy wł
description: ""
trigger:
  - platform: time_pattern
    minutes: 5
condition:
  - condition: and
    conditions:
      - condition: numeric_state
        entity_id: sensor.pow_r2_ds18b20_id
        attribute: current_temperature
        above: 36
action:
  - type: turn_on
    device_id: 44154719808d3a8507d44410c275def2
    entity_id: switch.pow_r2
    domain: switch
mode: restart

Do sterowanie pompami wykorzystał bym:

W configuration.yaml
Np.

                                 #    Pompy
climate:                    
  - platform: generic_thermostat
    name: Pompy
    heater: switch.pompy 
    target_sensor: sensor.czujnik_temperatury
    min_temp: 40
    max_temp: 60
    ac_mode: true
    target_temp: 50
    hot_tolerance: 0.5
    min_cycle_duration:
      seconds: 180
    keep_alive:
      minutes: 10
    initial_hvac_mode: "heat"
    precision: 0.2 # 0.2=błąd. "Default: 0.1 for Celsius and 1.0 for Fahrenheit."

/
Wklejaj kod poprawnie ( kliknij 3 razy klawisz nad TAB, w następnej linii wklej kod, kliknij 3 razy klawisz nad TAB)
pobrane

Dzięki , spróbuję też w ten sposób .

Widzę że warunek nie został spełniony . Daje taki błąd :

" In ‘numeric_state’: In ‘numeric_state’ condition: entity sensor.pow_r2_ds18b20_id state ‘3CE6F6491DF0’ cannot be processed as a number "

Trzeba tylko skorygować parametr na 0.1, 0.5 albo 1 :slight_smile:

1 polubienie

tak tak , wypluło ten błąd przy sprawdzaniu konfiguracji

Edit:

nie działa . po dodaniu w config.yaml i dodaniu automatyzaji dalej nie spełnia warunku

Włącz pompy

alias: Włącz pompy test
description: ""
trigger:
  - platform: numeric_state
    entity_id: sensor.xxx
    for:
      hours: 0
      minutes: 1
      seconds: 0
    above: 40
condition: []
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.xxx
mode: restart

Wyłącz pompy

alias: Wyłącz pompy test
description: ""
trigger:
  - platform: numeric_state
    entity_id: sensor.xxxxxx
    for:
      hours: 0
      minutes: 1
      seconds: 0
    below: 40
condition: []
action:
  - service: switch.turn_off
    data: {}
    target:
      entity_id: switch.xxx
mode: restart

Tu wydaje się, że numeric_state nie jest w stanie przekonwertować tego co dostaje w liczbę zmiennoprzecinkową, może dostaje “pustą wartość” (niedostępna, nieznana)

Sorry za błędy w poście wyżej (pospiech)
Niestety ale to mi nie wyzwala automatyzacji . Fizycznie uruchamia się ale nie automatyzuje .
Chyba problem będzie polegał na tym że to jest przełacznik na Tasmocie (Mqtt)
Czytam teraz ze" Wyzwalacze urządzeń MQTT są obsługiwane tylko przez [wykrywanie MQTT]"

Teraz działa . Automatyzacja się wyzwala

Wyłącz pompy

alias: Pompy Wył
description: ""
trigger:
  - platform: mqtt
    topic: homeassistant/sensor/9D6EA3_DS18B20_Id/config
  - platform: numeric_state
    entity_id: sensor.pow_r2_ds18b20_temperature
    for:
      hours: 0
      minutes: 5
      seconds: 0
    below: 41
condition: []
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.pow_r2
      device_id: 44154719808d3a8507d44410c275def2
mode: restart

Włącz pompy

alias: Pompy Wł
description: ""
trigger:
  - platform: mqtt
    topic: homeassistant/sensor/9D6EA3_DS18B20_Id/config
  - platform: numeric_state
    entity_id: sensor.pow_r2_ds18b20_temperature
    for:
      hours: 0
      minutes: 5
      seconds: 0
    above: 42
condition: []
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.pow_r2
      device_id: 44154719808d3a8507d44410c275def2
mode: restart