<?xml version="1.0" encoding="UTF-8"?>
<Config Version="1.3"
        xmlns="http://www.insbud.net/ibmanager/logicCfg"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.insbud.net/ibmanager/logicCfg logicCfg.xsd">

  <!--
    ======================
    Description
    ======================

    Wodny grzebieniowy GWC, pojedynczy, bez recyrkulacji.

    ======================
    Parameters
    ======================

    SubLogic supports following variables:

    input.t.outdoor.value
    input.t.outdoor.value.mode
    input.t.outdoor.err                     - temperatura zewnętrzna

    input.t.vent.supply.value
    input.t.vent.supply.value.mode
    input.t.vent.supply.err                 - temperatura powietrza nawiewanego za GWC

    input.t.ghe.inner.value
    input.t.ghe.inner.value.mode
    input.t.ghe.inner.err                   - temperatura złoża GWC

    input.t.water.value
    input.t.water.value.mode
    input.t.water.err                       - temperatura wody zraszającej

    input.water.level                       - czujnik poziomu wody (0 - OK; 1 - wysoki poziom wody)
    input.water.level.mode                  - tryb pracy wyjścia (0 - AUTO; 1 - MANU)

    input.water.pulse                       - aktualny przepływ wody zraszającej (impulsy)

    input.output.water.valve.mode
    input.output.signal.vent.disable.mode   - tryb pracy wyjścia (0 - AUTO; 1 - MANU)

    output.water.valve                      - elektrozawór polewania złoża wodą (0 - zamknięty; 1 - otwarty)

    output.signal.vent.disable              - sygnał wyłączenia nawiewu (ochrona przed zamarzaniem złoża zimą) (1 - wstrzymaj nawiew)

    setting.logic.delay                     - czas zwłoki działania logiki. Dopiero po tym czasie logika zacznie pracować [s]

    setting.kontrola_naw                    - czy ma być realizowana kontrola nawiewu (nastawa użytkownika) [0..1]

    setting.kontrola_zlo                    - czy ma być realizowana kontrola złoża (nastawa użytkownika) [0..1]

    setting.T_lato                          - od kiedy lato

    setting.T_nawiew_lato                   - nawiew latem

    setting.Nawiew_lato                     - czas pomiędzy zraszaniami lato [min]

    setting.Zraszanie_lato                  - ilość wody do zraszania lato [l]

    setting.Regeneracja_lato                - ilość wody do regeneracji latem [l]

    setting.T_upal                          - od kiedy upal

    setting.T_nawiew_upal                   - nawiew jak upał

    setting.Nawiew_upal                     - czas pomiędzy zraszaniami upał [min]

    setting.Zraszanie_upal                  - ilość wody do zraszania upał [l]

    setting.Regeneracja_upal                - ilość wody do regeneracji upał [l]

    setting.T_zima                          - od kiedy zima

    setting.T_nawiew_zima                   - nawiew jak zima

    setting.Nawiew_zima                     - czas pomiędzy zraszaniami zima [min]

    setting.Zraszanie_zima                  - ilość wody do zraszania zimą [l]

    setting.Regeneracja_zima                - ilość wody do regeneracji zimą [l]

    setting.T_mroz                          - od kiedy mróz

    setting.T_nawiew_mroz                   - nawiew jak mróz

    setting.Nawiew_mroz                     - czas pomiędzy zraszaniami mróz [min]

    setting.Zraszanie_mroz                  - ilość wody do zraszania mróz [l]

    setting.Regeneracja_mroz                - ilość wody do regeneracji mróz [l]

    setting.Histereza_mroz                  - histereza powiązana z odmrazaniem złoża [*C]

    setting.T_zamarzaGWC                    - temperatura złoża poniżej której może zamarzać

    setting.Pauza_zima                      - pauza po odmrażaniu przed włączeniem nawiewu [min]

    setting.CzasMAX                         - po tym czasie alarm braku wody [min]

    setting.Wsp_przeplywu                   - ile impulsów na jeden litr z przepływomierza [imp/l]

    setting.reset.woda_zuzycie              - resetuje licznik zużycia wody

    setting.reset.alert.przeciek            - resetuje alarm "alert.przeciek"

    setting.reset.alert.historyczne_zalane_zloze - resetuje alarm "alert.historyczne_zalane_zloze"

    setting.alert.woda_przeciek_max         - maksymalna dopuszczalna wartość licznika "counter.woda_przeciek", powyżej aktywowany jest alarm "counter.alert.przeciek" [l]

    counter.logic.delay                     - licznik czas zwłoki działania logiki. [s]

    counter.aktualnySezon                   - aktualny sezon:
                                              0 - przejściowy
                                              1 - lato
                                              2 - upał
                                              3 - zima
                                              4 - mróz

    counter.aktualnyTryb                   - aktualny tryb:
                                              0 - brak pracy
                                              1 - lato (cykl główny)
                                              2 - regeneracja lato
                                              3 - zraszanie lato
                                              4 - zima (cykl główny)
                                              5 - regeneracja zima
                                              6 - zraszanie zima
                                              7 - odmrażanie
                                              8 - pauza po odmrażaniu

    counter.demand.t_kryt                   - wymagana temperatura nawiewu od której uruchomiamy regenerację - właściwy dla lato/upał/zima/mróz [min]

    counter.demand.okres_nawiewu            - wymagany czas nawiewu (bez zraszania) - właściwy dla lato/upał/zima/mróz [min]

    counter.demand.zraszanie                - wymagana ilość wody do zraszania [l] - właściwy dla lato/upał/zima/mróz [min]

    counter.demand.regeneracja              - wymagana ilość wody do regeneracji [l] - właściwy dla lato/upał/zima/mróz [min]

    counter.regeneracja_dodatek             - dodatkowa ilość wody dla regeneracji złoża (na podstawie temp. zewnętrznej) [l]

    counter.czas_nawiewu                    - czas, który upłynął od rozpoczęcia nawiewu [min]

    counter.czas_zawor                      - czas, który upłynął od włączenie elektrozaworu [min]

    counter.woda_przeplyw_l                 - pomiar przepływu wody litry=impulsy / wsp. przepływu

    counter.woda_cykl_zuzycie_imp           - licznik zużycia wody w aktualnym cyklu (jeżeli zakończono cykl to w ostatnim cyklu) [impulsy]

    counter.woda_cykl_zuzycie_l             - licznik zużycia wody w aktualnym cyklu (jeżeli zakończono cykl to w ostatnim cyklu) [l]

    counter.woda_zuzycie_imp                - licznik zużycia wody (sumarycznie) [impulsy]

    counter.woda_zuzycie_l                  - licznik zużycia wody (sumarycznie) [l]

    counter.woda_przeciek_imp               - licznik zużycia wody od ostatniego zamknięcia zaworu (wartość zerowana przy otwartym zaworze) [impulsy]

    counter.woda_przeciek_l                 - licznik zużycia wody od ostatniego zamknięcia zaworu (wartość zerowana przy otwartym zaworze) [l]

    counter.t.water                         - temperatura wody (uaktualniana tylko podczas przepływu wody)

    counter.kontrola_naw                    - czy ma być realizowana kontrola nawiewu w bieżącym cyklu [0..1]

    counter.kontrola_zlo                    - czy ma być realizowana kontrola złoża w bieżącym cyklu [0..1]

    counter.Pauza_zima                      - licznik: pauza po odmrażaniu przed włączeniem nawiewu [min]

    counter.alert.brak_wody                 - alarm aktywowany jeżeli po otwarciu zaworu przez "setting.CzasMAX" nie osiągnięto założonych parametrów
                                              "Za mały przepływ wody! Przez czas [counter.czas_zawor] minut przepłynęło tylko [counter.woda_cykl_zuzycie_l] litrów wody. Sprawdź pompę i zasilanie wody."

    counter.alert.przeciek                  - alarm "Nieszczelny zawór! Mimo zamkniętego zaworu przepłynęło [przeciek] litrów wody. Sprawdź działanie elektrozaworu."

    counter.alert.brak_regeneracji_nawiew   - alarm aktywowany jeżeli "counter.woda_cykl_zuzycie_l" jest większy niż "counter.demand.regeneracja"
                                              oraz "input.t.vent.supply.value" nie osiągnęła wartości "setting.t_kryt"
                                              Komunikat: "Słaba regeneracja złoża. Pomimo zroszenia złoża [counter.woda_cykl_zuzycie_l] litrami wody,
                                              temperatura nawiewu [input.t.vent.supply.value] *C  nie osiągnęła wymaganej [setting.t_kryt] *C."

    counter.alert.odmrazanie_zloza          - alarm nieudanego odmrażania złoża
                                              Komunikat: "Bardzo słaba regeneracja złoża. Pomimo zroszenia złoża [counter.woda_cykl_zuzycie_l] litrami wody,
                                              temperatura złoża GWC [input.t.ghe.inner.value] *C jest poniżej minimalnej [setting.T_zamarzaGWC] *C".

    counter.alert.zalane_zloze              - alarm "input.water.level" == 1: "Złoże GWC jest zalane wodą. Zbyt wolne wsiąkanie wody w grunt." (przerwanie pracy)

    counter.alert.historyczne_zalane_zloze  - wystąpił w przeszłości alarm "counter.alert.zalane_zloz".: "Złoże GWC było przez chwilę zalane wodą. Zbyt wolne wsiąkanie wody w grunt."


    Logic uses lua language to implement own behaviour

    ======================
    mandatory variables
    ======================

    Logic expects following mandatory variables:

    reload.trigger                          - causes reloading lua script

    memcnt                                  - current amount of memory used by lua in bytes

    Logic expects following kv settings:

    LuaScriptPath                           - path to the lua script - must be absolute

    ======================
    ChangeLog
    ======================

    2024-05-11 ver 1.0.0

    # First release

   -->

  <!-- Type and Version must be the same as Logic::TYPE and Logic::VERSION in Logic.cpp -->
  <Logic Type="Lua" SubType="GHE03" Version="1.0.10.1421" SubVersion="1.0.0.0">

    <Declaration>

      <GlobalDeclSection>

      </GlobalDeclSection>

      <InstanceDeclSection>

        <!-- mandatory variables -->

        <Var Name="reload.trigger" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input" Min="0" Max="1"
          Default="0" IsStorable="false"/>

        <Var Name="memcnt" Type="T_LONGLONG"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output" Min="0"
          Default="0" IsStorable="false"/>

        <!-- sublogic specific variables -->

        <Var Name="input.t.outdoor.value" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input"
          Default="0" IsStorable="false"/>

        <Var Name="input.t.outdoor.value.mode" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input"
          Default="0" IsStorable="false"/>

        <Var Name="input.t.outdoor.err" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input" Min="0"  Max="8"
          Default="8" IsStorable="false"/>

        <Var Name="input.t.vent.supply.value" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input"
          Default="0" IsStorable="false"/>

        <Var Name="input.t.vent.supply.value.mode" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input"
          Default="0" IsStorable="false"/>

        <Var Name="input.t.vent.supply.err" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input" Min="0"  Max="8"
          Default="8" IsStorable="false"/>

        <Var Name="input.t.ghe.inner.value" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input"
          Default="0" IsStorable="false"/>

        <Var Name="input.t.ghe.inner.value.mode" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input"
          Default="0" IsStorable="false"/>

        <Var Name="input.t.ghe.inner.err" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input" Min="0"  Max="8"
          Default="8" IsStorable="false"/>

        <Var Name="input.t.water.value" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input"
          Default="0" IsStorable="false"/>

        <Var Name="input.t.water.value.mode" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input"
          Default="0" IsStorable="false"/>

        <Var Name="input.t.water.err" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input" Min="0"  Max="8"
          Default="8" IsStorable="false"/>

        <Var Name="input.water.level" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input" Min="0" Max="1" Default="0"
          IsStorable="false"/>

        <Var Name="input.water.level.mode" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input" Min="0" Max="1" Default="0"
          IsStorable="false"/>

        <Var Name="input.water.pulse" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input" Min="0" Default="0"
          IsStorable="false"/>

        <Var Name="input.output.water.valve.mode" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Input" Min="0" Max="1" Default="0"
          IsStorable="false"/>

        <Var Name="input.output.signal.vent.disable.mode" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Input" Min="0" Max="1" Default="0"
          IsStorable="false"/>

        <Var Name="output.water.valve" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output" Min="0" Max="1" Default="0"
          IsStorable="false"/>

        <Var Name="output.signal.vent.disable" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output" Min="0" Max="1" Default="0"
          IsStorable="false"/>

        <Var Name="setting.logic.delay" Type="T_INT" 
          CanLocalRead="true" CanLocalWrite="true" 
          CanExternRead="true" CanExternWrite="true" 
          Direction="Input" 
          Min="1" Default="60" IsStorable="true"/>

        <Var Name="setting.kontrola_naw" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="0" Max="1" Default="1" IsStorable="true"/>

        <Var Name="setting.kontrola_zlo" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="0" Max="1" Default="1" IsStorable="true"/>

        <Var Name="setting.T_lato" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="-300" Max="400" Default="220" IsStorable="true"/>

        <Var Name="setting.T_nawiew_lato" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="-300" Max="400" Default="160" IsStorable="true"/>

        <Var Name="setting.Nawiew_lato" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="60" IsStorable="true"/>

        <Var Name="setting.Zraszanie_lato" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="50" IsStorable="true"/>

        <Var Name="setting.Regeneracja_lato" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="600" IsStorable="true"/>

        <Var Name="setting.T_upal" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="-300" Max="400" Default="280" IsStorable="true"/>

        <Var Name="setting.T_nawiew_upal" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="-300" Max="400" Default="120" IsStorable="true"/>

        <Var Name="setting.Nawiew_upal" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="60" IsStorable="true"/>

        <Var Name="setting.Zraszanie_upal" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="50" IsStorable="true"/>

        <Var Name="setting.Regeneracja_upal" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="600" IsStorable="true"/>

        <Var Name="setting.T_zima" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="-300" Max="400" Default="40" IsStorable="true"/>

        <Var Name="setting.T_nawiew_zima" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="-300" Max="400" Default="60" IsStorable="true"/>

        <Var Name="setting.Nawiew_zima" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="30" IsStorable="true"/>

        <Var Name="setting.Zraszanie_zima" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="50" IsStorable="true"/>

        <Var Name="setting.Regeneracja_zima" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="600" IsStorable="true"/>

        <Var Name="setting.T_mroz" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="-300" Max="400" Default="-20" IsStorable="true"/>

        <Var Name="setting.T_nawiew_mroz" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="-300" Max="400" Default="80" IsStorable="true"/>

        <Var Name="setting.Nawiew_mroz" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="30" IsStorable="true"/>

        <Var Name="setting.Zraszanie_mroz" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="50" IsStorable="true"/>

        <Var Name="setting.Regeneracja_mroz" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="600" IsStorable="true"/>

        <Var Name="setting.Histereza_mroz" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="20" IsStorable="true"/>

        <Var Name="setting.T_zamarzaGWC" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="-400" Default="10" IsStorable="true"/>

        <Var Name="setting.Pauza_zima" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="0" Default="5" IsStorable="true"/>

        <Var Name="setting.CzasMAX" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="0" Default="60" IsStorable="true"/>

        <Var Name="setting.Wsp_przeplywu" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="500" IsStorable="true"/>

        <Var Name="setting.reset.woda_zuzycie" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="0" Max="1" Default="0" IsStorable="false"/>

        <Var Name="setting.reset.alert.przeciek" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="0" Max="1" Default="0" IsStorable="false"/>

        <Var Name="setting.reset.alert.historyczne_zalane_zloze" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="0" Max="1" Default="0" IsStorable="false"/>

        <Var Name="setting.alert.woda_przeciek_max" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true" Direction="Input"
          Min="1" Default="10" IsStorable="true"/>

        <Var Name="counter.logic.delay" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output" Min="0" 
          Default="0" IsStorable="false"/>

        <Var Name="counter.aktualnySezon" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output" Min="0" Max="4"
          Default="0" IsStorable="false"/>

        <Var Name="counter.aktualnyTryb" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output" Min="0"
          Default="0" IsStorable="false"/>

        <Var Name="counter.demand.t_kryt" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.demand.okres_nawiewu" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.demand.zraszanie" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.demand.regeneracja" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.regeneracja_dodatek" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.czas_nawiewu" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.czas_zawor" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.woda_przeplyw_l" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.woda_cykl_zuzycie_imp" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.woda_cykl_zuzycie_l" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.woda_zuzycie_imp" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="true"/>

        <Var Name="counter.woda_zuzycie_l" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.woda_przeciek_l" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.woda_przeciek_imp" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.t.water" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.kontrola_naw" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.kontrola_zlo" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.Pauza_zima" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.alert.brak_wody" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.alert.przeciek" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.alert.brak_regeneracji_nawiew" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.alert.odmrazanie_zloza" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.alert.zalane_zloze" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Output"
          Default="0" IsStorable="false"/>

        <Var Name="counter.alert.historyczne_zalane_zloze" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Output"
          Default="0" IsStorable="false"/>
          
        <Settings>
          <KVSettings>
            <!-- pointing source list -->
            <KVSetting Key="LuaScriptPath" Value="logic/scripts/GHE03.lua"/>
          </KVSettings>
        </Settings>

      </InstanceDeclSection>

    </Declaration>

    <Initialization>

      <GlobalInitSection>
      </GlobalInitSection>

      <Instances>

        <Instance Name="0">
          <InstanceInitSection>
            <VarAssign Name="input.t.outdoor.value"                  Value="0"       SrcVar="MapperTemp.outdoor.output.t.value"/>
            <VarAssign Name="input.t.outdoor.value.mode"             Value="0"       SrcVar="MapperTemp.outdoor.setting.t.value.mode"/>
            <VarAssign Name="input.t.outdoor.err"                    Value="8"       SrcVar="MapperTemp.outdoor.output.t.err"/>

            <VarAssign Name="input.t.vent.supply.value"              Value="0"       SrcVar="MapperTemp.ghe.1.vent.supply.output.t.value"/>
            <VarAssign Name="input.t.vent.supply.value.mode"         Value="0"       SrcVar="MapperTemp.ghe.1.vent.supply.setting.t.value.mode"/>
            <VarAssign Name="input.t.vent.supply.err"                Value="8"       SrcVar="MapperTemp.ghe.1.vent.supply.output.t.err"/>

            <VarAssign Name="input.t.ghe.inner.value"                Value="0"       SrcVar="MapperTemp.ghe.1.inner.output.t.value"/>
            <VarAssign Name="input.t.ghe.inner.value.mode"           Value="0"       SrcVar="MapperTemp.ghe.1.inner.setting.t.value.mode"/>
            <VarAssign Name="input.t.ghe.inner.err"                  Value="8"       SrcVar="MapperTemp.ghe.1.inner.output.t.err"/>

            <VarAssign Name="input.t.water.value"                    Value="0"       SrcVar="MapperTemp.water.output.t.value"/>
            <VarAssign Name="input.t.water.value.mode"               Value="0"       SrcVar="MapperTemp.water.setting.t.value.mode"/>
            <VarAssign Name="input.t.water.err"                      Value="8"       SrcVar="MapperTemp.water.output.t.err"/>

            <VarAssign Name="input.water.level"                      Value="0"       SrcVar="MapperIO.di.water.level.output.value"/>
            <VarAssign Name="input.water.level.mode"                 Value="0"       SrcVar="MapperIO.di.water.level.setting.mode"/>

            <VarAssign Name="input.water.pulse"                      Value="0"       SrcVar="MapperIO.ai.water.pulse.output.value"/>
            
            <VarAssign Name="input.output.water.valve.mode"          Value="0"       SrcVar="MapperIO.do.water.valve.setting.mode"/>
            <VarAssign Name="input.output.signal.vent.disable.mode"  Value="0"       SrcVar="MapperIO.do.signal.vent.disable.setting.mode"/>

          </InstanceInitSection>
        </Instance>


      </Instances>

    </Initialization>

  </Logic>

</Config>
