FIBARO HC3 LUA: Zone heating No.1 Radiators and boiler

FIBARO HC3 LUA: Zone heating No.1 Radiators and boiler

Zone heating - case - Control of radiators and boiler control based on the heating status of individual rooms

This blog will be dedicated to setting the heating zones in the FIBARO Home Center 3 control panel using the climate panel. Each temperature zone (or in other words a radiator) will be controlled by a thermostatic head on the radiator, the boiler will be switched on if it is necessary to heat in some of the rooms. Otherwise, if the set temperature is reached in all rooms, the boiler will switch off.

After setting the individual zones, we will give an example of the LUA scene, which, based on a comparison of the measured and set temperatures in the room, evaluates whether the boiler should be switched on or vice versa does not need to heat water for the heating system.


What you need when you want to realize this way of heating control:

1. home automation hub - FIBARO Home Center 3
2. Z-Wave radiator head, ideally one that has an external or built-in temperature sensor to measure room temperature - e.g. FIBARO The Heat Controller Starter Pack ZW5 or Popp Heating Thermostat
3. action element for boiler control - either a potential-free relay eg. FIBARO Relay Switch 1x2,5kW (FGS-212) or thermostat with dry relay output eg. SECURE SRT323 Wireless Thermostat


FIBARO Home Center 3 - setting the climate zones in the climate panel

First of all, it is necessary to create appropriate sections (eg 1st floor) and rooms (eg Room 1 - living room, etc.) in the FIBARO Home Center 3. Learn how to create a room at - https://manuals.fibaro.com/home-center-3/#post-14107

Then you need to add Z-Wave devices such as radiator heads and relay / thermostat to control the boiler.

Once these devices have been added, you should move them to the appropriate rooms.

Then go to FIBARO Home Center 3, Settings and click Climate = Climate.
FIBARO HC3 LUA - Zónové kúrenie Radiátory a kotol

After this step, you can have Automatic Temperature Zones created (only for radiator valves). Note: If you are using thermostat for boiler control do not create Temperature Zone for boiler thermostat. In other word, delete temperature zone for boiler thermostat, if FIBARO system had already created one.
FIBARO HC3 LUA - Zónové kúrenie Radiátory a kotol

If you have correctly created Sections and Rooms, zones will be created neatly and correctly without the need for modification. In this step you can intuitively set the temperatures for the given temperature zones in different time schedules.
FIBARO HC3 LUA - Zónové kúrenie Radiátory a kotol


FIBARO Home Center 3 - explanation of LUA boiler control script based on radiator head demand

In the FIBARO Home Center 3 Settings, select Scenes and add a LUA scene to which you copy the content below, depending on whether you are using:
- 1st boiler control by potential-free relay module - FIBARO Relay Switch 1x2,5kW (FGS-212)
- 2. boiler control by thermostat with dry relay output eg. SECURE SRT323 Wireless Thermostat

Copy both LUA scene blocks Left block = DECLARATIONS (Conditions/Triggers) and Right blok = ACTIONS

Nothing needs to be changed in the left block = DECLARATIONS (Conditions / Triggers). It works to trigger a scene every 5 minutes (300s). In line 9, you can change the scene start interval to longer / shorter as needed.

In the right block = ACTIONS, you need to change rows 1,2,3. Do not change other rows. In the 1st row, enter the ID of the device that measures the temperature in each room. E.g. temperature sensors of thermostatic / radiator heads. Separate devices with commas, beware, because device IDs must be in the same order on the second line. Example below.

In line 2, enter the ID of the device that sets the room temperature. These are radiator head devices. Separate devices with commas, beware because device IDs must be in the same order as the first line. Example below.

In the 3rd row, enter the ID of the control element for boiler control - either a potential-free relay eg. FIBARO Relay Switch 1x2,5kW (FGS-212) or thermostat with dry relay output eg. SECURE SRT323 Wireless Thermostat

 

local fromID = {22,28} -- Temperatures sensor (Measured temperatures)
local toID = {21,27} -- Radiator thermostats (Set temperatures / Setpoints)
local boiler = 33 -- Relay / Thermostat for boiler control

ID 22 corresponds to the temperature sensor in Room 1 - e.g. Living room
ID 21 corresponds to the radiator head in Room 1 - e.g. Living room

ID 28 corresponds to the temperature sensor in Room 2 - e.g. The kitchen
ID 27 corresponds to the radiator head in Room 2 - e.g. The kitchen


How do I find out the ID of each device?

In Settings panel Devices = Devices - you can see a list of all devices added to FIBARO Home Center 3 and system markings called IDs belonging to these devices, which are often used in LUA scenes.
FIBARO HC3 LUA - Zónové kúrenie Radiátory a kotol

 


1. FIBARO Home Center 3 - LUA script for boiler control by relay module eg. FIBARO Relay Switch 1x2.5kW (FGS-212)

Left block = DECLARATIONS (Conditions/Triggers)

{
  conditions = { {
      isTrigger = true,
      operator = "matchInterval",
      property = "cron",
      type = "date",
      value = {
        date = { "00", "00", "1", "3", "*", "2020" },
        interval = 300
      }
    } },
  operator = "any"
}

Right block = ACTIONS

local fromID = {22,28} -- Temperatures sensor (Measured temperatures)
local toID = {21,27} -- Radiator thermostats (Set temperatures / Setpoints)
local boiler = 33 -- Relay for boiler control
local flaq_1 = 0


for i=1,#toID do 

    local name1 = fibaro.getName(fromID[i])
    local room1 = fibaro.getRoomNameByDeviceID(fromID[i])
    local name2 = fibaro.getName(toID[i])
    local room2 = fibaro.getRoomNameByDeviceID(toID[i])

    if ( fibaro.getValue(toID[i], "heatingThermostatSetpoint") ~= fibaro.getValue(fromID[i],"value") ) then        
        fibaro.debug("", name1.. " / v miestnosti / " ..room1.. "  - Namerana Teplota: " ..fibaro.getValue(fromID[i], "value") )
        fibaro.debug("", name2.. " / v miestnosti / " ..room2.. "  - Nastavena Teplota: " ..fibaro.getValue(toID[i], "heatingThermostatSetpoint") )

                if ( fibaro.getValue(fromID[i],"value") < fibaro.getValue(toID[i], "heatingThermostatSetpoint") ) then              
                        flaq_1 = 1
                end                
    else
        flaq_1 = 0
        fibaro.call(boiler, "turnOff")
        fibaro.debug("","vypinam")
    end
end

if (flaq_1 == 1) then
    fibaro.call(boiler, "turnOn")
    fibaro.debug("","zapinam")
else
    fibaro.call(boiler, "turnOff")
    fibaro.debug("","vypinam")
end


2. FIBARO Home Center 3 - LUA script for boiler control by thermostat eg. SECURE SRT323 Wireless Thermostat

Left block = DECLARATIONS (Conditions/Triggers)

{
  conditions = { {
      isTrigger = true,
      operator = "matchInterval",
      property = "cron",
      type = "date",
      value = {
        date = { "00", "00", "1", "3", "*", "2020" },
        interval = 300
      }
    } },
  operator = "any"
}

Right block = ACTIONS

local fromID = {22,28} -- Temperatures sensor (Measured temperatures)
local toID = {21,27} -- Radiator thermostats (Set temperatures / Setpoints)
local boiler = 30 -- Thermostat for boiler control
local flaq_1 = 0


for i=1,#toID do 

    local name1 = fibaro.getName(fromID[i])
    local room1 = fibaro.getRoomNameByDeviceID(fromID[i])
    local name2 = fibaro.getName(toID[i])
    local room2 = fibaro.getRoomNameByDeviceID(toID[i])

    if ( fibaro.getValue(toID[i], "heatingThermostatSetpoint") ~= fibaro.getValue(fromID[i],"value") ) then        
        fibaro.debug("", name1.. " / v miestnosti / " ..room1.. "  - Namerana Teplota: " ..fibaro.getValue(fromID[i], "value") )
        fibaro.debug("", name2.. " / v miestnosti / " ..room2.. "  - Nastavena Teplota: " ..fibaro.getValue(toID[i], "heatingThermostatSetpoint") )

                if ( fibaro.getValue(fromID[i],"value") < fibaro.getValue(toID[i], "heatingThermostatSetpoint") ) then              
                        flaq_1 = 1
                end                
    else
        flaq_1 = 0
        fibaro.call(boiler, "setHeatingThermostatSetpoint", 15)
        --fibaro.call(boiler, "turnOff")
        fibaro.debug("","vypinam")
    end
end

if (flaq_1 == 1) then
    fibaro.call(boiler, "setHeatingThermostatSetpoint", 30)
    --fibaro.call(boiler, "turnOn")
    fibaro.debug("","zapinam")
else
    fibaro.call(boiler, "setHeatingThermostatSetpoint", 15)
    --fibaro.call(boiler, "turnOff")
    fibaro.debug("","vypinam")
end

21 Comments

  • Bogdan C

    Bogdan C 16.10.2023 Reply

    Greetings guys,
    Thank you for the LUA script and for detailed information. Instead using Fibaro Relay Switch I used A Fibaro Smart Implant and worked perfectly.
    Thank you again.
    Good job, you deserve it!
  • Jakub Martínek

    Jakub Martínek 01.12.2021 Reply

    Zdravím, používám HC3L+FIBARO hlavice a skript od "YATUN" podpory. Jaký by mohl být rozdíl od Vašeho skriptu?
    V komentářích jsem četl dotaz na maximální otevření hlavice (Juro 22.10.2021). Např. podle skriptu YATUN se sice pošle signál relé při poklesu teploty na požadovanou a relé pustí kotel ale hlavice která poslala signál se neotevře takže radiátor který má topit zůstane studený. Čekal bych že se hlavice otevře na maximum nebo na požadovanou teplotu +3°C dokud nedojde k "natopení" místnosti a pak se opět uzavře.
    Dá se na to nějak lehce napsat/upravit skript?
    Díky za rady!

    ODKAZ NA APLIKACI:
    https://podpora.yatun.cz/cs/support/solutions/articles/9000200372-automatick%C3%A9-sepnut%C3%AD-kotle-rychl%C3%A1-aplikace
    • SmarterHOME Team

      SmarterHOME Team 02.12.2021 Reply

      Dobrý deň,
      momentálne neposkytujeme služby LUA skriptovania kvôli vyťaženosti.
      Hlavice sa riadiaca svojou internou logikou takže tá sama hlavica vyhodnocuje ako veľmi je otvorená za touto logikou stojí FIBARO.
      Tento skript len porovnáva nameranú a nastavenú teplotu.
      Pekný deň.
      SmarterHOME
  • Petr Patočka

    Petr Patočka 18.11.2021 Reply

    Rád bych se zeptal, proč používat hodnoty teplot a né požadavek hlavive na dodávku tepla?

    U nového firmwaru, při změně parametrů, to hlavice umí předávat a pak použít podmínu

    if fibaro.getValue(toID[i], "heatRequired") then

    Mě to třeba jako teplotu při zapnutém ventilu ukazuje divně velikou. Zatím jsem ve fázi příprav, tak nevím co bude lepší.

    Díky.
    • SmarterHOME

      SmarterHOME 22.11.2021 Reply

      Dobrý deň,
      môžete pri FIBARO hlaviciach používať aj
      if fibaro.getValue(toID[i], "heatRequired") then
      Avšak nie vždy sa to správalo korektne. Treba odskúšať čo Vám bude fungovať lepšie.
      Pekný deň.
      SmarterHOME
  • Juro

    Juro 22.10.2021 Reply

    Dobrý deň,

    Chápem to dobre, že pri tom to LUA skripte ak príde k stavu ,že nameraná hodnota na snímači v jednej zmiestností bude nižšia ako nastavená na termostatickej hlavice následne skript spustí kotol a hlavica v danej miestnosti sa otvorí na maximum a v ostatných miestnostiach kde netreba kúriť sú hlavice uzavreté? Jedná sa mi o to či termostatická hlavica bude otvorená po celú dobu zopnutia kotla len v danej miestnosti.

    Ďakujem
    • SmarterHOME Team

      SmarterHOME Team 03.11.2021 Reply

      Dobrý deň,
      skript funguje v princípe veľmi jednoducho a to tak, že porovnáva nastavenú teplotu na hlaviciach a nameranú teplotu v danej miestnosti.
      Keď je čo i len na jednej hlavici nastavená teplota vyššia ako nameraná v danej miestnosti - kotol beží.
      Pekný deň.
      SmarterHOME
  • Petr Dvořák

    Petr Dvořák 19.09.2021 Reply

    Dobrý den, potřeboval bych do kódu vložit ještě podmínku (čerpadlo spustit jen tehdy když je teplota aku nádoby nad 40°C .Prosím o nasměrování kam a co vložit. Děkuji..
    • SmarterHOME Team

      SmarterHOME Team 14.10.2021 Reply

      Dobrý deň,
      taká podmienka vyzerá nasledovne:

      if ( fibaro.getValue(ID_AKU_NADOBY, "value") nahradit znamienko väčšie ako 40 ) then
      ...
      end

      Len tento kúsok LUA kódu, treba správne umiestniť.
      Pekný deň.
      SmarterHOME
  • Petr

    Petr 12.02.2021 Reply

    Dobrý den,
    použil jsem výše uvedený kód (řízení kotle pomocí relé modulu) a fungoval bezvadně do chvíle, než z mnou neznámého důvodu se přestala načítat hodnota z jednoho teploměru. Pak se relé nesepne. Jde tohle nějak ošetřit? Je to stejný případ, jako kdyby se rozbil teploměr, vybila se baterka apod.
    Děkuji
    • SmarterHOME Team

      SmarterHOME Team 13.02.2021 Reply

      Dobrý deň,
      ďakujeme za dotaz.
      Ošetriť sa dá veľa vecí - napíšte nám prosím na podpora@smarterhome.sk a dohodneme sa na ďalšom postupe.
      Pekný deň.
      SmarterHOME Team
  • Roman Přichystal

    Roman Přichystal 12.11.2020 Reply

    Bude scéna fungovat i s hlavicemi Danfoss? Po nastavení mám kotel trvale sepnutý bez ohledu na naměřené/nastavené teploty.
    • SmarterHOME Team

      SmarterHOME Team 16.11.2020 Reply

      Dobrý deň,
      príklady sú práve riešené s POPP hlavicami, ktoré sú obdobou Danfoss hlavíc.
      Ak Vám skript nefunguje niečo nemáte správne nastavené.
      Skontrolujte si čím ovládate KOTOL, či relé prvkom alebo Z-Wave termostatom. Podľa toho aplikujte patričný LUA skript.
      Ďakujeme za pochopenie.
      Pekný deň.
  • Petr

    Petr 04.10.2020 Reply

    Dobrý den,
    není v tom Actions LUA kódu chyba?

    První IF porovnává cílovou a aktuální teplotu (pro každou zónu). Pokud není stejná, přichází druhé IF, které testuje, zda je aktuální nižší než cílová. Jenomže v prvním IF je ELSE, které se vykoná, když cílová teplota rovná se aktuální. V tom případě vypne kotel a nastaví FLAG na 0.

    Proč ale vypínat kotel, pokud neprošly všechny srovnání na všech zónách (celý cyklus FOR)? Dle mého by celý blok za ELSE tam být neměl. Rozhodnutí, zda vypnu či ne by mělo být na základě celého cyklu FOR. Jestliže výchozí hodnota FLAG je 0, tak jakákoliv změna na 1 má mít za následek zapnutí kotle na závěr.

    Pokud by totiž v poslední testované zóně byla teplota dosažena a FLAG nastaven na 0, závěrečný test by vypl kotel, i když předchozí zóny by třeba neměly teplotu dosaženu.

    Čistší by navíc asi i bylo, kdyby ty 2 první IF byly spojeny do jedné podmínky, IF je aktuální nižší než cílová THEN FLAG = 1.

    Po konci FOR otestovat, jak je uvedeno v kódu, a vypnout nebo zapnout kotel.
    • SmarterHOME Team

      SmarterHOME Team 05.10.2020 Reply

      Dobrý deň,
      ďakujeme za poznámku a tip.

      Máte pravdu, uvedený LUA kód sa dá vylepšiť ako popisujete. Článok aktualizujeme.

      Pekný deň.
      SmarterHOME Team
  • Martin

    Martin 27.09.2020 Reply

    Dobry den

    Vie to spolupracovat aj s bezdrotovym termostatom saswell t19 rf ?
    Tento termostat funguje na frekvencii 868 Mhz, FSK
    Ja pouzivam tento termostat k elektrokotlu v rodinom dome.
    Pouzivam ho v referencnej miestnosti, no keby som si dokupil inteligentne radiatorove hlavice, trebats do izieb kde spime a nastavim ich na nizsiu teplotu ako v referencnej izbe tak tie hlavice sa mi vypnu a kotol pojde dalej kym nedosiahne teplotu nastavenu na termostate ?

    Da sa to pouzit aj v drevosplynovacich kotloch, trebars ci je nejake cidlo co mi ukazuje teplotu vody v AKU nadrzi, aby som trebars nemusel chodit pozerat do kotolne na nadrz, ci som ju nejako neprehrial, popripade ci bu to vedelo nejako emergency spustit obehove cerpadlo keby bola nadrz prehriata a to aj v pripade, ze je teplota v domacnosti na pozadovanej urovni a tym padom obedove cerpadlo je odstavene

    Dakujem
    • SmarterHOME Team

      SmarterHOME Team 28.09.2020 Reply

      Dobrý deň,
      ďakujeme za dotaz.

      Momentálne FIBARO HC3, nepodporuje uvedený termostat Saswell T19 7 RF, možno v budúcnosti keď pribudne podpora 868 MHz zariadení s otvoreným protokolom. Tento termostat môžete vymeniť za Z-Wave termostat.

      Ak by ste mali Z-Wave termostat a hlavice, tak ak by v nejakej izbe bola potreba kúriť tak kotol je stále zopnutý, ak by všetky hlavice hlásili, že už sú miestnosti vykúrené tak kotol je vypnutý.

      Čo sa týka drevosplyňovacích kotlov, tak teplotu vody v AKU nádrži viete monitorovať napr. modulom

      Qubino Flush 1D Relé Plus [ZMNHND1]
      https://smarterhome.sk/sk/zwave-bezdrotove-vypinace/qubino-flush-1d-rele-plus-zmnhnd1-202.html?search_query=qubino+1D&results=20

      a teplotným senzorom Qubino Teplotný Senzor ZMNHEA1
      https://smarterhome.sk/sk/kurenie/qubino-teplotny-senzor-zmhnea1-212.html?search_query=qubino+1D&results=20

      Obehové čerpadlo by sa mohlo riešiť ďalším Z-Wave relé modulom.

      Ďakujeme za pochopenie.
      Pekný deň.

      SmarterHOME Team
  • Juraj

    Juraj 03.08.2020 Reply

    Dobrý den,
    mám jeden "teoretický" dotaz. Když vidím výše uvedené nastavení, tzn. že pro každou zónu (hlavice/radiátor) nastavím teploty a časy, k čemu je pak dobré mít v systému termostat?

    Napadá mě jen optimalizace díky najakému algoritmu, který na základě sběru dat optimalizuje okamžiky a délky spínání.

    Nebo mi uniká něco dalšího? Ta optimalizace algoritmem ale stejně bude fungovat jen v zóně, ve které je ten termostat, ne? Nebo díky centrále HC3 a provázanosti všech prvků se optimalizují pak všechny zóny?

    Díky moc za osvětlení problematiky.
    • SmarterHOME Team

      SmarterHOME Team 04.08.2020 Reply

      Dobrý deň,
      algoritmus robí to, že porovnáva nastavenú teplotu na hlaviciach s nameranou teplotou na hlaviciach.

      Na základe toho ak ešte niektorá z hlavíc kúri, tak kotol ovládaný buď relé modulom alebo termostatom ešte beží, ak však sú všetky miestnosti vykúrené a hlavice sú zatvorené (nastavená teplota na všetkých hlaviciach osobitne je nižšia ako nameraná teplota) tak sa kotol na ohrev vody vypne pomocou buď relé modulu alebo termostatu.

      Pekný deň.
      SmarterHOME
      • Juraj

        Juraj 04.08.2020 Reply

        Díky za reakci.
        To, co píšete, to dělá ten výše uvedený LUA script.

        Ale mě zajímá, k čemu je výhodné (či nutné) pak mít v systému zapojený ještě termostat (pokud spínání kotle dělá relé na základě toho LUA scriptu)? Je vůbec nutný a případně proč?
        • SmarterHOME Team

          SmarterHOME Team 05.08.2020 Reply

          No práve preto sú tam 2 prípady.
          Niekoľko z našich zákazníkov už kotol ovládali priamo Termostatom, ktorý mal v sebe relátko.
          Ak máte na kotli len relé, termostat Vám netreba.

          Pekný deň.
          SmarterHOME

Leave a CommentLeave a Reply

Blog search

Latest Comments

Recently Viewed

No products

Menu

Compare 0