<?xml version="1.0" encoding="utf-8"?>
<Templates format="2" protocolVersion="90">
  <Template id="9c25973f-de41-4681-8906-bf6f7f496e03" revision="1.2">
    <SuggestedCCUParameters>
      <ReconnectDelay>0</ReconnectDelay>
      <AfterConnectDelay>0</AfterConnectDelay>
      <TcpNoDelay>False</TcpNoDelay>
      <TcpPort>502</TcpPort>
      <DelayBetweenRequests>-1</DelayBetweenRequests>
      <ReadWriteTimeout>1000</ReadWriteTimeout>
    </SuggestedCCUParameters>
    <RevisionHistory>
      <Revision id="1.0">Initial version</Revision>
      <Revision id="1.1">1.1: class A alarm as module error, class B/C and external alarm as warnings; 15 service attributes (software version, operating hours, compressor, refrigerant circuit, flow, heat curve); Reset all alarms action; hot water bottom temperature and compressor speed; setup notes; duplicate supply sensor removed. 1.0 scripts unchanged. Lab on Core 2025.2.32396 with values read from the pump: 10/10 checks passed.</Revision>
      <Revision id="1.2">1.2: setup note says that switching the BMS function from Modbus RTU to Modbus TCP/IP is in the service settings of the heat pump and needs its service password or a service technician (reported by the author). Description only; devices and scripts unchanged from 1.1.</Revision>
    </RevisionHistory>
    <Name>Thermia Athena 14HC Total</Name>
    <CcuModel>ModbusTcpCCU</CcuModel>
    <Producer>Thermia</Producer>
    <Model>Athena 14HC Total</Model>
    <Description>Thermia Athena 14HC Total heat pump (Genesis controller, Modbus protocol 17.1) over Modbus TCP. Setup: connect the RJ45 port of the display unit to the network, in the service settings switch the BMS function from Modbus RTU to Modbus TCP/IP (port 502), which needs the service password of the heat pump or a service technician; give the heat pump a fixed IP address and enter it when importing; the slave ID is not used on TCP/IP. When the module starts it enables &apos;fixed system supply set point&apos; (coil 41): the heat pump then ignores its own heat curve and uses the set point of the System supply temperature thermostat (holding 116). Supply and return line temperatures (input 8, 9) are not available on Athena Standard.</Description>
    <ImportParameters>
      <Parameter>
        <Id>SlaveId</Id>
        <Name>Slave Id</Name>
        <Value>1</Value>
      </Parameter>
      <Parameter>
        <Id>IpAddress</Id>
        <Name>IP address</Name>
        <Value>192.168.1.0</Value>
      </Parameter>
    </ImportParameters>
    <Module>
      <Name>Thermia Athena 14HC Total</Name>
      <Id>-1</Id>
      <Model>ModbusModule</Model>
      <DeviceProperties>
        <DeviceType>7001</DeviceType>
        <InternalPollInterval>2500</InternalPollInterval>
        <InitializeScript>MODBUSW(C, 41, Bool, 1)</InitializeScript>
        <ReadScript>IF(MODBUSR(D, 0, Bool), ADDERROR(&quot;Class A alarm active&quot;));
IF(MODBUSR(D, 1, Bool), ADDWARNING(&quot;Class B alarm active&quot;));
IF(MODBUSR(D, 2, Bool), ADDWARNING(&quot;Class C alarm active&quot;));
IF(MODBUSR(D, 202, Bool), ADDWARNING(&quot;External alarm input active&quot;));</ReadScript>
        <PrefetchModeId>0</PrefetchModeId>
        <ServiceAttributesFormulas>[{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Software version major&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 311, UInt16)&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Software version minor&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 312, UInt16)&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Software version build&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 313, UInt16)&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Compressor operating hours [h]&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 48, UInt16) * 65536 + MODBUSR(A, 49, UInt16)&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Hot water operating hours [h]&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 50, UInt16) * 65536 + MODBUSR(A, 51, UInt16)&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Compressor speed [rpm]&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 5, UInt16)&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Discharge pipe temperature [°C]&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 7, Int16) / 10&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Condenser in temperature [°C]&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 412, Int16) / 10&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Condenser out temperature [°C]&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 328, Int16) / 10&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Flow rate [l/min]&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 321, UInt16) / 10&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;High pressure [bar]&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 128, Int16) / 100&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Low pressure [bar]&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 127, Int16) / 100&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Superheat [K]&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 125, Int16) / 100&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Heat curve supply set point [°C]&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(A, 19, Int16) / 100&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Heating season stop temperature [°C]&quot;},&quot;ReadFormula&quot;:&quot;MODBUSR(H, 16, Int16) / 100&quot;}]</ServiceAttributesFormulas>
        <ServiceActionsScripts>[{&quot;ActionDefinition&quot;:{&quot;Name&quot;:&quot;Reset all alarms&quot;,&quot;NumericParameters&quot;:[],&quot;BoolParameters&quot;:[],&quot;EnumParameters&quot;:[]},&quot;Script&quot;:&quot;MODBUSW(C, 3, Bool, 1)&quot;}]</ServiceActionsScripts>
        <SlaveId>$[SlaveId]</SlaveId>
        <IpAddress>$[IpAddress]</IpAddress>
        <ModuleVariables>[]</ModuleVariables>
        <MaxPrefetchGroupSize>100</MaxPrefetchGroupSize>
      </DeviceProperties>
      <Devices>
        <Device>
          <Name>Alarm class A</Name>
          <Id>-2</Id>
          <Model>ModbusReedContact</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <OnStateIconId>0</OnStateIconId>
            <OffStateIconId>0</OffStateIconId>
            <OnStateName>Alarm</OnStateName>
            <OffStateName>OK</OffStateName>
            <ReadState>MODBUSR(D, 0, Bool)</ReadState>
            <NegateState>False</NegateState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Cooling active</Name>
          <Id>-3</Id>
          <Model>ModbusReedContact</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <OnStateIconId>0</OnStateIconId>
            <OffStateIconId>0</OffStateIconId>
            <OnStateName>Cooling</OnStateName>
            <OffStateName>—</OffStateName>
            <ReadState>(MODBUSR(A, 2, UInt16) &amp; 0x90) &gt; 0</ReadState>
            <NegateState>False</NegateState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Compressor running</Name>
          <Id>-4</Id>
          <Model>ModbusReedContact</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <OnStateIconId>0</OnStateIconId>
            <OffStateIconId>0</OffStateIconId>
            <OnStateName>Running</OnStateName>
            <OffStateName>Stopped</OffStateName>
            <ReadState>MODBUSR(D, 199, Bool)</ReadState>
            <NegateState>False</NegateState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Heating active</Name>
          <Id>-5</Id>
          <Model>ModbusReedContact</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <OnStateIconId>0</OnStateIconId>
            <OffStateIconId>0</OffStateIconId>
            <OnStateName>Heating</OnStateName>
            <OffStateName>—</OffStateName>
            <ReadState>GETBIT(MODBUSR(A, 2, UInt16), 3)</ReadState>
            <NegateState>False</NegateState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Defrost active</Name>
          <Id>-6</Id>
          <Model>ModbusReedContact</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <OnStateIconId>0</OnStateIconId>
            <OffStateIconId>0</OffStateIconId>
            <OnStateName>Defrosting</OnStateName>
            <OffStateName>—</OffStateName>
            <ReadState>GETBIT(MODBUSR(A, 2, UInt16), 1)</ReadState>
            <NegateState>False</NegateState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Hot water heating active</Name>
          <Id>-7</Id>
          <Model>ModbusReedContact</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <OnStateIconId>0</OnStateIconId>
            <OffStateIconId>0</OffStateIconId>
            <OnStateName>Heating</OnStateName>
            <OffStateName>—</OffStateName>
            <ReadState>GETBIT(MODBUSR(A, 2, UInt16), 2)</ReadState>
            <NegateState>False</NegateState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Cooling enable</Name>
          <Id>-8</Id>
          <Model>ModbusSwitch</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <NegateState>False</NegateState>
            <OnStateIconId>0</OnStateIconId>
            <OffStateIconId>0</OffStateIconId>
            <OnStateName>On</OnStateName>
            <OffStateName>Off</OffStateName>
            <ReadSwitchState>MODBUSR(C, 10, Bool)</ReadSwitchState>
            <WriteSwitchState>MODBUSWNE(C, 10, Bool, St)</WriteSwitchState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Heating enable</Name>
          <Id>-9</Id>
          <Model>ModbusSwitch</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <NegateState>False</NegateState>
            <OnStateIconId>0</OnStateIconId>
            <OffStateIconId>0</OffStateIconId>
            <OnStateName>On</OnStateName>
            <OffStateName>Off</OffStateName>
            <ReadSwitchState>MODBUSR(C, 9, Bool)</ReadSwitchState>
            <WriteSwitchState>MODBUSWNE(C, 9, Bool, St)</WriteSwitchState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Operating mode</Name>
          <Id>-10</Id>
          <Model>ModbusMultiValueSwitch</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <OffStateValue>-1</OffStateValue>
            <ReadSwitchState>MODBUSR(H, 0, Int16)</ReadSwitchState>
            <WriteSwitchState>MODBUSWNE(H, 0, Int16, Mu)</WriteSwitchState>
            <Value0>0</Value0>
            <Value0Index>1</Value0Index>
            <Value0Name>Off</Value0Name>
            <Value0IconId>1</Value0IconId>
            <Value1>1</Value1>
            <Value1Index>2</Value1Index>
            <Value1Name>Standby</Value1Name>
            <Value1IconId>2</Value1IconId>
            <Value2>2</Value2>
            <Value2Index>3</Value2Index>
            <Value2Name>On / Auto</Value2Name>
            <Value2IconId>3</Value2IconId>
            <Value3Index>67</Value3Index>
            <Value3Name>3</Value3Name>
            <Value3IconId>8</Value3IconId>
            <Value4Index>68</Value4Index>
            <Value4Name>4</Value4Name>
            <Value4IconId>9</Value4IconId>
            <Value5Index>69</Value5Index>
            <Value5Name>5</Value5Name>
            <Value5IconId>10</Value5IconId>
            <Value6Index>70</Value6Index>
            <Value6Name>6</Value6Name>
            <Value6IconId>11</Value6IconId>
            <Value7Index>71</Value7Index>
            <Value7Name>7</Value7Name>
            <Value7IconId>12</Value7IconId>
            <Value8Index>72</Value8Index>
            <Value8Name>8</Value8Name>
            <Value8IconId>13</Value8IconId>
            <Value9Index>73</Value9Index>
            <Value9Name>9</Value9Name>
            <Value9IconId>14</Value9IconId>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Season</Name>
          <Id>-11</Id>
          <Model>ModbusReedContact</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas/>
            <ServiceActionsScripts/>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <OnStateIconId>87</OnStateIconId>
            <OffStateIconId>88</OffStateIconId>
            <OnStateName>Heating</OnStateName>
            <OffStateName>Cooling</OffStateName>
            <ReadState>MODBUSR(D, 220, Bool)</ReadState>
            <NegateState>False</NegateState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Dew point sensor</Name>
          <Id>-12</Id>
          <Model>ModbusReedContact</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <OnStateIconId>0</OnStateIconId>
            <OffStateIconId>0</OffStateIconId>
            <OnStateName>Active</OnStateName>
            <OffStateName>OK</OffStateName>
            <ReadState>MODBUSR(A, 324, UInt16) &gt; 0</ReadState>
            <NegateState>False</NegateState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>System supply temperature</Name>
          <Id>-13</Id>
          <Model>ModbusThermostat</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <MinTemperature>10</MinTemperature>
            <MaxTemperature>55</MaxTemperature>
            <ReadCurrentTemperature>MODBUSR(A, 9, Int16) / 100</ReadCurrentTemperature>
            <ReadDesiredTemperature>MODBUSR(H, 116, Int16) / 100</ReadDesiredTemperature>
            <WriteDesiredTemperature>MODBUSWNE(H, 116, Int16, ROUND(Se * 100))</WriteDesiredTemperature>
            <ReadHumidity/>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Return temperature</Name>
          <Id>-15</Id>
          <Model>ModbusTemperatureSensor</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>15000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <ReadTemperature>MODBUSR(A, 8, Int16) / 100</ReadTemperature>
            <ReadHumidity/>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Domestic hot water</Name>
          <Id>-16</Id>
          <Model>ModbusThermostat</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <MinTemperature>30</MinTemperature>
            <MaxTemperature>65</MaxTemperature>
            <ReadCurrentTemperature>MODBUSR(A, 17, Int16) / 100</ReadCurrentTemperature>
            <ReadDesiredTemperature>MODBUSR(H, 23, Int16) / 100</ReadDesiredTemperature>
            <WriteDesiredTemperature>VAR hyst := MODBUSR(H, 23, Int16) - MODBUSR(H, 22, Int16);
MODBUSWNE(H, 23, Int16, ROUND(Se * 100));
MODBUSWNE(H, 22, Int16, ROUND(Se * 100) - hyst);</WriteDesiredTemperature>
            <ReadHumidity/>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Hot water top temperature</Name>
          <Id>-17</Id>
          <Model>ModbusTemperatureSensor</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>15000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <ReadTemperature>MODBUSR(A, 15, Int16) / 100</ReadTemperature>
            <ReadHumidity/>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Outdoor temperature</Name>
          <Id>-18</Id>
          <Model>ModbusTemperatureSensor</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>15000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <ReadTemperature>MODBUSR(A, 13, Int16) / 100</ReadTemperature>
            <ReadHumidity/>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Calculated supply setpoint</Name>
          <Id>-19</Id>
          <Model>ModbusTemperatureSensor</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>15000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <ReadTemperature>MODBUSR(A, 18, Int16) / 100</ReadTemperature>
            <ReadHumidity/>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Hot water bottom temperature</Name>
          <Id>-20</Id>
          <Model>ModbusTemperatureSensor</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>15000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <ReadTemperature>MODBUSR(A, 16, Int16) / 100</ReadTemperature>
            <ReadHumidity/>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Compressor speed [%]</Name>
          <Id>-21</Id>
          <Model>ModbusVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>15000</InternalPollInterval>
            <InitializeScript/>
            <ReadScript/>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[]</ServiceActionsScripts>
            <CustomDeviceVariables/>
            <VltEpsilons/>
            <IsReadOnly>True</IsReadOnly>
            <ReadState>MODBUSR(A, 54, UInt16) / 100</ReadState>
            <WriteState/>
          </DeviceProperties>
        </Device>
      </Devices>
    </Module>
  </Template>
</Templates>
