Case: oma talo — Osa 12

Written by

in

Thermia Modbus-ohjaus

Tämä on kahdestoista osa sarjasta joka dokumentoi EnergyHub-järjestelmän rakentamisen vanhaan rintamamiestaloon. Edellisessä osassa käytiin läpi konfliktit ja niiden ratkaisu. Tässä osassa tarkastellaan maalämpöpumpun ohjauksen käytännön toteutusta — mitä Modbus antaa, mitä EVU/Boost-signaalit tekevät ja missä kulkee raja jonka yli ei pidä mennä.


Maalämpöpumppu on kotitalouden energiankäytön kannalta yksi tärkeimmistä laitteista. Se lämmittää talon, tuottaa käyttöveden ja kuluttaa merkittävän osan sähköstä. Siksi se on myös yksi houkuttelevimmista ohjauksen kohteista — ja samalla yksi varovaisimmin lähestyttävistä.

Thermia Calibra 12 on osoittautunut hyväksi kumppanina EnergyHub-ajattelulle. Se ei ole suljettu musta laatikko — Modbus TCP antaa laajan näkymän pumpun sisälle. Mutta se on myös opettanut tärkeän läksyn: ohjaaminen ja hallitseminen ovat eri asioita. Sama periaate pätee muidenkin valmistajien pumppuihin: esimerkiksi Nibe, Daikin, Mitsubishi ja Vaillant tarjoavat vastaavia Smart Grid Ready -tuloja ja Modbus-rajapintoja, joten tämän osan ajattelumalli on siirrettävissä laitemerkistä riippumatta — rekisteriosoitteet ja tilakoodit vain vaihtuvat.

Mitä Modbus antaa

Thermian Modbus-integraatio tarjoaa huomattavan määrän dataa. Luettavissa on muun muassa:

  • Ulkolämpötila, menovesi, paluuvesi, käyttöveden lämpötila
  • Kompressorin kierrosnopeus prosentteina
  • Nykyinen käyttötila: lämmitys, käyttövesi, sulatus, anti-legionella, valmiustila
  • Jonossa olevat vaatimukset prioriteettijärjestyksessä
  • Käyttötuntilaskurit: kompressori, käyttövesi, lisälämmitin
  • Comfort wheel -asetus (sisälämpötilan tavoitearvo)

Käyttötila on erityisen arvokas. Rekisteristä näkee reaaliajassa onko pumppu lämmitysajolla (prioriteetti 4), käyttövesiajolla (3), sulatuksessa (2) vai anti-legionella-syklissä (7). Käytetyt prioriteettiarvot perustuvat Thermian viralliseen Modbus-dokumentaatioon sekä käytännön validointiin tässä järjestelmässä. Tämä mahdollistaa älykkään ohjauksen joka ei taistele pumpun omaa logiikkaa vastaan — se seuraa mitä pumppu tekee ja toimii sen mukaan. Jos pumppu on jo anti-legionella-syklissä (rekisteri 30002 palauttaa arvon 7) tai käyttövesiajolla (arvo 3), EnergyHub ei käynnistä uutta Boost-ohjausta. Ulkoinen automaatio ei taistele sisälogiikkaa vastaan — se näkee sen tilan ja väistää.

EM3-laajennusmoduuli ja neljä tilaa

Thermia Calibra 12:ssa on EM3-laajennusmoduuli joka tarjoaa älykkään sähköverkkotoiminnon — neljä eri ohjaustilaa kahden digitaalisen tulon (SG1 ja SG2) yhdistelmillä:

SG1=0, SG2=0  →  Normal    — normaali toiminta
SG1=1, SG2=0  →  EVU       — esto: kompressori ja lisälämmitin pysäytetään
SG1=0, SG2=1  →  Comfort   — käyttövesi korkeammilla lämpötiloilla
SG1=1, SG2=1  →  Boost     — käynnistää käyttöveden korkeat lähtöarvot,
                              laukaisee bakteerineston tarvittaessa

EnergyHubissa nämä signaalit tuotetaan Shelly Pro 2 -releellä joka kytkee EM3-moduulin tuloja. SG1 on output_0, SG2 on output_1.

Aktiivinen Smart Grid -tila on luettavissa myös Modbusista: rekisteri 30083 (Comfort mode) palauttaa arvon 1=EVU, 4=Normal, 5=Comfort, 6=Boost. Tämä mahdollistaa tilan varmistamisen ohjelman puolelta — ei tarvitse olettaa että rele on mennyt oikeaan asentoon. Tämä readback-mahdollisuus osoittautui myöhemmin arvokkaammaksi kuin kirjoitushetkellä ymmärsin: FMA-kovennuskierroksen jälkeen kaikki tilan palautuspolut varmistavat rekisteristä 30083 että Normal todella tuli voimaan, ja yrittävät uudelleen jos ei tullut. Komento ei ole sama kuin toteuma — tästä lisää sarjan osassa 15.

EVU — esto joka odottaa

EVU (SG1=1, SG2=0) on yksinkertaisin tila: se estää normaalisti kompressorin käynnistymisen ja rajoittaa lämmitystoimintaa valmistajan Smart Grid -logiikan mukaisesti. Käytetään kalliina tunteina tai sulakevaaratilanteissa.

Tärkeä yksityiskohta: EVU ei katkaise käynnissä olevaa kompressoria välittömästi. Kompressorin saa käynnistää vähintään viisi minuuttia ennen pysähtymistä — EVU-signaali odottaa kunnes tämä ehto täyttyy. Tämä suojaa kompressoria lyhyiltä käynnistys-sammutus-sykliltä.

Viive on luettavissa suoraan Modbusista: rekisteri 30061 (Compressor temporarily blocked, start restriction timer) kertoo onko kompressori estoajassaan. Ohjauslogiikka voi seurata tätä rekisteriä eikä sen tarvitse olettaa milloin esto päättyy.

Käytännössä EVU:n vaikutus näkyy vasta minuuttien kuluessa, ei sekunteina. Ohjauslogiikka ei saa olettaa välitöntä pysähtymistä. Tällä viiveellä on käytännön seuraus myös kuormanpudotuksessa: kun sulakeraja uhkaa ja Thermia pudotetaan EVU:lla, vaikutus verkkovirtaan näkyy vasta minuuttien päästä — pudotuslogiikan on siis toimittava iteratiivisesti eikä olettaa että yksi komento riittää.

Boost — trigger and release

Boost (SG1=1, SG2=1) on tehokkain tila: se käynnistää käyttöveden lämmityksen korkeammilla käynnistys- ja pysäytyslämpötiloilla, ja laukaisee tarvittaessa bakteerineston jos säiliö on liian kylmä.

Käytännön testaus paljasti fiksuimman tavan käyttää Boostia:

  1. Aseta Boost — SG1=1, SG2=1
  2. Odota kunnes käyttövesiajo on käynnistynyt (running_priority = 3) — pumppu on tarttunut tehtävään
  3. Palauta Normal — SG1=0, SG2=0
  4. Pumppu jatkaa käyttövesiboostin loppuun itse

Tämä ”trigger and release” -malli on turvallinen koska Boost-tila kytketään pois heti kun tiedetään että pumppu on tarttunut tehtävään. Rele ei jää Boost-tilaan pidemmäksi aikaa kuin välttämätöntä — ja mikä tärkeintä, lämmityksen tahaton boostaus estyy. Käytännön testien perusteella Boost ei välttämättä käynnistä käyttövesiajoa jos käyttövesi on jo riittävän lämmin. Tällöin pumppu ei reagoi Boost-signaaliin ja tila voidaan palauttaa Normaliin ilman vaikutuksia — trigger-and-release toimii myös tässä tilanteessa oikein.

Comfort wheel — pehmein ohjausmetodi

Comfort wheel on arkkitehtuurisesti puhtain tapa ohjata maalämpöpumppua. Se ei pakota tilaa päälle tai pois — se muuttaa pumpun käyttäytymistä sen omien rajojen sisällä.

Tässä on syytä oikaista yleinen väärinkäsitys, johon itsekin aluksi sorruin: Thermian comfort wheel ei ole lämpökäyrän siirto, vaan sisälämpötilan tavoitearvo celsiuksina. Rekisteriin kirjoitetaan esimerkiksi 2200, joka tarkoittaa 22,00 °C:n tavoitetta. Käytännön vaikutus hintaohjauksessa on samankaltainen — tavoitteen laskeminen vähentää lämmitystä, nostaminen lisää sitä — mutta yksikkö ja mekanismi ovat eri asia kuin perinteinen käyräsiirto.

Vanhassa HA:ssa ohjaus oli toteutettu kolmella tasolla:

  • Solar boost — kun P1-mittari näyttää yli 1500 W vientiä ja huonelämpötila on alle 22,3 °C: tavoitearvoa nostetaan. Aurinko tuottaa ylimääräistä — hyödynnetään se lämmitykseen ennen kuin se menee verkkoon.
  • Normaali — perustila, tavoitearvo asetetun arvon mukaan.
  • Eco — kahdeksan kalleinta tuntia vuorokaudessa: tavoitearvoa lasketaan. Rakennuksen lämpömassa toimii puskurina — sisälämpötila ei laske heti vaikka lämmitystä vähennetään.

Comfort wheel kirjoitetaan Modbus-rekisteriin 40006 (scale 100). Home Assistantin YAML:ssa tämä on address: 5, input_type: holding — tästä lisää alla osoitteistusta käsittelevässä huomiossa. Muutos vaikuttaa pumpun ohjaukseen välittömästi — ei tarvita releohjausta.

Nykyisessä EnergyHubissa myös comfort wheel -kirjoitus noudattaa komento ≠ toteuma -periaatetta: Node-RED pitää kirjaa pyydetystä arvosta (pending) ja pitää sitä voimassa olevana (confirmed) vasta kun rekisteristä luettu arvo vastaa pyydettyä. Näin hiljainen kirjoitusvirhe — esimerkiksi Modbus-katkon aikana hukkunut kirjoitus — ei jää huomaamatta.

Mitä Modbus-kirjoitus ei tee

Käytännön testaus opetti myös rajoitteen jota ei dokumentaatiosta selvästi löydy.

Käyttöveden käynnistyslämpötilaa yritettiin muuttaa Modbus-kirjoituksella — tavoitteena käynnistää käyttövesiajo halutuilla hetkillä. Rekisteri kirjoitettiin, arvo muuttui. Mutta mitään ei tapahtunut. Vaikka odotettiin useita tunteja, pumppu ei käynnistänyt käyttövesiajoaan.

Todennäköinen selitys: pumpun sisäinen logiikka tarvitsee käynnistysehdon täyttymisen — riittävän nopean lämpötilanpudotuksen — ennen kuin se reagoi muuttuneeseen käynnistysarvoon. Pelkkä rekisterin arvon muuttaminen ei riitä.

Johtopäätös: käytännön kokeissa Boost-rele osoittautui luotettavimmaksi tavaksi käynnistää käyttövesijakso haluttuna ajankohtana. Modbus-kirjoitus sopii comfort wheel -ohjaukseen, mutta ei käyttövesilämmityksen pakottamiseen halutulle hetkelle.

Viitteeksi: käyttöveden käynnistys- ja pysäytyslämpötilat ovat rekistereissä 40023 (start, scale 100) ja 40024 (stop, scale 100). Arvot voi lukea ja kirjoittaa — mutta pelkkä arvon muuttaminen ei riitä käynnistämään uutta käyttövesijaksoa ilman riittävää lämpötilanpudotusta.

Legionella — seurataan, ei ohjata

Thermia Calibra 12 ajaa anti-legionella-syklin automaattisesti noin 14 päivän välein. Syklin aikana käyttövesi lämmitetään korkeaan lämpötilaan. Sykli näkyy selvästi datassa: kompressori pyörii täydellä teholla, käyttöveden lämpötila nousee poikkeuksellisen korkeaksi.

Tässä järjestelmässä legionellasykli näkyy myös lisälämmittimen aktivoitumisena — mutta vain silloin. Pumppu on sopivasti mitoitettu eikä lisävastuksia tarvita normaaliolosuhteissa edes kovimmilla pakkasilla.

Thermia Calibra 12:n firmware 17.03.145 toi mukanaan käytännön parannuksen: legionellasyklin kuumennusväli on säädettävissä suoraan pumpun näytöltä. Oletusarvo on 14 päivää, mutta liukusäätimellä voi asettaa pidemmän tai lyhyemmän välin. Samasta valikosta näkyy viimeisin ajo ja seuraavan ajon ajankohta — ja halutessa syklin voi käynnistää manuaalisesti ”Käynnistä bakteerinestotoiminto” -napista.

EnergyHub seuraa legionellasykliä: Node-REDin State Collector johtaa tilan suoraan prioriteettirekisteristä (running_priority = 7 → m_hp_legionella_active). Alkamis- ja päättymisajat kirjataan, laskuri kasvaa. Näin nähdään jälkikäteen milloin syklejä on ajettu — ja mikä tärkeintä, käynnissä oleva legionella-ajo estää EnergyHubin oman Boost-ohjauksen.

Mutta ulkoisesta automaatiosta sitä ei voi ohjata. Legionellasuojaus on valmistajan toteuttama turvallisuustoiminto. Välin säätö ja manuaalinen käynnistys tapahtuvat pumpun omasta paneelista — ei Modbusista.

Huomio Modbus-osoitteistuksesta

Thermian dokumentaatio käyttää De Facto -osoitteita jotka alkavat luvuista 40001 (holding), 30001 (input) ja 10001 (discrete input). Esimerkiksi comfort wheel on dokumentaatiossa osoitteessa 40006.

Osa Modbus-ohjelmistoista — mukaan lukien Home Assistantin Modbus-integraatio — käyttää nollapohjaisia osoitteita. Tällöin sama rekisteri on address: 5 YAML-konfiguraatiossa.

Käytännössä:

Dokumentaation De FactoHA YAML addressTyyppi
400065holding
4002322holding
3001615input
10202201discrete input

Tämä on yksi yleisimmistä Thermia-integraation virhelähteistä. Jos rekisteri ei vastaa odotetusti, ensimmäinen tarkistus on osoitemuoto — ei rekisterin sisältö.

Miksi ON/OFF-ohjaus on väärä lähestymistapa

Ensimmäinen ajatus lämpöpumpun optimoinnista on usein koko laitteen sähkönsyötön katkominen kontaktorilla tai älyreleellä. Käytännössä tämä on huono ratkaisu — riippumatta siitä onko kyseessä Thermia, Nibe, Daikin, Mitsubishi vai Vaillant.

Kompressorin minimikäyntiajat rikkoutuvat pakkosammutuksessa. Sisäinen logiikka menettää tilatietonsa. Sulatus- ja käyttövesisyklit keskeytyvät kesken ajon. Käynnistysmäärät kasvavat ja jokainen käynnistys rasittaa kompressoria. Valmistajan suojauslogiikka — se joka oikeasti suojelee laitetta — ohitetaan kokonaan.

Thermian EM3- ja Modbus-rajapinnat mahdollistavat huomattavasti elegantimman lähestymistavan. Lämpöpumpulle ei anneta käskyä ”sammu” — sen käyttäytymistä ohjataan sen omien rajojen sisällä. EVU pysäyttää kompressorin valmistajan suunnittelemalla tavalla. Comfort wheel muuttaa sisälämpötilan tavoitearvoa ilman tilakoneen rikkomista. Boost käynnistää käyttövesilämmityksen oikeaan aikaan — ja pumppu hoitaa loput itse.

Arkkitehtuurinen johtopäätös

Thermia-ohjauksen kokemus tiivistyy yhteen lauseeseen: maalämpöpumppua ei etäohjata — sen toimintaa ohjataan rajojen sisällä.

Käytännössä tämä tarkoittaa kolmea toimenpidettä:

  1. EVU kalliina tunteina tai sulakevaarassa — kompressori ei käynnisty, sulakeriski pienenee.
  2. Boost halvalla tai aurinkoylijäämällä — käyttövesi lämmitetään optimaaliseen aikaan trigger-and-release -mallilla.
  3. Comfort wheel hintaohjauksella — sisälämpötilan tavoitetta nostetaan halvalla, lasketaan kalliilla. Pehmeä muutos joka ei stressaa laitetta.

Mitä ei tehdä: kompressorin pakkokäynnistystä, jatkuvaa ON/OFF-ohjausta tai valmistajan suojausten ohittamista.

Ja neljäs periaate, joka kirjoitushetkellä oli vasta itämässä mutta on sittemmin osoittautunut koko järjestelmän kulmakiveksi: jokainen tilanvaihto varmistetaan lukemalla toteutunut tila takaisin — releen kytkeminen ei vielä todista että pumppu on halutussa tilassa. Miten tämä periaate syntyi ja mitä sen laiminlyönnistä seurasi, käsitellään osassa 15.

Tämä on HEOMF-ajattelun ydin lämpöpumpun kohdalla: optimointi ei tarkoita täyttä kontrollia — se tarkoittaa älykkäämpää yhteistyötä laitteen oman logiikan kanssa.

Tarkemmat ohjeet löytyvät artikkeleista Modbus käytännössä — Home Assistantin integraatio, Thermia Modbus + EVU/Boost-ohjaus ja Käyttöveden älykäs lämmitys aurinkosähköllä.


Seuraavaksi: Osa 13 — Sungrow + EV-lataus. Miten aurinkoinvertterin ohjaus ja sähköauton lataus toimivat yhdessä ja miten negatiiviset hinnat vaikuttavat kumpaankin.

Piditkö artikkelista?

Seuraa blogia myös Blogit.fi:ssä, niin löydät uudet kirjoitukset helposti.

Seuraa blogia Blogit.fi:ssä