LDC - Daikin tarveohjaus Faikout avulla

Luukku

Vakionaama
Täällä ollaan lämpötilassa 21,16 (tavoite 22,00) ja pudotti DC:n 50%. Uuneja lämmitelty ja niiden vaikutus tuntuu. Ottoteho 230W.
 

heebo1974

Aktiivinen jäsen
Hmm. Tämä taisi oletuksena mennä vain 10 askeleen välein DC:ssä ? Mietin vaan tuota Comforaa, kun siinä ei ole sitä QO:ta. Varmaan pitäisi muokata 5 väleille, että voisi hyödyntää 95:en ? 100 on sitten full power ja sitä kyllä pyrkisin välttämään. Tai sitten pitäisi viritellä ulkolämpötilan mukaan max cäpit. Jos mennään super pakkasille, niin hyväksyttäisiin se DC100.
 

Luukku

Vakionaama
Näihin vaan sit muutoksia niin saa 5% välein.
Koodi:
Minimiaskel 10 % molempiin suuntiin --- #}
{% set threshold = 10 %}

{# --- 20 % muutos sallitaan heti (alas tai ylös) --- #}
{% if diff >= 20 %}
  {{ N_scaled | int }}

{# --- YLÖSPÄIN: sallitaan aina kun diff >= 10 --- #}
{% elif N_scaled > prev and diff >= threshold %}
  {{ N_scaled | int }}

{# --- ALASPÄIN: sallitaan vain jos 600 s täynnä ja diff >= 10 --- #}
{% elif N_scaled < prev and age > 600 and diff >= threshold %}
  {{ N_scaled | int }}
 

Kaimo Ärräpää

Pumppauksen suomenmestari v. 2041
No juu. Eipä pitkään aika olet nyt tullut tätä seurattua, mutta onkohan niin, ettei tosiaan pärjää ihan pelkällä sisälämpötilan mittauksella ja ennusteella esim. 1 h:n päähän? Pitäisihän sen nyt onnistua. Koodia muutama rivi viidenkymmenen sijaan? 😇

Ehkä lisäisin tuohon ainoastaan tavoitelämpötilan eri ulkolämpötiloissa portaattomasti liukuen, kun ainakin tässä talossa on niin, että vetoisuuden, kylmän poistamiseksi kovemmalla pakkasella pitää olla jopa 2 astetta lämpimämpää sisällä, kuin plussakelillä.

Lisäksi toki lisäisin ehdon, että tarvittaessa (pikkupakkaset tai plussakelit) siirrytään puhtaasti puhaltelemaan, leputtelemaan, eli lasketaan Daikinille saakka menevä pyynti niin alas, ettei kompressori käy. Muuten sitten varsinainen pyynti olisi toki aina maksimi, jotta ajetaan puhtaasti DC:llä varsinaisesti lämpötilansäätöä.

Ehtoja:
  • Lepuutus/tulisijatila: HA:n pyynnin ero todelliseen >= 0,5 astetta JA DC 40 % --> pumpun todellinen pyynti 10 astetta
    • palautus normaalitilaan: DC yli 40 % JA pyynnin ero <= 0,5 astetta --> pumpun todellinen pyynti maksimiin
  • HA:n tavoitelämpötilat esimerkki eri ulkolämpötiloissa (mittaus pumpun omalta ulkopömpelin anturilta) [tulee liukua portaattomasti ulkolämpötilan mukaan]:
    • Ulkolämpötila (°C)HA:n tavoitelämpötila (°C)
      +521,5
      -523,5
      -2024,5
      -3025,5
 
Viimeksi muokattu:

heebo1974

Aktiivinen jäsen
Kun puukottelin tuota tekoälyn avustuksella, niin se huomautti että tuo demand_locked.last_changed attribuutti tarvitsee jonkin automaation päivittyäkseen. Eli periaatteessa se aikahystereesi steppihomma ei kai toimi muuten ? Ainakaan minulla siihen ei tule mitään aikaleimaa automaattisesti. No en perehtynyt sen kummemin siihen. Tein vain muutoksen, jolla sallitaan 10% stepit 30-90 alueella ja 90-100 alueelle sallitaan sitten se DC95%.

Tässä vielä yläkerran pumpun "lopullinen" sensori. Sisältää nyt sulatusrajoituksenkin. Ainiin ei niitä sääjuttuja vielä.

YAML:
{% set T = states('sensor.ruuvitag_f777_temperature_filtered2') | float(0) %}
{% set Tset = states('input_number.ldc_daikin2_setpoint') | float(0) %}
{% set prev = states('input_number.ldc_daikin2_demand_locked') | float(0) %}
{% set T_out = states('sensor.outside_filtered_faikout_comfora') | float(0) %}

{# --- 0) Kylmäkerroin --- #}
{% set gain_base =
     1.4 if T_out < -10 else
     1.2 if T_out < -5 else
     1.0 if T_out < 2 else
     0.9 %}
{% set gain = gain_base %}

{# --- 1) Perustarve --- #}
{% set e = T - Tset %}
{% if e | abs < 0.05 %}
  {% set e = 0 %}
{% endif %}

{% set N_base = 25 + (-e * 40 * gain) %}
{% set N_base = [100, [25, N_base] | max] | min %}

{# --- 2) Ennuste --- #}
{% set T_future = states('sensor.ldc_daikin2_temp_prediction_1h') | float(0) %}
{% set e_future = T_future - Tset %}

{% if e_future < -0.2 %}
  {% set offset_1h = 5 %}
{% elif e_future > 0.2 %}
  {% set offset_1h = -5 %}
{% else %}
  {% set offset_1h = 0 %}
{% endif %}

{# --- 2b) Trendikorjattu --- #}
{% set N_trend = N_base + offset_1h %}
{% set N_trend = [100, [25, N_trend] | max] | min %}

{# --- 3) Sulatus --- #}
{% if is_state('input_select.ilp_sulattaa', 'sulatus käynnissä') %}
  {% set N_scaled = 90 %}
{% else %}
  {% set scale = 1.20 %}
  {% set N_scaled = N_trend * scale %}
  {% set N_scaled = [100, [30, N_scaled] | max] | min %}
{% endif %}

{# --- MUUTOS: 5 % tarkkuus vain alueelle 90 - 100 % --- #}
{% if N_scaled > 87.5 %}
  {# Tämä sallii arvot 90, 95 ja 100 #}
  {% set N_scaled = ((N_scaled / 5) | round(0) * 5) %}
  {% set threshold = 5 %}
{% else %}
  {# Alue 30 - 90 toimii 10 % jaolla #}
  {% set N_scaled = ((N_scaled / 10) | round(0) * 10) %}
  {% set threshold = 10 %}
{% endif %}

{# --- 4) Deadband + aikahystereesi --- #}
{% set diff = (N_scaled - prev) | abs %}
{% set age = (now() - states.input_number.ldc_daikin2_demand_locked.last_changed).total_seconds() %}

{% if diff >= 20 %}
  {{ N_scaled | int }}
{% elif N_scaled > prev and diff >= threshold %}
  {{ N_scaled | int }}
{% elif N_scaled < prev and age > 600 and diff >= threshold %}
  {{ N_scaled | int }}
{% else %}
  {{ prev | int }}
{% endif %}
 

heebo1974

Aktiivinen jäsen
Kun puukottelin tuota tekoälyn avustuksella, niin se huomautti että tuo demand_locked.last_changed attribuutti tarvitsee jonkin automaation päivittyäkseen. Eli periaatteessa se aikahystereesi steppihomma ei kai toimi muuten ? Ainakaan minulla siihen ei tule mitään aikaleimaa automaattisesti.
No lisäsin omaan automaation tuon demand_lockedin päivityksen.
 

Luukku

Vakionaama
Ehkä lisäisin tuohon ainoastaan tavoitelämpötilan eri ulkolämpötiloissa portaattomasti liukuen, kun ainakin tässä talossa on niin, että vetoisuuden, kylmän poistamiseksi kovemmalla pakkasella pitää olla jopa 2 astetta lämpimämpää sisällä, kuin plussakelillä.
Tuota on helppo ohjata erillisellä automaatiolla, joka säätää tuota "input.number tavoite".
Lisäksi toki lisäisin ehdon, että tarvittaessa (pikkupakkaset tai plussakelit) siirrytään puhtaasti puhaltelemaan, leputtelemaan, eli lasketaan Daikinille saakka menevä pyynti niin alas, ettei kompressori käy. Muuten sitten varsinainen pyynti olisi toki aina maksimi, jotta ajetaan puhtaasti DC:llä varsinaisesti lämpötilansäätöä.
Ylilämpöön on hyvä olla varmistus automaatio, että menee fan only tilaan. Itsellä puulämmitys loppuu, kun mennään lähelle nollaa niin silloin pumput hoitaa lämmityksen ja ne pysyy käynnissä pikkutehoilla.
 

Luukku

Vakionaama
Kun puukottelin tuota tekoälyn avustuksella, niin se huomautti että tuo demand_locked.last_changed attribuutti tarvitsee jonkin automaation päivittyäkseen. Eli periaatteessa se aikahystereesi steppihomma ei kai toimi muuten
Joo pitää se olla. On se itselläkin, unohtui mainita. Hyvä, kun hokasit.
 

heebo1974

Aktiivinen jäsen
Täähän toimii kuin junan vessa! Hyvin huomaa, että kun ulkoyksikkö alkaa olla jäässä, niin draft prevention iskee päälle.
Tämän jälkeen koneen on vaikeampi pysyä lämmöissä ja sitten tuleekin sulatus. Tämä siis alakerrassa.

1769236990144.png


Tässä huomaa ihmisten vaikutuksen. Aamulla herätty ja poistuttu makuuhuoneesta, niin alkaa lämpö tippua.
1769237061185.png


Lyhyen kokemuksen perusteella tämä on selkeästi reaktiivisempi kuin tuo ML scripti. Ehkä se yksinkertaisuus on valttia.
Erittäin positiivinen kokemus toistaiseksi. Keli on kohtalaisen helppo tällähetkellä.
 
Viimeksi muokattu:

Kaimo Ärräpää

Pumppauksen suomenmestari v. 2041
Tuota on helppo ohjata erillisellä automaatiolla, joka säätää tuota "input.number tavoite".

Ylilämpöön on hyvä olla varmistus automaatio, että menee fan only tilaan. Itsellä puulämmitys loppuu, kun mennään lähelle nollaa niin silloin pumput hoitaa lämmityksen ja ne pysyy käynnissä pikkutehoilla.

OnlyFansissa on se ongelma, että sisäpömpeli käyttää siivekkeet ääriasennoissaan tilanvaihdossa. Joka kerran pitäisi sitten käydä käsin säätämässä. Nimittäin se ylin asento ei ihan riitä vaan pitää vielä käsin säätää rahtusen ylemmäs. Sen vuoksi pysytään lämmitystilassa mutta minimipyynnillä.

Meillä ei lopeteta puulämmitystä, koska se edullisempaa ja lisäksi useimmiten ruokapata menee uuniin.
 

heebo1974

Aktiivinen jäsen
Päivittelin graafeja hiukan.. Ei välttämättä lopulliset vieläkään. Nyt tuo derivaatta sai lähteä ja tilalle tuli tuo ennuste, joka on offsetattu vielä tunnin päähän. Muitakin muutoksia.
1769246519621.png
 

Luukku

Vakionaama
Tässä huomaa ihmisten vaikutuksen. Aamulla herätty ja poistuttu makuuhuoneesta, niin alkaa lämpö tippua.
Saman huomannut ja yllättävän paljon vaikuttaa, mutta niinhän jossain on sanottu, että ihminen vastaa 100W lämmitystehoa. Hyvä huomioida setponteissa varsinkin makuuhuoneessa.
 

heebo1974

Aktiivinen jäsen
Alakertaan joutuu ehkä laittamaan agressivisempaa lämmitystä. Laitoinkin jo {% set N_base = 25 + (-e * 60 * gain) %} .
Vähän ehkä laahaa vielä alle setpointin. No vaikea sanoa pitkässä juoksussa. Vaimo toki meni laittamaan juuri takkaan puita. :)
1769252639033.png


Tiedä sitten pitäiskö tiukentaa sääkertoimia.
{% set gain_base =
1.4 if T_out < -10 else
1.2 if T_out < -5 else
1.0 if T_out < 2 else
0.9 %}
{% set gain = gain_base %}
 

Luukku

Vakionaama
Vähän ehkä laahaa vielä alle setpointin. No vaikea sanoa pitkässä juoksussa. Vaimo toki meni laittamaan juuri takkaan puita. :)
Tuo laahaus vähän alle setpontin on oikeastaan hyväkin, jos puilla lämmittää kaverina niin ei heitä niin pahasti ylilämmöille. Peruslämpö pumpuilla ja mukavuuslämpö puilla. Lauhemmilla keleillä sitten pumpuilla kaikki tai puilla miten haluaa.
 

Luukku

Vakionaama
@Kaimo Ärräpää :lle oma . Hienosäätöä vaille. Tuohon automaatio mikä säätää ilppiä. Antaa mulle arvoksi tällä hetkellä 20,5 ilpin pyynniksi, ihan realistinen, kun tavoitelämmössä ollaan, tuolla pyynnillä ilppi puhaltelis hiljalleen.
Koodi:
{% set T = states('sensor.sisalampotila') | float(0) %}
{% set Tset = states('input_number.tavoitelampotila') | float(0) %}
{% set T_out = states('sensor.ulkolampotila') | float(0) %}

{# --- 1) Ulkolämpötilaan perustuva kylmäkerroin --- #}
{% set cold_gain =
     3.0 if T_out < -15 else
     2.0 if T_out < -5 else
     1.0 if T_out < 5 else
     0.5 %}

{# --- 2) Sisälämpötilavirhe --- #}
{% set e = T - Tset %}

{# --- 3) Uunin lämmityksen tunnistus --- #}
{# Jos sisälämpötila on tavoitteen yläpuolella >0.3°C → uuni / muu kuorma #}
{% if e > 0.3 %}
  {% set ilp_set = 16 %}   {# minimi pyynti #}

{# --- 4) Alle tavoitteen → ILP pyyntiä ylös --- #}
{% elif e < -0.1 %}
  {# Peruskorotus: mitä kylmempi ulkona, sitä enemmän nostetaan #}
  {% set boost = (-e * cold_gain) %}
  {% set ilp_set = 20 + boost %}

{# --- 5) Lähes tavoite → pidetään neutraalina --- #}
{% else %}
  {% set ilp_set = 20 %}
{% endif %}

{# --- 6) Rajataan järkevä alue 16–26 °C --- #}
{% set ilp_set = [26, [16, ilp_set] | max] | min %}

{# --- 7) Pyöristys 0,5 °C portaisiin --- #}
{% set ilp_set = ((ilp_set * 2) | round(0) / 2) %}

{{ ilp_set }}

Tässä kalibrointi käsin mahdollinen (vaatii input.numberin lisäksi)
Koodi:
{# --- 0) Sensorit ja asetukset --- #}
{% set T = states('sensor.sisalampotila') | float(0) %}
{% set Tset = states('input_number.tavoitelampotila') | float(0) %}
{% set T_out = states('sensor.ulkolampotila') | float(0) %}
{% set calib = states('input_number.ilp_calibration') | float(0) %}

{# --- 1) Ulkolämpötilaan perustuva kylmäkerroin --- #}
{% set cold_gain =
     3.0 if T_out < -15 else
     2.0 if T_out < -5 else
     1.0 if T_out < 5 else
     0.5 %}

{# --- 2) Sisälämpötilavirhe --- #}
{% set e = T - Tset %}

{# --- 3) Uunin / sisäkuorman tunnistus --- #}
{% if e > 0.3 %}
  {# Ylilämpö → ILP minimiin #}
  {% set ilp_set = 16 %}

{# --- 4) Alle tavoitteen → ILP pyyntiä ylös --- #}
{% elif e < -0.1 %}
  {# Boost riippuu virheestä ja ulkolämpötilasta #}
  {% set boost = (-e) * cold_gain %}
  {% set ilp_set = 20 + boost %}

{# --- 5) Lähes tavoite → neutraali pyynti #}
{% else %}
  {% set ilp_set = 20 %}
{% endif %}

{# --- 6) Kalibrointi input_numberilla --- #}
{% set ilp_set = ilp_set + calib %}

{# --- 7) Rajat 16–26 °C --- #}
{% set ilp_set = [26, [16, ilp_set] | max] | min %}

{# --- 8) 0,5 °C portaisiin --- #}
{% set ilp_set = ((ilp_set * 2) | round(0) / 2) %}

{{ ilp_set }}
 
Viimeksi muokattu:

Koelli

Aktiivinen jäsen
Upeaa, että Daikinin metkuja hienosäädetään yhteisössä eri tavoin :hattu:

Liittyy Daikiniin yleisesti, mutta laitetaan tänne vaikka. Ihmettelin eilen Daikinin Cold Draft Preventionia ja sen mahdollista ohittamista ja keksin mahdollisesti suht helpon tavan yrittää sitä ohittaa.

Kylmäaineanturi on sisäyksikössä (Perfera) paikassa, joka ei suinkaan ole kuumin kohta. Kun anturin siirtäisi toiseen putkeen ja eristäisi sen kiinni putkeen, voisi saada pari-kolme astetta isompia lukemia, jotka ovat ymmärtääkseni merkityksellisiä, että onko cold draft prevention päällä vai ei.
 

Luukku

Vakionaama
Upeaa, että Daikinin metkuja hienosäädetään yhteisössä eri tavoin :hattu:

Liittyy Daikiniin yleisesti, mutta laitetaan tänne vaikka. Ihmettelin eilen Daikinin Cold Draft Preventionia ja sen mahdollista ohittamista ja keksin mahdollisesti suht helpon tavan yrittää sitä ohittaa.

Kylmäaineanturi on sisäyksikössä (Perfera) paikassa, joka ei suinkaan ole kuumin kohta. Kun anturin siirtäisi toiseen putkeen ja eristäisi sen kiinni putkeen, voisi saada pari-kolme astetta isompia lukemia, jotka ovat ymmärtääkseni merkityksellisiä, että onko cold draft prevention päällä vai ei.
Tuntuu juu, että tuo @heebo1974 :n kone on kovin herkkä sille. Olis potentiaalinen testikohde ;)
 

heebo1974

Aktiivinen jäsen
Liittyy Daikiniin yleisesti, mutta laitetaan tänne vaikka. Ihmettelin eilen Daikinin Cold Draft Preventionia ja sen mahdollista ohittamista ja keksin mahdollisesti suht helpon tavan yrittää sitä ohittaa.

Kylmäaineanturi on sisäyksikössä (Perfera) paikassa, joka ei suinkaan ole kuumin kohta. Kun anturin siirtäisi toiseen putkeen ja eristäisi sen kiinni putkeen, voisi saada pari-kolme astetta isompia lukemia, jotka ovat ymmärtääkseni merkityksellisiä, että onko cold draft prevention päällä vai ei.
Itse en kyllä ala takuunalaiseen laitteeseen tekemään modauksia. Faikout kuitenkin vähän eri juttu. Samoin sen ulkoanturin taitto lipan alle. :)
 

Kaimo Ärräpää

Pumppauksen suomenmestari v. 2041
@heebo1974 , eipä se todennäköisesti takuuaikana tule hajoamaan. Ongelmat ilmenevät todennäköisimmin lähes heti alussa, joten voi olla ihan turvallisin mielin vaikka modaisikin hieman.
 

Luukku

Vakionaama
Tuolla Perfera ketjussa kyselinkin, että tietääkö joku optimaalista aluetta imu/puhallus delta arvolle. Tekoäly tarjoilee 10-15astetta.
Ideana saada ilppi käymään tuolla optimaalisella alueella, että vältettäisiin liian kuuma tai kylmä kenno. Tein jo sensorin mikä seuraa optimitilaa ja sensorin mikä seuraa Faikoutin liquid lämpöä ja säädetään sen perusteella puhallusta 3-5 tasoilla. Jos liquid on 30-40 astetta niin puhallus 3 (850rmp), 40-55 puhallus 4 (1020rmp) ja yli 55 puhallus 5 (1250rmp). Onhan siinä auto puhallus, mutta omituisesti tuokin puhaltelee mitä sitä seurailin.
 

heebo1974

Aktiivinen jäsen
Tämän päivän käppyröitä. Joissain kohdissa vähän pätkäisee, kun olen säädelleyt muuta HA:ssa ja käynnistellyt uudelleen.
1769365765365.png

1769365832402.png
 

Luukku

Vakionaama
Mukavan tasainen lämpö nyt 24h mittausjaksolta, uunit lämmitetty toinen aamulla ja toinen illalla. Perfera peruslämmityksessä mukana myös. Tavoite 22,2.
Pumput kuluttaneet samalla jaksolla 21,6kWh ja uuneissa poltettiin molemmissa pesällinen koivua (kg?) Alakerta 11,7 kWh ja yläkerta 9,9kWh.
 

Liitteet

  • IMG_7005.jpeg
    IMG_7005.jpeg
    17,2 KB · Katsottu: 13
Viimeksi muokattu:

Luukku

Vakionaama
Tämän päivän käppyröitä.
Ehkä analysoin hiukan. Alakerrassa tekee suurempia liikkeitä DC:n säädössä, yläkerta selvästi tasaisempi, näkyy myös lämpötilassa. Mennäänkö liian nopeasti 100 ja takaisin 30? Miltä se tuntuu sisällä lämpötilatuntemuksessa?
Aamuyöllä olis voinut ajaa hinnanpuolesta tasaisemmalla 80-90 DC.llä niin aamusta olisi oltu lähempänä tavoitetta ja olisi ehkä vältetty tuo DC100% ajo, kun hinta alkoi nousta? Anturin sijoituspaikalla tietysti myös vaikutusta tuohon seilaamiseen. Siksi tuota toista anturia kyselinkin.
 

Kaimo Ärräpää

Pumppauksen suomenmestari v. 2041
Täytyy muuten ihmetellä, ettei Daikinin oletettu insinörttiarmeija ole saanut aikaiseksi tämäntyyppisiä ohjausjärjestelmiä. Eli suomalaiset pumppaajanörtit näyttää saavan aikaiseksi paremmin toimivia ohjauksia kuin Daikinin lusmut. Kyllä olettaisi, että 2,5k:n pumpussa ei enää ole mitään virittelyn tarvetta! 😭
 

Luukku

Vakionaama
Täytyy muuten ihmetellä, ettei Daikinin oletettu insinörttiarmeija ole saanut aikaiseksi tämäntyyppisiä ohjausjärjestelmiä. Eli suomalaiset pumppaajanörtit näyttää saavan aikaiseksi paremmin toimivia ohjauksia kuin Daikinin lusmut. Kyllä olettaisi, että 2,5k:n pumpussa ei enää ole mitään virittelyn tarvetta! 😭
Katselin just pumpun käyttäytymistä sulatuksen jälkeen, kun DC pakotetaan 95%:in 10 min ajaksi niin kennon lämpötila nousee ihan hyvin sinne 35 asteeseen (koska ulkokenno puhdas) ja ottoteho pysyy 400-500W:ssa. Sisäyksikön anturi ehtii palautua sulatuksen aiheuttamasta järkytyksestä. Ei mitään tarvetta sille tehoryntäykselle mikä tulee Daikinin omalla ohjauksella ja pahimmassa tapauksessa lyödään katko päälle, kun termari näyttää liikaa. Kun 10 min jälkeen palaudutaan normaaliin DC ohjaukseen niin kyllä se vielä 100% pyysi hetkeksi. Ulkona -15.
Suurin syy varmaan on se, että lämmityskäyttöön kyllä Daikin on tehty, mutta oikean käyttökokemuksen puute näkyy. Kaikki kilpailevat testit keskittyy coppiin, maksimi ja pakkastehoihin ei siihen normaaliin käyttöön. Suurin epäkohta on kyllä tuo Daikinin DC säätö, joka jättää lähes käyttämättä tehoalueen 800-1000 normaaliajossa, se on 600 tai jos ei riitä niin sitten täpöt.
Automaattinen tarveohjaus tietysti on ja vähän kiinnostelis tutkia Perferan osalta tuon käyttäytymistä näillä pakkasilla. Yläkerran Stylish on ollutkin sillä jo viikon päivät, kun tuntuu toimivan hyvin yläkerran lämmitysolosuhteissa. Hyvää testikeliä lupasi juuri aamu-TV:ssä, kun pakkaset jatkuu helmikuun puolelle reilusti, kiitos polaaripyörteen hajoamisen.
Lukijan pitää huomioida, että omat testini ja havainnot perustuvat hybridilämmitykseen puu/ilp.
Jos pumppu on ainut lämmönlähde niin nämä "väittämät" eivät välttämättä päde.
 

heebo1974

Aktiivinen jäsen
Joo, siis onhan minulla molemmissa kerroksissa useitakin antureita ja nyt on tuossa pari ylimääräistäkin. En nyt vielä niitä halua alkaa hyödyntämään. No alakerrassa ehkä olisikin hyötyä. Yläkerrassa ehkä jopa haittaa, koska pari huonetta ovat enemmänkin lämmitettyjä elektroniikalla ja käyvät aika lämpöisinä. Saattaisi haitata makuuhuoneen lämmitystä jos tekisi jotain yhdistettyjä antureita.

Olen ahkerasti keskustellut tekojärjen kanssa ja. Yritän nyt taklata draft preventioniakin (testissä DC50). Jotenkaan en usko, että tulen ottamaan noita säätilan vaikutuksia käyttöön, ainakaan vielä. Tässä nykyinen alakerran sensori.
YAML:
{# --- MUUTTUJIEN ALUSTUS --- #}
{# Haetaan sensorien arvot ja muunnetaan ne numeroiksi (float) #}
{% set T = states('sensor.ruuvitag_eac5_temperature_filtered2') | float(0) %}
{% set Tset = states('input_number.ldc_daikin1_setpoint') | float(0) %}
{% set prev = states('input_number.ldc_daikin1_demand_locked') | float(0) %}
{% set T_out = states('sensor.outside_filtered_faikout_stylish') | float(0) %}
{% set T_liq = states('sensor.faikout_stylish_liquid') | float(0) %}

{# --- 0) KYLMÄKERROIN (GAIN) --- #}
{# Mitä kylmempi ulkona on, sitä suurempi kerroin tarvitaan, jotta pumppu reagoi sisälämpötilan laskuun riittävän voimakkaasti. #}
{% set gain_base =
      1.8 if T_out < -15 else
      1.6 if T_out < -10 else
      1.4 if T_out < -5 else
      1.0 if T_out < 2 else
      0.9 %}
{% set gain = gain_base %}

{# --- 1) PERUSTARVE (P-SÄÄDIN) --- #}
{# Lasketaan erotus (e) huonelämmön ja pyynnin välillä. #}
{% set e = T - Tset %}
{# Jos erotus on hyvin pieni (+/- 0.05 astetta), pidetään sitä nollana turhan heilunnan estämiseksi. #}
{% if e | abs < 0.05 %}
  {% set e = 0 %}
{% endif %}

{# Kaava: Lähtötaso 25% + (vastakkainen erotus * 60 * voimakkuuskerroin) #}
{# Esim: Jos T on 0.5 astetta alle pyynnin, lisätään tehoa (0.5 * 60 * 1.4 = 42%) #}
{% set N_base = 25 + (-e * 60 * gain) %}
{# Rajataan tulos välille 25% - 100% #}
{% set N_base = [100, [25, N_base] | max] | min %}

{# --- 2) ENNUSTEKORJAUS --- #}
{# Katsotaan 1h ennustetta: jos kämppä on viilenemässä, lisätään tehoa jo etukäteen (offset). #}
{% set T_future = states('sensor.ldc_daikin1_temp_prediction_1h') | float(0) %}
{% set e_future = T_future - Tset %}

{% if e_future < -0.2 %}
  {% set offset_1h = 5 %}   {# Ennuste kylmä -> lisää 5% #}
{% elif e_future > 0.2 %}
  {% set offset_1h = -5 %}  {# Ennuste kuuma -> vähennä 5% #}
{% else %}
  {% set offset_1h = 0 %}
{% endif %}

{# Lisätään ennustekorjaus perustarpeeseen ja rajataan taas 25-100% #}
{% set N_trend = N_base + offset_1h %}
{% set N_trend = [100, [25, N_trend] | max] | min %}

{# --- 3) SKAALAUS JA NESTEHERÄTYS (ANTI-HIBERNATION) --- #}
{# Jos sulatusrajoitus on päällä (kytkimestä), pakotetaan teho 90 prosenttiin. #}
{% if is_state('input_boolean.ldc_daikin1_sulatusrajoitus', 'on') %}
  {% set N_scaled = 90 %}
{% else %}
  {# Kerrotaan tarve 1.20 kertoimella, jotta saadaan hieman "puskuria" #}
  {% set scale = 1.20 %}
  {% set N_scaled = N_trend * scale %}
  
  {# NESTEHERÄTYS: Estetään Stylishin nukahtaminen takan takia. #}
  {# Jos neste (L) on 20-28.5C välillä, pakotetaan teho vähintään 50 prosenttiin. #}
  {# Tämä varmistaa, että puhallus pysyy päällä (ei mennä Draft Prevention -tilaan). #}
  {% if 20 < T_liq < 28.5 %}
    {% set N_scaled = [N_scaled, 50] | max %}
  {% endif %}

  {# Rajataan lopullinen laskettu arvo välille 30% - 100% #}
  {% set N_scaled = [100, [30, N_scaled] | max] | min %}
{% endif %}

{# --- 3b) PORTAISTUS / PYÖRISTYKSET --- #}
{# Stylish ymmärtää parhaiten tasalukuja. Käytetään tarkempaa 5% jakoa vain yläpäässä. #}
{% if N_scaled > 87.5 %}
  {# Alue 90, 95, 100 (5% jaotus) #}
  {% set N_scaled_rounded = ((N_scaled / 5) | round(0) * 5) %}
  {% set threshold = 5 %}
{% else %}
  {# Alue 30, 40, 50... (10% jaotus) #}
  {% set N_scaled_rounded = ((N_scaled / 10) | round(0) * 10) %}
  {% set threshold = 10 %}
{% endif %}

{% set N_final = N_scaled_rounded %}

{# --- 4) DEADBAND JA AIKAVIIVE (HYSTEREESI) --- #}
{# Estetään pumpun tehon jatkuva "sahaaminen" edestakaisin. #}
{% set diff = (N_final - prev) | abs %}
{# Lasketaan kuinka kauan (sekunteina) edellisestä muutoksesta on kulunut. #}
{% set age = (now() - states.input_number.ldc_daikin1_demand_locked.last_changed).total_seconds() %}

{# MUUTOSSÄÄNNÖT: #}
{# 1. Jos muutos on suuri (>= 20%), toteutetaan se heti. #}
{% if diff >= 20 %}
  {{ N_final | int }}
{# 2. Jos tarve nousee, toteutetaan se jos kynnys (5% tai 10%) ylittyy. #}
{% elif N_final > prev and diff >= threshold %}
  {{ N_final | int }}
{# 3. Jos tarve laskee, odotetaan 10 minuuttia (600s) ennen kuin vähennetään tehoa. #}
{% elif N_final < prev and age > 600 and diff >= threshold %}
  {{ N_final | int }}
{# 4. Muussa tapauksessa pidetään edellinen tehoarvo ennallaan. #}
{% else %}
  {{ prev | int }}
{% endif %}
 

heebo1974

Aktiivinen jäsen
Laitetaan nyt huvikseen viimeisimmät käppyrät. Älkää ihmetelkö tuota DC95 piikkiä aamulla. Se on manuaalisesti aiheutettu draft prevention. :)
1769413054903.png

1769413078889.png
 

heebo1974

Aktiivinen jäsen
Saattaa olla, että tuo draft prevention on sidoksissa sulatuksen lähestymiseen. Ja jos ajellaan alhaisilla DC:llä tuo vain venyy venymistään.
Voi olla mahdollista että DC nosto noissa tilanteissa käynnistää sulatuksen. Se voi jopa olla ihan hyvä juttu, jos vertaa siihen, että ajetaan draft prevention päällä ja huoneen lämmöt laskevat. Jossain välissä se sulatus tulee sitten kuitenkin ja huoneen lämmöt ovat saattaneet jo tipahtaa paljonkin. No tämä scripti kyllä tuntuu reagoivan nopeammin siihen, jos vertaa aikaisemmin käytössä olleen ML scriptin toimintaa.
No tämä vain tälläistä arvailua ja spekulointia.
 

Luukku

Vakionaama
Mitä käytännössä tarkoitat tällä?
Eli voit käskyttää Faikoutille vaikka 43 niin se käyttää sitä vaikka sen oma säätö näyttää 40 tai 45. Tämä on ihan Faikoutin kehittäjän antama tieto.
Mietin tätä samaa.. Oma veikkaukseni on se, että vaikka Faikout ottaisi sisään arvoja yhden askelin, silti se pyöristää ne viiden väleille.
Ei pyöristä, mutta tuo sensori pyöristää mikä meillä on käytössä. Sahausta se aiheuttaa jos 1% pykälillä ohjaa, mutta hyvä tietää, että mahdollisuus on, jos jossain tilanteessa tarvii tuota ominaisuutta.
 

heebo1974

Aktiivinen jäsen
Eli voit käskyttää Faikoutille vaikka 43 niin se käyttää sitä vaikka sen oma säätö näyttää 40 tai 45. Tämä on ihan Faikoutin kehittäjän antama tieto.

Ei pyöristä, mutta tuo sensori pyöristää mikä meillä on käytössä. Sahausta se aiheuttaa jos 1% pykälillä ohjaa, mutta hyvä tietää, että mahdollisuus on, jos jossain tilanteessa tarvii tuota ominaisuutta.
Tämähän saattaa olla läpimurtava tieto!! Miettikää mahdollisuuksia yläpäässä. Esim. DC95-100 yhden pykälän välein.
 
Viimeksi muokattu:
Back
Ylös Bottom