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.)
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ä.
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.
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 %}