﻿<?xml version="1.0" encoding="utf-8"?>
<Templates format="2" protocolVersion="76" >
  <Template revision="1.0" id="9e04a782-35cf-4ada-8356-f45ad30f8ef4">
    <SuggestedCCUParameters>
      <UseAsciiCommunication>False</UseAsciiCommunication>
      <StopBits>One</StopBits>
      <DataBits>8</DataBits>
      <Parity>Even</Parity>
      <Baudrate>9600</Baudrate>
      <DelayBetweenRequests>-1</DelayBetweenRequests>
      <ReadWriteTimeout>1000</ReadWriteTimeout>
    </SuggestedCCUParameters>
    <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>
    <RevisionHistory>
      <Revision id="1.0">Initial version</Revision>
    </RevisionHistory>
    <Name>Samsung Indoor Unit (IU) MIM B19N</Name>
    <CcuModel>ModbusRtuCCU</CcuModel>
    <Producer>Samsung</Producer>
    <Model>Indoor Unit</Model>
    <Description>Template for Samsung Indoor unit (IU) connected with MIM B19N Gateway</Description>
    <Module>
      <Name>Samsung Indoor Unit (IU) MIM B19N</Name>
      <Id>-1</Id>
      <Model>ModbusModule</Model>
      <DeviceProperties>
        <DeviceType>7001</DeviceType>
        <InternalPollInterval>30000</InternalPollInterval>
        <ReadScript>var base := 50 + IU*50;

if(MODBUSR(H, base +6, Uint16) = 1, ADDWARNING("Filter-cleaning reminder"));

var err := MODBUSR(H, base +13, Uint16);
IF(err!=0, ADDERROR(err, "Integrated indoor unit error"));</ReadScript>
        <PrefetchModeId>0</PrefetchModeId>
        <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Stav komunik\u00E1cie"},"ReadFormula":"var base := 50 \u002B IU*50;\r\n\r\nvar com := MODBUSR(H, base \u002B 0, Uint16);\r\nvar b0 := IF(getbit(com, 0) = 1, \u0022Existuje \u0022, \u0022\u0022);\r\nvar b1 := IF(getbit(com, 1) = 1, \u0022- Typ OK \u0022, \u0022\u0022);\r\nvar b2 := IF(getbit(com, 2) = 1, \u0022- Pripraven\u00E9 \u0022, \u0022\u0022);\r\nvar b3 := IF(getbit(com, 3) = 1, \u0022Chyba komunik\u00E1cie \u0022, \u0022\u0022);\r\nRETURN(b0 \u002B b1 \u002B b2 \u002B b3);"},{"AttributeDefinition":{"Name":"Remote Control Restriction"},"ReadFormula":"var base := 50 \u002B IU*50;\r\n\r\nvar r := MODBUSR(H, base \u002B14, Uint16);\r\nIF(r = 0, \u0022No restriction\u0022, \u0022Restriction \u0022 \u002B r);"},{"AttributeDefinition":{"Name":"Wind-free function"},"ReadFormula":"var base := 50 \u002B IU*50;\r\n\r\nSWITCH(MODBUSR(H, base \u002B 30, Uint16), 0, \u0022None\u0022, 9, \u0022Windfree\u0022, \u0022Ignored\u0022);"}]</ServiceAttributesFormulas>
        <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Clear Filter Alarm","NumericParameters":[],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := 50 \u002B IU*50;\r\n\r\nmodbusw(h, base \u002B 6, Uint16, 1);"}]</ServiceActionsScripts>
        <SlaveId>$[SlaveId]</SlaveId>
        <ModuleVariables>[{"Name":"IU","ValueTypeId":1,"NumericValue":0}]</ModuleVariables>
        <MaxPrefetchGroupSize>12</MaxPrefetchGroupSize>
        <IpAddress>$[IpAddress]</IpAddress>
      </DeviceProperties>
      <Devices>
        <Device>
          <Name>360 Air Flow Direction - chodba </Name>
          <Model>ModbusMultiValueSwitch</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables></CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <Value0Index>70</Value0Index>
            <Value1Index>64</Value1Index>
            <Value2Index>65</Value2Index>
            <Value3Index>66</Value3Index>
            <Value4Index>3</Value4Index>
            <Value5Index>4</Value5Index>
            <Value6Index>69</Value6Index>
            <Value7Index>71</Value7Index>
            <Value8Index>72</Value8Index>
            <Value9Index>73</Value9Index>
            <Value0Name>0</Value0Name>
            <Value1Name>Spot</Value1Name>
            <Value2Name>Mid</Value2Name>
            <Value3Name>Wide</Value3Name>
            <Value4Name>Swing</Value4Name>
            <Value5Name>Individual Control</Value5Name>
            <Value6Name>6</Value6Name>
            <Value7Name>7</Value7Name>
            <Value8Name>8</Value8Name>
            <Value9Name>9</Value9Name>
            <Value0IconId>5</Value0IconId>
            <Value1IconId>131</Value1IconId>
            <Value2IconId>134</Value2IconId>
            <Value3IconId>137</Value3IconId>
            <Value4IconId>140</Value4IconId>
            <Value5IconId>116</Value5IconId>
            <Value6IconId>11</Value6IconId>
            <Value7IconId>12</Value7IconId>
            <Value8IconId>13</Value8IconId>
            <Value9IconId>14</Value9IconId>
            <OffStateValue>-1</OffStateValue>
            <ReadSwitchState>var base := 50 + IU*50;

var reg := MODBUSR(H, base + 31, Int16);
SWITCH(reg, 106, 1, 85, 2, 64, 3, 15, 4, 5);</ReadSwitchState>
            <WriteSwitchState>var base := 50 + IU*50;

SWITCH(Mu,
4,MODBUSW(H, base +31, Uint16, 15),
                           
3,MODBUSW(H, base +31, Uint16, 64),
                           
2,MODBUSW(H, base +31, Uint16, 85),
1,MODBUSW(H, base +31, Uint16, 106),
MODBUSW(H, base +31, Uint16, 0));</WriteSwitchState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Fan Speed - chodba </Name>
          <Model>ModbusMultiValueSwitch</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables></CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <Value0Index>0</Value0Index>
            <Value1Index>1</Value1Index>
            <Value2Index>2</Value2Index>
            <Value3Index>3</Value3Index>
            <Value4Index>68</Value4Index>
            <Value5Index>69</Value5Index>
            <Value6Index>70</Value6Index>
            <Value7Index>71</Value7Index>
            <Value8Index>72</Value8Index>
            <Value9Index>73</Value9Index>
            <Value0Name>Auto</Value0Name>
            <Value1Name>Low</Value1Name>
            <Value2Name>Medium</Value2Name>
            <Value3Name>High</Value3Name>
            <Value4Name>4</Value4Name>
            <Value5Name>5</Value5Name>
            <Value6Name>6</Value6Name>
            <Value7Name>7</Value7Name>
            <Value8Name>8</Value8Name>
            <Value9Name>9</Value9Name>
            <Value0IconId>113</Value0IconId>
            <Value1IconId>21</Value1IconId>
            <Value2IconId>22</Value2IconId>
            <Value3IconId>23</Value3IconId>
            <Value4IconId>9</Value4IconId>
            <Value5IconId>10</Value5IconId>
            <Value6IconId>11</Value6IconId>
            <Value7IconId>12</Value7IconId>
            <Value8IconId>13</Value8IconId>
            <Value9IconId>14</Value9IconId>
            <OffStateValue>-1</OffStateValue>
            <ReadSwitchState>var base := 50 + IU*50;

MODBUSR(H, base +4, Uint16)</ReadSwitchState>
            <WriteSwitchState>var base := 50 + IU*50;

MODBUSW(H, base +4, Uint16, Mu)</WriteSwitchState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Mode</Name>
          <Model>ModbusMultiValueSwitch</Model>
          <Id>-4</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables></CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <Value0Index>0</Value0Index>
            <Value1Index>1</Value1Index>
            <Value2Index>2</Value2Index>
            <Value3Index>3</Value3Index>
            <Value4Index>4</Value4Index>
            <Value5Index>69</Value5Index>
            <Value6Index>70</Value6Index>
            <Value7Index>71</Value7Index>
            <Value8Index>72</Value8Index>
            <Value9Index>73</Value9Index>
            <Value0Name>Auto</Value0Name>
            <Value1Name>Cool</Value1Name>
            <Value2Name>Dry</Value2Name>
            <Value3Name>Fan</Value3Name>
            <Value4Name>Heat</Value4Name>
            <Value5Name>5</Value5Name>
            <Value6Name>6</Value6Name>
            <Value7Name>7</Value7Name>
            <Value8Name>8</Value8Name>
            <Value9Name>9</Value9Name>
            <Value0IconId>113</Value0IconId>
            <Value1IconId>2</Value1IconId>
            <Value2IconId>234</Value2IconId>
            <Value3IconId>28</Value3IconId>
            <Value4IconId>1</Value4IconId>
            <Value5IconId>10</Value5IconId>
            <Value6IconId>11</Value6IconId>
            <Value7IconId>12</Value7IconId>
            <Value8IconId>13</Value8IconId>
            <Value9IconId>14</Value9IconId>
            <OffStateValue>0</OffStateValue>
            <ReadSwitchState>var base := 50 + IU*50;

MODBUSR(H, base +3, Uint16)</ReadSwitchState>
            <WriteSwitchState>var base := 50 + IU*50;

MODBUSWNE(H, base +3, Uint16, Mu)</WriteSwitchState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Power - chodba </Name>
          <Model>ModbusSwitch</Model>
          <Id>-5</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables></CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <NegateState>False</NegateState>
            <OnStateIconId>28</OnStateIconId>
            <OffStateIconId>20</OffStateIconId>
            <OnStateName>On</OnStateName>
            <OffStateName>Off</OffStateName>
            <ReadSwitchState>var base := 50 + IU*50;

MODBUSR(H, base +2, Uint16)</ReadSwitchState>
            <WriteSwitchState>var base := 50 + IU*50;

MODBUSWNE(H, base +2, Bool, St)</WriteSwitchState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Room Temperature - chodba </Name>
          <Model>ModbusThermostat</Model>
          <Id>-6</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[]</ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables></CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <MinTemperature>-41</MinTemperature>
            <MaxTemperature>100</MaxTemperature>
            <ReadCurrentTemperature>var base := 50 + IU*50;

MODBUSR(H, base +9, Int16) / 10</ReadCurrentTemperature>
            <ReadDesiredTemperature>var base := 50 + IU*50;

MODBUSR(H, base +8, Int16) / 10</ReadDesiredTemperature>
            <WriteDesiredTemperature>var base := 50 + IU*50;

MODBUSW(H, base +8, Int16, Se * 10)</WriteDesiredTemperature>
            <ReadHumidity></ReadHumidity>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Vertical Air Flow - chodba </Name>
          <Model>ModbusSwitch</Model>
          <Id>-7</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables></CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <NegateState>False</NegateState>
            <OnStateIconId>138</OnStateIconId>
            <OffStateIconId>182</OffStateIconId>
            <OnStateName>${general_on}</OnStateName>
            <OffStateName>${general_off}</OffStateName>
            <ReadSwitchState>var base := 50 + IU*50;

MODBUSR(H, base +5, Bool)</ReadSwitchState>
            <WriteSwitchState>var base := 50 + IU*50;

MODBUSW(H, base +5, Bool, St)</WriteSwitchState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Wind Free</Name>
          <Model>ModbusSwitch</Model>
          <Id>-8</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables />
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <NegateState>False</NegateState>
            <OnStateIconId>123</OnStateIconId>
            <OffStateIconId>124</OffStateIconId>
            <OnStateName>${general_on}</OnStateName>
            <OffStateName>${general_off}</OffStateName>
            <ReadSwitchState>var base := 50 + IU*50;

MODBUSR(H, base + 30, Uint16)</ReadSwitchState>
            <WriteSwitchState>var base := 50 + IU*50;

MODBUSW(H, base + 30, Uint16, St)</WriteSwitchState>
          </DeviceProperties>
        </Device>
      </Devices>
    </Module>
  </Template>
</Templates>
