Home Assistantin automaatioita (yaml)

  • Viestiketjun aloittaja Viestiketjun aloittaja mikiz
  • Aloituspäivämäärä Aloituspäivämäärä

mikiz

Aktiivinen jäsen
Kokeillaanpa tällaista ketjua, jos tästä saisi uusia ideoita Niben ajamiseen HomeAssistantin automaatioiden avulla. Eli tähän ketjuun voisi laittaa omia automaatioitaan muiden ihmeteltäväksi. Koodeista voisi kertoa hieman pohjatietoa, sillä kaikkien automaatioideat eivät omaan tarkoitukseen tietenkään sovi. Eikä pelkkä koodi ilman selityksiä ole hyvää koodia 😊

Minulla on F470 ja tässä on kaksi kesäaikana toimivaksi todettua ilmanvaihdon automaatiota. Olohuoneessa on tulo- ja poistoilmakanavissa ruuvitagit mittaamassa mm. lämpötiloja. 463 on tuloilmakanavassa ja 528 poistoilmakanavassa. Olen tehnyt molemmille antureille HomeAssistantiin ”helperit”, joilla olen saanut hienosäädettyä antureiden arvot näyttämään samassa tilassa samoja arvoja. ”Kalibroin” anturit ilmatiiviissä ja lämpötilaeristetyssä purkissa. Näitä helpereitä käytän automaatioissa. Olen tehnyt myös helperin, joka laskeskelee tulo- ja poistolämpötilojen lämpötilaeroa. Lisäksi olen tehnyt muutamia boolean -tyyppisiä helpereitä, joiden tiloja eri automaatiot muuttavat päälle ja pois. Automaatiot tarkistavat näiden helpereiden tilat ennen toimia, ja näin saadaan automaatiot toimimaan riitelemättä keskenään.

Näissä koodinpätkissä on paljon kovakoodattuja numeroarvoja, mikä hankaloittaa hienosäätöä. Niille voisi tulevaisuudessa tehdä omat helperit ja dashboardin HomeAssistantiin.

Alkuintrojen jälkeen ensimmäinen automaatio. Koodin alussa tarkistetaan, että eletään suunnilleen kesälämpötiloissa. Jos poistoilma on alle 22 asteista ja tuloilma on kuumempaa, laitetaan ilmanvaihtoa pienemmälle 59 minuutiksi kerrallaan. (Olen laittanut Nibestä ilmanvaihtoasetusten palautumisajaksi yhden tunnin.)

YAML:
alias: Ilmanvaihto pienelle kun ulkona on kuuma
description: ""
triggers:
  - minutes: /5
    trigger: time_pattern
conditions:
  - condition: numeric_state
    entity_id: sensor.bt1_average_24h_42100
    above: 12
  - condition: numeric_state
    entity_id: sensor.lampotila_528_offset
    enabled: true
    below: 22
  - condition: numeric_state
    entity_id: sensor.ilmanvaihdon_lampotilaero_ruuvitag
    enabled: true
    below: 0
  - condition: not
    conditions:
      - condition: state
        entity_id: input_boolean.ilmanvaihto_saunatehostus_paalla
        state:
          - "on"
      - condition: state
        entity_id: input_boolean.ilmanvaihto_taysilla
        state:
          - "on"
      - condition: state
        entity_id: select.fan_mode_47260
        state:
          - FAN MODE 2
actions:
  - action: input_boolean.turn_on
    metadata: {}
    target:
      entity_id:
        - input_boolean.ilmanvaihto_pienella
    data: {}
  - device_id: arvo_poistettu_yksityisyyssyistä
    domain: select
    entity_id: arvo_poistettu_yksityisyyssyistä
    type: select_option
    option: FAN MODE 2
  - delay:
      hours: 0
      minutes: 59
      seconds: 0
      milliseconds: 0
  - action: input_boolean.turn_off
    metadata: {}
    target:
      entity_id:
        - input_boolean.ilmanvaihto_pienella
    data: {}
trace:
  stored_traces: 20
mode: restart


Toinen koodi. Taas tarkistetaan, että ollaan pois lämmityskaudelta. Jos poistoilma on yli 22 asteista ja tuloilma vähintään 2 astetta viileämpää, laitetaan ilmanvaihto täysille 59 minuutiksi. Viihdyn viileässä. Lisäksi tarkistetaan tuloilman ilmankosteusarvo, jottei täystuuletusta tehdä sadepäivänä.
YAML:
alias: Ilmanvaihto täysille kun ulkona on viileämpää
description: ""
triggers:
  - minutes: /5
    trigger: time_pattern
conditions:
  - condition: numeric_state
    entity_id: sensor.bt1_average_24h_42100
    above: 12
  - condition: numeric_state
    entity_id: sensor.lampotila_528_offset
    above: 22
    enabled: true
  - condition: numeric_state
    entity_id: sensor.ilmanvaihdon_lampotilaero_ruuvitag
    enabled: true
    above: 2
  - condition: numeric_state
    entity_id: sensor.ilmankosteus_463_offset
    below: 80
    enabled: true
  - condition: not
    conditions:
      - condition: state
        entity_id: input_boolean.ilmanvaihto_saunatehostus_paalla
        state:
          - "on"
      - condition: state
        entity_id: input_boolean.ilmanvaihto_pienella
        state:
          - "on"
      - condition: state
        entity_id: select.fan_mode_47260
        state:
          - FAN MODE 4
actions:
  - action: input_boolean.turn_on
    metadata: {}
    target:
      entity_id:
        - input_boolean.ilmanvaihto_taysilla
    data: {}
  - device_id: arvo_poistettu_yksityisyyssyistä
    domain: select
    entity_id: arvo_poistettu_yksityisyyssyistä
    type: select_option
    option: FAN MODE 4
  - delay:
      hours: 0
      minutes: 59
      seconds: 0
      milliseconds: 0
  - action: input_boolean.turn_off
    metadata: {}
    target:
      entity_id:
        - input_boolean.ilmanvaihto_taysilla
    data: {}
trace:
  stored_traces: 20
mode: restart


Kolmas koodi. Tätä olen käyttänyt kevättalvella tai loppusyksystä kun eletään lämmityskauden rajatiloja. Vuorokautiset ulkolämpötilavaihtelut ovat suuria. En lämmitä asuntoa juurikaan lattioiden avulla, vaan ilmalämpöpumpulla ja takalla. Niben lämmitystä käytän lähinnä kylppärin lattiaan ja pakolliseen tuloilman lämmitykseen. Pidän tuloilman lämpötavoitteena kahtatoista astetta, sillä se ei vielä aiheuta vedontunnetta. Tämä automaatio vaatii sen, että tuloilmapatterin säätöruuvi on suunnilleen oikeassa asennossa. Automaatio muuttaa kiertoveden lämpötilaa sen mukaan, mitä tuloilman lämpötila on.

YAML:
alias: Poistoilmalämpöpumpun adaptiivinen ohjaus
triggers:
  - minutes: /5
    trigger: time_pattern
conditions:
  - condition: template
    value_template: "{{ muutos != 0 }}"
actions:
  - delay:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - target:
      entity_id: input_number.kiertoveden_tavoite
    data:
      value: "{{ uusi_arvo }}"
    action: input_number.set_value
  - target:
      entity_id: number.min_supply_system_1_47015
    data:
      value: "{{ uusi_arvo }}"
    action: number.set_value
mode: single
trace:
  stored_traces: 20
variables:
  tavoite: "{{ states('input_number.tuloilman_tavoite') | float }}"
  tuloilma: "{{ states('sensor.bt22_supply_air_temp_40075') | float }}"
  trendi: "{{ states('sensor.tuloilman_trendi') | float(0) }}"
  kiertovesi: "{{ states('input_number.kiertoveden_tavoite') | float }}"
  virhe: "{{ tavoite - tuloilma }}"
  deadband: 0.4
  perus_muutos: |
    {% if virhe > 2 %}
      2
    {% elif virhe > deadband %}
      1
    {% elif virhe < -2 %}
      -2
    {% elif virhe < -deadband %}
      -1
    {% else %}
      0
    {% endif %}
  trendi_muutos: |
    {% if trendi > 0.1 %}
      -1
    {% elif trendi < -0.1 %}
      1
    {% else %}
      0
    {% endif %}
  muutos: "{{ perus_muutos + trendi_muutos }}"
  uusi_arvo: |
    {% set uusi = kiertovesi + muutos %} {% if uusi < 20 %}
      20
    {% elif uusi > 30 %}
      30
    {% else %}
      {{ uusi }}
    {% endif %}
 
Onko tuossa jotain syytä miksi et käytä Niben omia lämpötilamittauksia ruuvin sijasta?
Etenkin aurinkoisella säällä ilmakanavat lämpenevät yläpohjassa, mikä on kuin helvetin esikartano. Ruuveilla pääsee mittaamaan tarkemmin todellista tilannetta. Toinen syy on se, etten näille tageille tällä hetkellä keksinyt parempaakaan tekemistä 🙂
 
  • Tykkää
Reaktiot: hj
Minulla kulkee nuo kanavat höyrynsulun sisäpuolella. Lähimpään venttiiliin lämpenee talvella +13C ilma 2 astetta ja kauimmaiseen makuuhuoneeseen 4 astetta. Samasta syystä turha yrittää yöjäähdytystä ainakaan viimeiseen huoneeseen.
Sen sijaan sulatutusten esto ja Ruuvin avulla co2 ja voc tehostus suunnitelmissa.
 
Laitetaan tähän lisää automaatioita, joista saattaa olla iloa lämmityskauden alkaessa.

Automaatio tarkistaa käyttöveden yläosan lämpötilan 15 minuutin välein, ja nostaa "lisäyksen pysäytys" -lämpötilaa riittävästi jos yläosan lämpötila on laskenut määrätyn rajan alle. Tämä automaati on tavallaan hätätoiminto, sillä yleensä laitteeni toimii hyvin lisäyksen pysäytyslämpötila-arvon ollessa -5. Automaatio tarkistaa ensin ulkolämpötilan ja olen määrittänyt automaation toimivan ainoastaan lämmityskaudella.

YAML:
alias: Käyttöveden yläosa kylmää
description: ""
triggers:
  - minutes: /15
    trigger: time_pattern
conditions:
  - condition: numeric_state
    entity_id: sensor.bt1_outdoor_temperature_40004
    below: 12
  - condition: numeric_state
    entity_id: sensor.bt7_hw_top_40013
    below: 48
    enabled: true
  - condition: numeric_state
    entity_id: number.stop_temperature_additive_47376
    below: 9
actions:
  - device_id: xxx
    domain: number
    entity_id: xxx
    type: set_value
    value: 10
    enabled: true
  - device_id: xxx
    domain: mobile_app
    type: notify
    message: Käyttöveden yläosa kylmää
  - wait_for_trigger:
      - trigger: numeric_state
        entity_id:
          - sensor.bt7_hw_top_40013
        above: 52
    enabled: true
    timeout:
      hours: 12
      minutes: 0
      seconds: 0
      milliseconds: 0
  - device_id: xxx
    domain: number
    entity_id: xxx
    type: set_value
    value: -5
    enabled: true
mode: single


Tämä seurava koodi liittyy myös lämmön varmistamiseen, eikä sitä yleensä ajeta. Se nostaa sähkölämmitystehoa jos lämmöt laskevat liian alas eikä 2kW sähkölämmitysteho enää riitä. Tässä ja edellisessä koodissa triggeri on 15 minuuttia, eikä mikään erillinen tapahtuma. Toiminnoissa on myös timeout. Ajastimella toiminnot ovat varmempia, sillä ne eivät häiriinny sähkökatkoista.
YAML:
alias: Lämmitystehon muutos
description: ""
triggers:
  - minutes: /15
    trigger: time_pattern
conditions:
  - condition: numeric_state
    entity_id: sensor.bt7_hw_top_40013
    below: 48
    enabled: true
  - condition: numeric_state
    entity_id: sensor.bt6_hw_load_40014
    below: 35
    enabled: true
  - condition: numeric_state
    entity_id: sensor.bt1_outdoor_temperature_40004
    below: 5
  - condition: numeric_state
    entity_id: number.max_int_add_power_47212
    below: 4
actions:
  - device_id: xxx
    domain: number
    entity_id: xxx
    type: set_value
    value: 4.7
    enabled: true
  - device_id: xxx
    domain: mobile_app
    type: notify
    message: Sähkölämmitystehoa nostettu
  - wait_for_trigger:
      - trigger: numeric_state
        entity_id:
          - sensor.bt6_hw_load_40014
        above: 50
    enabled: true
    timeout:
      hours: 12
      minutes: 0
      seconds: 0
      milliseconds: 0
  - device_id: xxx
    domain: number
    entity_id: xxx
    type: set_value
    value: 2
    enabled: true
trace:
  stored_traces: 20
mode: single


Seuraava hätäautomaatio nostaa menoveden lämpötilaa jos tuloilma menee kylmäksi.
YAML:
alias: Menolämmön nosto kun tuloilma kylmää
description: ""
triggers:
  - minutes: /5
    trigger: time_pattern
conditions:
  - condition: numeric_state
    entity_id: sensor.bt22_supply_air_temp_40075
    below: 7
    enabled: true
  - condition: numeric_state
    entity_id: number.min_supply_system_1_47015
    below: 30
actions:
  - action: input_boolean.turn_on
    metadata: {}
    target:
      entity_id: input_boolean.lammitys_tuloilma_kylmaa
    data: {}
  - device_id: xxx
    domain: number
    entity_id: xxx
    type: set_value
    value: 35
    enabled: true
  - device_id: xxx
    domain: mobile_app
    type: notify
    message: Menolämpötilaa nostettu. Tuloilma kylmää
  - wait_for_trigger:
      - trigger: numeric_state
        entity_id:
          - sensor.bt22_supply_air_temp_40075
        above: 12
    timeout:
      hours: 12
      minutes: 0
      seconds: 0
      milliseconds: 0
  - device_id: xxx
    domain: number
    entity_id: xxx
    type: set_value
    value: 26
    enabled: true
  - action: input_boolean.turn_off
    metadata: {}
    target:
      entity_id: input_boolean.lammitys_tuloilma_kylmaa
    data: {}
trace:
  stored_traces: 20
mode: restart
 
Viimeksi muokattu:
Takaisin
Ylös Bottom