Home Assistantin automaatioita (yaml)

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 %}
 

mikiz

Aktiivinen jäsen
  • Keskustelun aloittaja
  • #3
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ää
Reactions: hj

hj

Jäsen
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.
 
Back
Ylös Bottom