Categorie: Thuis automatisering

  • Optimaliseren van de warmtepomp deel 3

    Dit onderdeel beschrijft het meten van de warmtevraag om ruimtes in mijn huis op de gewenste temperatuur te houden. Die vraag moet dan door het warmtepomp-systeem geleverd kunnen worden.

    In 2020 werd in ons huis het Honeywell EvoHome systeem geïnstalleerd. Dit systeem bestaat uit elektronische radiatorventielen (-kranen) die draadloos met een centrale unit communiceren. Er werden 8 ventielen geïnstalleerd, praktisch in elke ruimte eentje. In de woonkamer is er vloerverwarming die een handmatige temperatuurinstelling bleef behouden en zijn er 3 kleine radiatoren, waarvan 1 er een EvoHome ventiel kreeg en de andere 2 hun mechanische thermostaten hielden.

    De woonkamer is een vreemd geval: de vloerverwarming heeft de grootste invloed op de temperatuur. Ik probeer zo weinig mogelijk aan de temperatuurinstelling (rond 26 °C) te veranderen. De enige Evohome regelaar (en de mechanische regelaars) kunnen dan lokaal via hun kleine radiator een wat hogere temperatuur leveren met een wat lagere algemene woonkamer-temperatuur.

    Het EvoHome systeem heeft een centrale unit die als kamerthermostaat dient en via welke je voor elke ventiel een temperatuurprogramma kunt instellen. Deze unit communiceert met het internet en heeft natuurlijk een passend gebruikersinterface.

    Tenslotte heeft het systeem een kastje dat oorspronkelijk mijn oude CV-installatie aantuurde met een aan/uit-regeling. De oude CV-ketel had een verouderd protocol voor het modulerend aansturen, maar dat bleek niet compatibel te maken met dat van het EvoHome systeem.

    Nadat de warmtepomp geïnstalleerd was, was het kastje dat de CV aanstuurde niet meer nodig; in de centrale unit kon deze ook uit de functionaliteit verwijderd worden en sindsdien is het EvoHome systeem dus een losstaand systeem dat de temperatuur in de verschillende ruimtes probeert te regelen, zonder de warmtebron te kunnen aansturen. Dat hoeft geen probleem te zijn, als er maar voldoende warmte (de aanvoertemperatuur naar de radiator moet hoog genoeg zijn) beschikbaar is, wanneer deze nodig is. En dat is nu het doel van het optimaal instellen van de stooklijn (en de andere parameters).

    Het EvoHome systeem heeft ook een API via welke je meetgegevens kunt opvragen; misschien kun je ook dingen instellen, maar dat doe ik niet; het gaat prima via het gebruikersinterface. Er is een standaard module voor deze API van Domoticz en die gebruik ik dus om de gegevens op te halen en verder te verwerken.

    De API levert het setpoint en de gemeten waarde per radiator en van de centrale unit (woonkamer) met een resolutie van 0,5 °C. Maar hij levert niet de warmtevraag. Je zou die warmtevraag kunnen afleiden van het setpoint en de gemeten waarde, maar dat zou te speculatief en naar mijn inschatting te onnauwkeurig zijn; het regelalgoritme ken ik niet.

    In het EvoHome-systeem communiceren de onderdelen met elkaar via een draadloos protocol en wel op 868 Mhz. Er bestaat een USB dongle, die bestaat uit een transceiver chip samen met een micro-Arduino onder de naam Nano CUL 868.

    Je kunt er misschien wel meer mee, maar ik gebruik deze USB dongle om het communicatieverkeer tussen de EvoHome onderdelen af te luisteren, en met name dan de signalen die door de radiator-ventielen naar de centrale unit worden verstuurd. Ik heb deze bij Amazon besteld. Het jammere is, dat er verschillende protocollen bestaan en dat de firmware die je dan krijgt niet het EvoHome protocol kan ontcijferen. Je moet dus een nieuwe firmware naar de chiup op de Arduino schrijven.

    Dat bleek best wel wat werk: het meeste werk (voor mij) was om een aansluiting op het arduinobordje te maken waarmee ik een programmeerapparaatje kon aansluiten. Dit moest gesoldeerd worden en solderen is niet mijn sterkste kant. Met wat hulp (ik had 3 handen nodig) is het toch gelukt en wonderwel had ik niets beschadigd aan het bordje en de aansluitingen waren allemaal OK, waarna ik de firmware kon laden. Meer informatie op deze pagina.

    Ik kon de dongle in een Raspberry Pi met Ubuntu steken en daarop de EvoGateway software installeren. Het werkte eigenlijk best snel , ook de configuratie is snel aangemaakt, want na een tijdje luisteren naar de communicatie maakt de software zelf alvast een configuratiebestand aan. Volgens mij hoefde ik alleen nog maar de namen van de ruimtes in het huis in te vullen; de rest was er al. (Lijkt de Belastingdienst wel.) En het mooie is: de EvoGateway stuurt de meetgegevens naar een MQTT server.

    Laat ik nou net al een MQTT server hebben met daarop de data van de warmtepomp (en ook van de thuisbatterij, maar dat is een ander verhaal) en de EvoHome signalen konden er gemakkelijk bij. Ik moest nog wel een aparte Domoticz module maken (met behulp van Chatgpt) om deze gegevens in te lezen, maar toen had ik uiteindelijk alles.

    Het resultaat was: setpoints en temperaturen in hogere resolutie en een nieuwe meting per radiator-ventiel; “heat demand” oftewel “warmtevraag” op een schaal van 0 tot 1.

    Mij is geen documentatie bekend, maar kijkende naar het gedrag van de regelaars, beschouw ik een waarde van 0,5 als “in balans”; een waarde lager dan dat als “meer dan genoeg voorhanden” en groter dan 0,5 “ik heb meer nodig”. Dit betekent dan, dat het maximum van alle HD waardes de overall vraag bepaalt om ervoor te zorgen dat alle temperaturen adequaat gehandhaafd kunnen worden.

    Met dit hele verhaal is het dus mogelijk om de in deel 2 al genoemde optimalisatie-doelstelling verder uit te werken, ware het niet dat … er uiteenlopende waardes van de heat demand (HD) waren over de verschillende radiatoren en ik me ging afvragen: zijn alle radiatoren wel goed ingesteld? Deze vraag is het onderwerp van deel 4.

  • Optimaliseren van de warmtepomp deel 2

    In het vorige deel is de installatie en de automatisering al in grote lijnen beschreven. Om te kunnen optimaliseren, moet je wat dieper in de materie gaan. Hoe werkt de installatie eigenlijk? Aan welke knoppen kun je draaien om te optimaliseren?

    Veel informatie over de warmtepomp is te vinden op deze Tweakers pagina. Ik beperk me tot mijn essentie.

    Systeembeschrijving

    Het centrale deel van het warmtepomp systeem bestaat uit twee in elkaar grijpende circulaties van water: 1. de circulatie over de radiatoren en de vloerverwarming (links in het schema) en 2. de circulatie over de warmtepomp. Het buffervat is een kortsluiting die beide circulaties met elkaar verbindt. Als beide circulaties even groot zijn, stroomt er netto niets door het buffervat; bij ongelijke debieten wordt dat via het buffervat vereffend en dat kan in twee richtingen zijn.

    Van belang is dat er nog een circulatie over de bijverwarming gaat. Die wordt normaal gesproken niet gebruikt; alleen als bij strenge vorst de warmtepomp te weinig warmte levert, wordt die ingeschakeld via het openen van de driewegklep. Aangezien dit niet vaak voorkomt, wordt die situatie niet in de optimalisatie betrokken.

    Wat ook nog belangrijk is: er zijn 10 radiatoren in het huis waarvan er twee van een mechanische temperatuurregelaar zijn voorzien (in de woonkamer met de vloerverwarming) en de overigen een geautomatiseerde temperatuurregeling hebben. De vloerverwarming is een aparte circulatie met een mechanische temperatuurregelaar voor alle circuits samen die 1 gedeelde pomp hebben. Tenslotte is het belangrijk te weten, dat het systeem van radiatoren (en de aanvoer van het vloerverwarmingssysteem) een overstortventiel heeft.

    Dus alle warmteverbruikers zijn temperatuurgeregeld en dus varieert het debiet over het linkerdeel van het systeem; het overstortventiel voorkomt een te groot drukverschil tussen aan- en afvoer.

    Vrijheidsgraden warmtepomp

    Om de vrijheidsgraden te begrijpen: de warmtepomp bepaaklt de hoeveelheid warmte die hij moet opwekken een de hand van de buitentemperatuur, de zogenaamde stooklijn. Deze bepaalt de gewenste temperatuur van het verwarmingswater dat naar de radiatoren en naar het voedingspunt van de vloerverwarming wordt gestuurd. De curve is lineair

    Tgewenst = Tvoet + B * (T0 – Tbuiten) voor Tbuiten tussen T0 en Tmin

    Aardig wat vrijheidsgraden, zou je zeggen. Het regelalgoritme van de warmtepomp is echter grotendeels een “black box”, maar gelukkig is er wel officiële informatie over hoe het type dat ik heb kan worden ingesteld.

    Voor deze stooklijn is relevant:

    • De verwarming werkt vanaf een laagste buitentemperatuur. De advieswaarde voor T0 is 18 °C (oudbouw); dit neem ik over.
    • Tmin wordt als “niet te wijzigen adviesinstelling” op -10 °C gehouden.
    • B wordt gepaald door de maximale Tgewenst, Tmax (hoogste gewenste watertemperatuur) bij (logischerwijze) Tmin (laagste “geldige” buitentemperatuur)

    Met andere woorden de vrijheidgraden zijn Tvoet en Tmax. Voor de installatie als geheel worden deze geoptimalisserd bij een buitentemperatuur tussen de 0 en 5 °C, waarbij voor het overige gecontroleerd wordt of de verwarming “naar behoren” werkt.

    Regeling van de warmtevraag

    Normaal gesproken kan de warmtevraag/productie van een CV ketel opgelegd worden. Dit kan via het verouderde aan/uit principe of door de ketel tussen een minimaal en maximaal vermogen te laten moduleren.

    Uit het bovenstaande kun je al afleiden, dat dit bij de warmtepomp niet mogelijk is. De interne regeling van de warmtepomp bepaalt het starten en stoppen van de warmtepomp op zichzelf en ook het moduleren van het opwarmend vermogen tussen (redelijk beperkte) grenzen.

    Het algoritme is niet bekend, maar als je het gedrag bekijkt (en het Tweakers forum staat vol met ervaringen van gebruikers), is het het regelen van een gemiddelde watertemperatuur aan de hand van de stooklijn met criteris voor het starten en stoppen. Het netto-effect (bij mij) is dat bij een buitentemperatuur warmer dan ongeveer 10 – 15 °C er een combinatie van aan/uit-gedrag en moduleren voorkomt en daaronder een continue werking met modulatie.

    Er is nog een ander effect: bij lage temperaturen en/of hoge luchtvochtigheid vindt er ijsvorming plaats op de verdamper (daar waar het koude koelmiddel verdampt door de koude buitenlucht, die daardoor nog kouder wort, maar waarbij vocht uit de lucht zich afzet. De regeling van de warmtepomp zal dan een “ontdooi-cyclus” starten door de verdamper op te warmen waardoor het ijs afsmelt.

    Tijdens zo’n cyclus valt het verwarmend vermogen weg; de opgeslagen warmte in het buffervat kan dit opvangen, maar bij steeds lagere temperaturen wort dat moeilijker en dan zal de regeling van de warmtepomp de bijverwarming (mijn CV ketel) starten en van daaruit warm water in het circuit stoppen.

    Belangrijk is nu: de thermostaat in de woonkamer (of in mijn geval de individuele regelaars op de radiatoren) kunnen dus niet de warmtevraag opleggen aan de warmtepomp. De warmtepomp regelt alleen maar de temperatuur in de aanvoer van de circulatie naar de radiatoren en naar het eigen circulatiesysteem van de vloerverwarming.

    Bijgewerkte probleemstelling

    Het uitdaging is dus, om bij een buitentemperatuur tussen ongeveer 0 en 5 °C de stookcurve zo laag mogelijk in te stellen, zodat er toch voldoende warmte wordt geleverd in vergelijking met de warmtevraag. Er wordt dan achteraf gecheckt of bij andere buitentemperaturen de verwarming “naar behoren” werkt.

    Zonder verdere uitweiding, dienen ook de volgende systeem-instellingen te worden geoptimaliseerd:

    • De instelling van de “Buderus” circulatiepomp (debiet laag/middel/hoog en de vorm van de pompcurve)
    • De instelling van de circulatiepomp van de vloerverwarming (laag/middel/hoog)
    • De regel-instelling van de circulatiepomp over de warmtepomp. Deze wordt geregeld door het temperatuurverschil tussen in- en uitgaande stromen naar/van de warmtepomp. Dat is een instelling in de lijst van Nefit-Bosch, een “niet te wijzigen instelling” van 7 °C tijdens verwarmen

    Dit is het voor deel 2 van het verhaal. In deel 3: hoe weet ik de warmtevraag vanuit de radiatoren?

  • Optimaliseren van de warmtepomp deel 1

    In plaats van de hele infrastructuur van mijn thuis-automatisering helemaal uit te leggen, ga ik de laatste toepassing ervan, het optimaliseren van de warmtepomp beschrijven en en passant komen de onderdelen van die automatisering wel langs.

    In 2022 was mijn oorspronkelijk verwarmingsketel aan vervanging toe en toen besloten we een hybride warmtepomp / gasketel combinatie te nemen. Dat werd een Nefit Bosch Enviline Monoblock. Daar zit een complexe binnen-unit bij die alle circulatiestromen stuurt met de benodigde meet- en regel functionaliteit. Er zijn maar beperkte instelmogelijkheden (zeker als je op het werk gewend bent in het DCS systeem alles te kunnen instellen en wijzigen!), maar wat wel mogelijk is, om alle signalen digitaal op te vragen.

    Er bestaat namelijk een kastje dat het netwerkprotocol (EMS bus) dat de sturing van alle onderdelen van het systeem (de binnen- en de buiten-unit, de communicatie met de CV ketel (ook Nefit) kan afluisteren. Dat is een kastje van BBQKees. In totaal zijn er zo’n 100 signalen, maar een hoop ervan zijn overbodig of nietszeggend, dus uiteindelijk verwerk is er iets meer dan de helft ervan, zeg zo’n 65 signalen.

    Het BBQKees kastje kan als MQTT client communiceren met een MQTT server en daarop al die meetgegevens publiceren.

    In mijn thuis automatisering speelt Domoticz een centrale rol als centrale waarop vele signalen binnenkomen. Ik heb het ooit eens geïnstalleerd toen ik in 2019 begon met zonnepanelen en ik de gegevens van mijn gas- en stroommeter wilde registreren. Nadien zijn er diverse andere typen signalen aan toegevoegd. De functionaliteit van Domoticz vind ik niet denderend, maar je kunt de metingen doorsturen naar InfluxDB en dat is de kern van de verwerking van real-time signalen naar “bruikbare” geaggregeerde data.

    Domoticz nu, kan zich abonneren op MQTT data en het is zelfs zo dat het BBQKees der opbouw van het topic met al die EMS meetgegevens zodanig kan doen dat je met een eenvoudige Domoticz module ze allemaal naar binnen kunt halen.

    De Domoticz applicatie draait op een dedicated Raspi server en op diezelfde server heb ik de MQTT server software geïnstalleerd. Deze server draait in zijn eigen VLAN in mijn thuisnetwerk. Het BBQKees kastje zit in het IoT VLAN en met firewall-regels op de OPNsense zorg ik ervoor dat hij op de MQTT server kan publiceren.

    Even terug naar het oorspronkelijke doel: het optimaliseren van de hybride warmtepomp-installatie: je hebt daarvoor meetgegevens nodig en dat is dus mogelijk doordat Netfit-Bosch het EMS protocol gebruikt om systeem-onderdelen met elkaar te laten communiceren. Aan datzelfde netwerk kun je een BBQKees kastje koppelen dat naar een servertje met Domoticz en een MQTT server de signalen kan ontvangen.

    Om het deel van de warmtepomp compleet te maken, hierbij ook nog een schema van het fysieke systeem:

    Er zijn twee circulatiepompen, eentje over de radiatoren en de vloerverwarming (“Buderus” pomp, eigenlijk een Buderus-systeem met daarin een Wilo pomp) en eentje die de circulatie over de buiten-unit stuurt (zit in de binnen-unit). Die laatste circulatiepomp regelt het temperatuurverschil ((TC3 – TC0) over de buiten-unit door de circulatiesnelheid aan te passen. Je kunt daarvan het setpoint instellen, maar Nefit Bosch geeft hiervoor een advieswaarde.

    Dit is het voorlopig even. De volgende hoofdstukken gaan over

    • De individuele regelventielen (Honeywell EvoHome HR92) op de radiatoren: hierbij de door de fabrikant geleverde API en mijn zelfgebouwde systeempje om de ruwe data uit de communicatie tussen regelaars en centrale unit te onderscheppen)
    • De Testo klem-temperatuurmeters die je op leidingen of radiatoren kunt klemmen om lokale temperaturen te meten; ook hierbij de manier om de signalen via een API te kunnen registreren en via MQTT verder te verwerken
    • Daarna komt het hele meten en optimaliseren van het gehele system aan bod

    Als je al specifieke vragen bet, kun je die via Contact stellen.

  • Thuis automatisering

    Onze eigen omgeving van thuisautomatisering is te groot om in één blog-artikel te beschrijven. Hier alleen maar een overzicht van de belangrijkste componenten:

    • Domoticz dat signalen ontvangt van de energiemeter, de omvormer van de zonnepanelen, de besturing van de warmtepomp, van de radiatoren van de verwarming en van de thuisbatterij
    • Telegraf en Chronograf dat alle signalen van Domoticz en die van een andere bronnen, zoals OPNsense en van een meetkastje van luchtsensoren ontvangt en presenteert. De presentatiemogelijkheden van Domoticz zijn beperkt. In Domoticz worden de meetgegevens geconcentreerd naar data die over lange tijd worden verzameld (lange tijdreeksen) om te kunnen worden geanalyseerd.
    • In twee linux-systemen in de Cloud is een ETL workflow gemaakt die de geconcentreerde data omzet in berekende (KPI-achtige) getallen omzet. Hierbij kun je ook andere gegevens van internet downloaden, zoals bijvoorbeeld die van het KNMI of van een site met dynamische energieprijzen
    • In PowerBI zijn er dashboards voor het weergeven en analyseren van energieverbruiken, de werking van de radiatoren en nog veel meer

    In het verdere vervolg zal ik deze onderdelen, hoe ze werken en hoe ze gebouwd zijn verder uitwerken. Als je specifiek iets wil weten, neem dan contact op. Dan kan ik er bij de uitwerking rekening mee houden.