<?xml version="1.0" encoding="utf-8"?>
<Templates format="2" protocolVersion="83">
  <Template id="a3f2e1d0-9b8c-4a7f-b6e5-d4c3b2a19087" revision="1.0">
    <Name>MSpa Mono Eco</Name>
    <CcuModel>PacketParserCCU</CcuModel>
    <Producer>MSpa</Producer>
    <Model>F_MO062WE</Model>
    <Description>MSpa Mono Eco vírivý bazén — cloudové ovládanie cez MSpa App API (HTTPS).</Description>
    <Category>5</Category>
    <ImportParameters>
      <Parameter>
        <Id>Email</Id>
        <Name>Email (MSpa účet)</Name>
        <Value/>
      </Parameter>
      <Parameter>
        <Id>PasswordMd5</Id>
        <Name>Heslo MD5 (MSpa)</Name>
        <Value/>
      </Parameter>
      <Parameter>
        <Id>DeviceId</Id>
        <Name>Device ID</Name>
        <Value/>
      </Parameter>
      <Parameter>
        <Id>ProductId</Id>
        <Name>Product ID</Name>
        <Value/>
      </Parameter>
    </ImportParameters>
    <Module>
      <Name>MSpa Mono Eco</Name>
      <Id>-1</Id>
      <Model>PacketParserModuleHttp</Model>
      <DeviceProperties>
        <IpAddress>api.iot.the-mspa.com</IpAddress>
        <Port>443</Port>
        <UseHttps>True</UseHttps>
        <HttpAuthentification>0</HttpAuthentification>
        <InternalPollInterval>60000</InternalPollInterval>
        <CustomVariables>[{&quot;Name&quot;:&quot;Email&quot;,&quot;ValueTypeId&quot;:2,&quot;StringValue&quot;:&quot;&quot;},{&quot;Name&quot;:&quot;PasswordMd5&quot;,&quot;ValueTypeId&quot;:2,&quot;StringValue&quot;:&quot;&quot;},{&quot;Name&quot;:&quot;DeviceId&quot;,&quot;ValueTypeId&quot;:2,&quot;StringValue&quot;:&quot;&quot;},{&quot;Name&quot;:&quot;ProductId&quot;,&quot;ValueTypeId&quot;:2,&quot;StringValue&quot;:&quot;&quot;},{&quot;Name&quot;:&quot;Token&quot;,&quot;ValueTypeId&quot;:2,&quot;StringValue&quot;:&quot;&quot;},{&quot;Name&quot;:&quot;status&quot;,&quot;ValueTypeId&quot;:2,&quot;StringValue&quot;:&quot;&quot;},{&quot;Name&quot;:&quot;HeatRate&quot;,&quot;ValueTypeId&quot;:1,&quot;NumericValue&quot;:1.8},{&quot;Name&quot;:&quot;PumpW&quot;,&quot;ValueTypeId&quot;:1,&quot;NumericValue&quot;:60},{&quot;Name&quot;:&quot;BubbleW&quot;,&quot;ValueTypeId&quot;:1,&quot;NumericValue&quot;:900},{&quot;Name&quot;:&quot;HeaterPreheatW&quot;,&quot;ValueTypeId&quot;:1,&quot;NumericValue&quot;:1500},{&quot;Name&quot;:&quot;HeaterHeatW&quot;,&quot;ValueTypeId&quot;:1,&quot;NumericValue&quot;:2000},{&quot;Name&quot;:&quot;kWhTotal&quot;,&quot;ValueTypeId&quot;:1,&quot;NumericValue&quot;:0}]</CustomVariables>
        <ReadScriptPacketParser/>
        <ServiceAttributesScriptsPacketParser>[{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Chybový kód&quot;},&quot;ReadFormula&quot;:&quot;PARSEJSON(status, \&quot;$.data.fault\&quot;, true)&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Stav ohrevu&quot;},&quot;ReadFormula&quot;:&quot;PARSEJSON(status, \&quot;$.data.heat_state\&quot;, true)&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Zostatok filtra&quot;},&quot;ReadFormula&quot;:&quot;PARSEJSON(status, \&quot;$.data.filter_life\&quot;, true)&quot;},{&quot;AttributeDefinition&quot;:{&quot;Name&quot;:&quot;Využitie filtra&quot;},&quot;ReadFormula&quot;:&quot;PARSEJSON(status, \&quot;$.data.filter_current\&quot;, true)&quot;}]</ServiceAttributesScriptsPacketParser>
      </DeviceProperties>
      <Devices>
        <Device>
          <Name>Teplota vody</Name>
          <Id>-2</Id>
          <Model>PacketParserThermostat</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>60000</InternalPollInterval>
            <MinTemperature>20</MinTemperature>
            <MaxTemperature>40</MaxTemperature>
            <IconId>31</IconId>
            <ReadCurrentTemperatureScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.water_temperature&quot;, true) / 2);</ReadCurrentTemperatureScriptPacketParser>
            <ReadTemperatureSetPointScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.temperature_setting&quot;, true) / 2);</ReadTemperatureSetPointScriptPacketParser>
            <WriteTemperatureSetPointScriptPacketParser>VAR raw := ROUND(Se * 2);
VAR body := &quot;{\&quot;device_id\&quot;:\&quot;&quot; + DeviceId + &quot;\&quot;,\&quot;product_id\&quot;:\&quot;&quot; + ProductId + &quot;\&quot;,\&quot;desired\&quot;:\&quot;{\\\&quot;state\\\&quot;:{\\\&quot;desired\\\&quot;:{\\\&quot;temperature_setting\\\&quot;:&quot; + raw + &quot;}}}\&quot;}&quot;;
VAR r := SENDHTTPREQUEST(&quot;/api/device/command&quot;, &quot;POST&quot;, body, &quot;push_type:Android&quot;, &quot;appid:e1c8e068f9ca11eba4dc0242ac120002&quot;, &quot;nonce:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6&quot;, &quot;ts:1789995194&quot;, &quot;sign:FA1BBED849DB468E4FCA74D814A96E6F&quot;, &quot;lan_code:EN&quot;, &quot;content-type:application/json; charset=UTF-8&quot;, &quot;authorization:token &quot; + Token);</WriteTemperatureSetPointScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Ohrev</Name>
          <Id>-3</Id>
          <Model>PacketParserSwitch</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>60000</InternalPollInterval>
            <OnStateIconId>358</OnStateIconId>
            <OffStateIconId>359</OffStateIconId>
            <OnStateName>${general_on}</OnStateName>
            <OffStateName>${general_off}</OffStateName>
            <ReadSwitchStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.heater_state&quot;, true));</ReadSwitchStateScriptPacketParser>
            <WriteSwitchStateScriptPacketParser>VAR d := SWITCH(St, 1, &quot;\\\&quot;heater_state\\\&quot;:1,\\\&quot;filter_state\\\&quot;:1&quot;, &quot;\\\&quot;heater_state\\\&quot;:0&quot;);
VAR body := &quot;{\&quot;device_id\&quot;:\&quot;&quot; + DeviceId + &quot;\&quot;,\&quot;product_id\&quot;:\&quot;&quot; + ProductId + &quot;\&quot;,\&quot;desired\&quot;:\&quot;{\\\&quot;state\\\&quot;:{\\\&quot;desired\\\&quot;:{&quot; + d + &quot;}}}\&quot;}&quot;;
VAR r := SENDHTTPREQUEST(&quot;/api/device/command&quot;, &quot;POST&quot;, body, &quot;push_type:Android&quot;, &quot;appid:e1c8e068f9ca11eba4dc0242ac120002&quot;, &quot;nonce:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6&quot;, &quot;ts:1789995194&quot;, &quot;sign:FA1BBED849DB468E4FCA74D814A96E6F&quot;, &quot;lan_code:EN&quot;, &quot;content-type:application/json; charset=UTF-8&quot;, &quot;authorization:token &quot; + Token);</WriteSwitchStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Filtrácia</Name>
          <Id>-4</Id>
          <Model>PacketParserSwitch</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>60000</InternalPollInterval>
            <OnStateIconId>72</OnStateIconId>
            <OffStateIconId>73</OffStateIconId>
            <OnStateName>${general_on}</OnStateName>
            <OffStateName>${general_off}</OffStateName>
            <ReadSwitchStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.filter_state&quot;, true));</ReadSwitchStateScriptPacketParser>
            <WriteSwitchStateScriptPacketParser>VAR d := SWITCH(St, 0, &quot;\\\&quot;filter_state\\\&quot;:0,\\\&quot;heater_state\\\&quot;:0&quot;, &quot;\\\&quot;filter_state\\\&quot;:1&quot;);
VAR body := &quot;{\&quot;device_id\&quot;:\&quot;&quot; + DeviceId + &quot;\&quot;,\&quot;product_id\&quot;:\&quot;&quot; + ProductId + &quot;\&quot;,\&quot;desired\&quot;:\&quot;{\\\&quot;state\\\&quot;:{\\\&quot;desired\\\&quot;:{&quot; + d + &quot;}}}\&quot;}&quot;;
VAR r := SENDHTTPREQUEST(&quot;/api/device/command&quot;, &quot;POST&quot;, body, &quot;push_type:Android&quot;, &quot;appid:e1c8e068f9ca11eba4dc0242ac120002&quot;, &quot;nonce:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6&quot;, &quot;ts:1789995194&quot;, &quot;sign:FA1BBED849DB468E4FCA74D814A96E6F&quot;, &quot;lan_code:EN&quot;, &quot;content-type:application/json; charset=UTF-8&quot;, &quot;authorization:token &quot; + Token);</WriteSwitchStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Bubliny</Name>
          <Id>-5</Id>
          <Model>PacketParserMultiValueSwitch</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>60000</InternalPollInterval>
            <OffStateValue>0</OffStateValue>
            <ReadSwitchStateScriptPacketParser>VAR bs := PARSEJSON(status, &quot;$.data.bubble_state&quot;, true);
IF (bs = 0)
RETURN(0);
END
RETURN(PARSEJSON(status, &quot;$.data.bubble_level&quot;, true));</ReadSwitchStateScriptPacketParser>
            <WriteSwitchStateScriptPacketParser>VAR d := SWITCH(Mu, 0, &quot;\\\&quot;bubble_state\\\&quot;:0&quot;, 1, &quot;\\\&quot;bubble_state\\\&quot;:1,\\\&quot;bubble_level\\\&quot;:1&quot;, 2, &quot;\\\&quot;bubble_state\\\&quot;:1,\\\&quot;bubble_level\\\&quot;:2&quot;, &quot;\\\&quot;bubble_state\\\&quot;:1,\\\&quot;bubble_level\\\&quot;:3&quot;);
VAR body := &quot;{\&quot;device_id\&quot;:\&quot;&quot; + DeviceId + &quot;\&quot;,\&quot;product_id\&quot;:\&quot;&quot; + ProductId + &quot;\&quot;,\&quot;desired\&quot;:\&quot;{\\\&quot;state\\\&quot;:{\\\&quot;desired\\\&quot;:{&quot; + d + &quot;}}}\&quot;}&quot;;
VAR r := SENDHTTPREQUEST(&quot;/api/device/command&quot;, &quot;POST&quot;, body, &quot;push_type:Android&quot;, &quot;appid:e1c8e068f9ca11eba4dc0242ac120002&quot;, &quot;nonce:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6&quot;, &quot;ts:1789995194&quot;, &quot;sign:FA1BBED849DB468E4FCA74D814A96E6F&quot;, &quot;lan_code:EN&quot;, &quot;content-type:application/json; charset=UTF-8&quot;, &quot;authorization:token &quot; + Token);</WriteSwitchStateScriptPacketParser>
            <Value0>0</Value0>
            <Value0Index>0</Value0Index>
            <Value0Name>Vypnuté</Value0Name>
            <Value0IconId>65</Value0IconId>
            <Value1>1</Value1>
            <Value1Index>1</Value1Index>
            <Value1Name>Nízka</Value1Name>
            <Value1IconId>25</Value1IconId>
            <Value2>2</Value2>
            <Value2Index>2</Value2Index>
            <Value2Name>Stredná</Value2Name>
            <Value2IconId>26</Value2IconId>
            <Value3>3</Value3>
            <Value3Index>3</Value3Index>
            <Value3Name>Vysoká</Value3Name>
            <Value3IconId>27</Value3IconId>
            <Value4>4</Value4>
            <Value4Index>4</Value4Index>
            <Value4Name>4</Value4Name>
            <Value4IconId>0</Value4IconId>
            <Value5>5</Value5>
            <Value5Index>5</Value5Index>
            <Value5Name>5</Value5Name>
            <Value5IconId>0</Value5IconId>
            <Value6>6</Value6>
            <Value6Index>6</Value6Index>
            <Value6Name>6</Value6Name>
            <Value6IconId>0</Value6IconId>
            <Value7>7</Value7>
            <Value7Index>7</Value7Index>
            <Value7Name>7</Value7Name>
            <Value7IconId>0</Value7IconId>
            <Value8>8</Value8>
            <Value8Index>8</Value8Index>
            <Value8Name>8</Value8Name>
            <Value8IconId>0</Value8IconId>
            <Value9>9</Value9>
            <Value9Index>9</Value9Index>
            <Value9Name>9</Value9Name>
            <Value9IconId>0</Value9IconId>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Jet trysky</Name>
          <Id>-6</Id>
          <Model>PacketParserSwitch</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>60000</InternalPollInterval>
            <OnStateIconId>62</OnStateIconId>
            <OffStateIconId>63</OffStateIconId>
            <OnStateName>${general_on}</OnStateName>
            <OffStateName>${general_off}</OffStateName>
            <ReadSwitchStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.jet_state&quot;, true));</ReadSwitchStateScriptPacketParser>
            <WriteSwitchStateScriptPacketParser>VAR body := &quot;{\&quot;device_id\&quot;:\&quot;&quot; + DeviceId + &quot;\&quot;,\&quot;product_id\&quot;:\&quot;&quot; + ProductId + &quot;\&quot;,\&quot;desired\&quot;:\&quot;{\\\&quot;state\\\&quot;:{\\\&quot;desired\\\&quot;:{\\\&quot;jet_state\\\&quot;:&quot; + St + &quot;}}}\&quot;}&quot;;
VAR r := SENDHTTPREQUEST(&quot;/api/device/command&quot;, &quot;POST&quot;, body, &quot;push_type:Android&quot;, &quot;appid:e1c8e068f9ca11eba4dc0242ac120002&quot;, &quot;nonce:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6&quot;, &quot;ts:1789995194&quot;, &quot;sign:FA1BBED849DB468E4FCA74D814A96E6F&quot;, &quot;lan_code:EN&quot;, &quot;content-type:application/json; charset=UTF-8&quot;, &quot;authorization:token &quot; + Token);</WriteSwitchStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>UVC sterilizácia</Name>
          <Id>-7</Id>
          <Model>PacketParserSwitch</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>60000</InternalPollInterval>
            <OnStateIconId>105</OnStateIconId>
            <OffStateIconId>106</OffStateIconId>
            <OnStateName>${general_on}</OnStateName>
            <OffStateName>${general_off}</OffStateName>
            <ReadSwitchStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.uvc_state&quot;, true));</ReadSwitchStateScriptPacketParser>
            <WriteSwitchStateScriptPacketParser>VAR body := &quot;{\&quot;device_id\&quot;:\&quot;&quot; + DeviceId + &quot;\&quot;,\&quot;product_id\&quot;:\&quot;&quot; + ProductId + &quot;\&quot;,\&quot;desired\&quot;:\&quot;{\\\&quot;state\\\&quot;:{\\\&quot;desired\\\&quot;:{\\\&quot;uvc_state\\\&quot;:&quot; + St + &quot;}}}\&quot;}&quot;;
VAR r := SENDHTTPREQUEST(&quot;/api/device/command&quot;, &quot;POST&quot;, body, &quot;push_type:Android&quot;, &quot;appid:e1c8e068f9ca11eba4dc0242ac120002&quot;, &quot;nonce:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6&quot;, &quot;ts:1789995194&quot;, &quot;sign:FA1BBED849DB468E4FCA74D814A96E6F&quot;, &quot;lan_code:EN&quot;, &quot;content-type:application/json; charset=UTF-8&quot;, &quot;authorization:token &quot; + Token);</WriteSwitchStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Snímač teploty vody</Name>
          <Id>-8</Id>
          <Model>PacketParserTemperatureSensor</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <IsReadOnly>True</IsReadOnly>
            <InternalPollInterval>60000</InternalPollInterval>
            <ReadTemperatureScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.water_temperature&quot;, true) / 2);</ReadTemperatureScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Vykúrené o</Name>
          <Id>-9</Id>
          <Model>PacketParserVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <IsReadOnly>True</IsReadOnly>
            <Unit>min</Unit>
            <Decimals>0</Decimals>
            <InternalPollInterval>60000</InternalPollInterval>
            <IconId>51</IconId>
            <ReadStateScriptPacketParser>VAR heater := PARSEJSON(status, &quot;$.data.heater_state&quot;, true);
VAR setpoint := PARSEJSON(status, &quot;$.data.temperature_setting&quot;, true) / 2;
VAR actual := PARSEJSON(status, &quot;$.data.water_temperature&quot;, true) / 2;
VAR perhour := PARSEJSON(status, &quot;$.data.device_heat_perhour&quot;, true);
VAR rate := SWITCH(perhour &gt; 0, 1, perhour / 10, HeatRate);
VAR go := SWITCH(heater = 1 AND setpoint &gt; actual, 1, 1, 0);
VAR fin := DATETIMEADD(NOW(), 0, 0, 0, 0, ROUND((setpoint - actual) / rate * 60), 0, 0);
RETURN((TODOUBLE(TOSTRING(fin, &quot;HH&quot;)) * 3600 + TODOUBLE(TOSTRING(fin, &quot;mm&quot;)) * 60) * go);</ReadStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Zostatok filtra</Name>
          <Id>-10</Id>
          <Model>PacketParserVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <IsReadOnly>True</IsReadOnly>
            <Unit>h</Unit>
            <Decimals>0</Decimals>
            <InternalPollInterval>60000</InternalPollInterval>
            <IconId>106</IconId>
            <ReadStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.filter_life&quot;, true));</ReadStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Využitie filtra</Name>
          <Id>-11</Id>
          <Model>PacketParserVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <IsReadOnly>True</IsReadOnly>
            <Unit>h</Unit>
            <Decimals>0</Decimals>
            <InternalPollInterval>60000</InternalPollInterval>
            <IconId>106</IconId>
            <ReadStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.filter_current&quot;, true));</ReadStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Detská poistka</Name>
          <Id>-12</Id>
          <Model>PacketParserReedContact</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <IsReadOnly>True</IsReadOnly>
            <InternalPollInterval>60000</InternalPollInterval>
            <OnStateName>Zamknuté</OnStateName>
            <OffStateName>Odomknuté</OffStateName>
            <OnStateIconId>39</OnStateIconId>
            <OffStateIconId>256</OffStateIconId>
            <ReadStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.safety_lock&quot;, true));</ReadStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Stav ohrevu</Name>
          <Id>-13</Id>
          <Model>PacketParserVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <IsReadOnly>True</IsReadOnly>
            <InternalPollInterval>60000</InternalPollInterval>
            <IconId>1</IconId>
            <ReadStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.heat_state&quot;, true));</ReadStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Online stav</Name>
          <Id>-14</Id>
          <Model>PacketParserReedContact</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>60000</InternalPollInterval>
            <OnStateName>Online</OnStateName>
            <OffStateName>Offline</OffStateName>
            <OnStateIconId>39</OnStateIconId>
            <OffStateIconId>256</OffStateIconId>
            <ReadStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.is_online&quot;, true));</ReadStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Príkon</Name>
          <Id>-15</Id>
          <Model>PacketParserVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <IsReadOnly>True</IsReadOnly>
            <Unit>W</Unit>
            <Decimals>0</Decimals>
            <InternalPollInterval>60000</InternalPollInterval>
            <IconId>31</IconId>
            <ReadStateScriptPacketParser>VAR p := 0;
IF (PARSEJSON(status, &quot;$.data.filter_state&quot;, true) = 1)
p := p + PumpW;
END
IF (PARSEJSON(status, &quot;$.data.bubble_state&quot;, true) = 1)
p := p + BubbleW;
END
IF (PARSEJSON(status, &quot;$.data.heater_state&quot;, true) = 1)
IF (PARSEJSON(status, &quot;$.data.heat_state&quot;, true) = 3)
p := p + HeaterHeatW;
END
IF (PARSEJSON(status, &quot;$.data.heat_state&quot;, true) = 2)
p := p + HeaterPreheatW;
END
END
RETURN(p);</ReadStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Jednotka teploty</Name>
          <Id>-16</Id>
          <Model>PacketParserSwitch</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>60000</InternalPollInterval>
            <OnStateIconId>60</OnStateIconId>
            <OffStateIconId>61</OffStateIconId>
            <OnStateName>°F</OnStateName>
            <OffStateName>°C</OffStateName>
            <ReadSwitchStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.temperature_unit&quot;, true));</ReadSwitchStateScriptPacketParser>
            <WriteSwitchStateScriptPacketParser>VAR body := &quot;{\&quot;device_id\&quot;:\&quot;&quot; + DeviceId + &quot;\&quot;,\&quot;product_id\&quot;:\&quot;&quot; + ProductId + &quot;\&quot;,\&quot;desired\&quot;:\&quot;{\\\&quot;state\\\&quot;:{\\\&quot;desired\\\&quot;:{\\\&quot;temperature_unit\\\&quot;:&quot; + St + &quot;}}}\&quot;}&quot;;
VAR r := SENDHTTPREQUEST(&quot;/api/device/command&quot;, &quot;POST&quot;, body, &quot;push_type:Android&quot;, &quot;appid:e1c8e068f9ca11eba4dc0242ac120002&quot;, &quot;nonce:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6&quot;, &quot;ts:1789995194&quot;, &quot;sign:FA1BBED849DB468E4FCA74D814A96E6F&quot;, &quot;lan_code:EN&quot;, &quot;content-type:application/json; charset=UTF-8&quot;, &quot;authorization:token &quot; + Token);</WriteSwitchStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Čas ohrevu</Name>
          <Id>-17</Id>
          <Model>PacketParserVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <IsReadOnly>True</IsReadOnly>
            <Unit>min</Unit>
            <Decimals>0</Decimals>
            <InternalPollInterval>60000</InternalPollInterval>
            <IconId>51</IconId>
            <ReadStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.heat_time&quot;, true));</ReadStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Prepínač ohrevu</Name>
          <Id>-18</Id>
          <Model>PacketParserVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <IsReadOnly>True</IsReadOnly>
            <InternalPollInterval>60000</InternalPollInterval>
            <IconId>351</IconId>
            <ReadStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.heat_time_switch&quot;, true));</ReadStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Auto-nafúknutie</Name>
          <Id>-19</Id>
          <Model>PacketParserVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <IsReadOnly>True</IsReadOnly>
            <InternalPollInterval>60000</InternalPollInterval>
            <IconId>64</IconId>
            <ReadStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.auto_inflate&quot;, true));</ReadStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Verzia firmvéru WiFi</Name>
          <Id>-20</Id>
          <Model>PacketParserVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <IsReadOnly>True</IsReadOnly>
            <InternalPollInterval>60000</InternalPollInterval>
            <IconId>248</IconId>
            <ReadStateScriptPacketParser>RETURN(PARSEJSON(status, &quot;$.data.wifivertion&quot;, true));</ReadStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Spotreba</Name>
          <Id>-21</Id>
          <Model>PacketParserVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <IsReadOnly>True</IsReadOnly>
            <Unit>kWh</Unit>
            <Decimals>2</Decimals>
            <InternalPollInterval>60000</InternalPollInterval>
            <IconId>38</IconId>
            <ReadStateScriptPacketParser>RETURN(kWhTotal);</ReadStateScriptPacketParser>
          </DeviceProperties>
        </Device>
      </Devices>
    </Module>
  </Template>
</Templates>
