<?xml version="1.0" encoding="utf-8"?>
<Templates format="2" protocolVersion="87">
  <Template revision="1.0" id="37f6a1c4-8698-4a3d-85ee-81891b0dcb2f">
    <SuggestedCCUParameters />
    <RevisionHistory>
      <Revision id="1.0">Initial version</Revision>
    </RevisionHistory>
    <ImportParameters>
	<Parameter>
		<Name>${latitude}</Name>
		<Value>48.1778</Value>
		<Id>latitude</Id>
	</Parameter>
	<Parameter>
		<Name>${longitude}</Name>
		<Value>17.1426</Value>
		<Id>longitude</Id>
	</Parameter>
	<Parameter>
		<Name>Meteosource API key</Name>
		<Value>apiKey</Value>
		<Id>apiKey</Id>
	</Parameter>
    </ImportParameters>  	  
    <Name>Meteosource</Name>
    <CcuModel>PacketParserCCU</CcuModel>
    <Producer></Producer>
    <Model></Model>
    <Description></Description>
    <Module>
      <Name>Meteosource</Name>
      <Id>-1</Id>
      <Model>PacketParserModuleHttp</Model>
      <DeviceProperties>
        <ReadScriptPacketParser>VAR request := HTTPREQUEST(
	"/api/v1/free/point?lat=" + lat + "&amp;lon=" + lon + "&amp;sections=current,daily&amp;timezone=" + tz + "&amp;language=en&amp;units=ca&amp;key=" + apiKey,
	"GET" 
);
VAR response := SENDHTTPREQUEST(request);
VAR responseHeaders := response.Headers;
IF response.IsSuccess  
  responseJson := response.Content;
END</ReadScriptPacketParser>
        <InternalPollInterval>300000</InternalPollInterval>
        <CustomVariables>[{"Name":"responseJson","ValueTypeId":2,"NumericValue":0,"StringValue":""},{"Name":"apiKey","ValueTypeId":2,"NumericValue":0,"StringValue":"$[apiKey]"},{"Name":"lat","ValueTypeId":2,"NumericValue":0,"StringValue":"$[latitude]"},{"Name":"lon","ValueTypeId":2,"NumericValue":0,"StringValue":"$[longitude]"},{"Name":"tz","ValueTypeId":2,"NumericValue":0,"StringValue":"Europe/Prague"}]</CustomVariables>
        <ServiceAttributesScriptsPacketParser>[]</ServiceAttributesScriptsPacketParser>
        <IpAddress>www.meteosource.com</IpAddress>
        <Port>443</Port>
        <UseHttps>True</UseHttps>
      </DeviceProperties>
      <Devices>
        <Device>
          <Name>Počasie</Name>
          <Model>PacketParserMultiValueSwitch</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>6103</DeviceType>
            <ReadScriptPacketParser />
            <InternalPollInterval>1800000</InternalPollInterval>
            <CustomVariables />
            <ServiceAttributesScriptsPacketParser></ServiceAttributesScriptsPacketParser>
            <ServiceActionsScriptsPacketParser></ServiceActionsScriptsPacketParser>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <Value0Index>0</Value0Index>
            <Value1Index>1</Value1Index>
            <Value2Index>2</Value2Index>
            <Value3Index>3</Value3Index>
            <Value4Index>4</Value4Index>
            <Value5Index>5</Value5Index>
            <Value6Index>6</Value6Index>
            <Value7Index>71</Value7Index>
            <Value8Index>72</Value8Index>
            <Value9Index>73</Value9Index>
            <Value0Name>${weather_clear}</Value0Name>
            <Value1Name>${weather_clouds}</Value1Name>
            <Value2Name>${weather_rain}</Value2Name>
            <Value3Name>${weather_drizzle}</Value3Name>
            <Value4Name>${weather_thunderstorm}</Value4Name>
            <Value5Name>${weather_snow}</Value5Name>
            <Value6Name>${weather_fog}</Value6Name>
            <Value7Name></Value7Name>
            <Value8Name></Value8Name>
            <Value9Name></Value9Name>
            <Value0IconId>234</Value0IconId>
            <Value1IconId>235</Value1IconId>
            <Value2IconId>238</Value2IconId>
            <Value3IconId>236</Value3IconId>
            <Value4IconId>239</Value4IconId>
            <Value5IconId>237</Value5IconId>
            <Value6IconId>240</Value6IconId>
            <Value7IconId>0</Value7IconId>
            <Value8IconId>0</Value8IconId>
            <Value9IconId>0</Value9IconId>
            <OffStateValue>0</OffStateValue>
            <ReadSwitchStateScriptPacketParser>IF(ISNULL(responseJson) | responseJson = "error")
    return(NaN);
END 

VAR weather := PARSEJSON(responseJson, "current.icon_num");
SWITCH(weather, 
2, 0, 3, 0, 4, 0,26,0, 27,0,28,0,
5, 0, 6, 1, 7, 1, 8,1,29,1,30,1,31,1, 
	11,2,12,2,13,2,25,2,32,2,34,2,35,2,36,2,
10,3,
	16,5,17,5,18,5,19,5,20,5,21,5,22,5,23,5,24,5,
14,4,15,4,33,4,
9,6, 
1);</ReadSwitchStateScriptPacketParser>
            <WriteSwitchStateScriptPacketParser></WriteSwitchStateScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Rýchlosť vetra</Name>
          <Model>PacketParserVariable</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <SerializedValueLogTypeConversions>{"14":"{\u0022ValueLogTypeConversionTypeId\u0022:3,\u0022SerializedValueLogTypeConversion\u0022:\u0022{\\u0022Value1OnInput\\u0022:0,\\u0022Value1OnOutput\\u0022:0,\\u0022Value2OnInput\\u0022:1,\\u0022Value2OnOutput\\u0022:1,\\u0022SourceValueLogTypes\\u0022:[62],\\u0022TargetValueLogType\\u0022:14}\u0022}"}</SerializedValueLogTypeConversions>
            <ReadScriptPacketParser>IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));</ReadScriptPacketParser>
            <InternalPollInterval>60000</InternalPollInterval>
            <CustomVariables>[]</CustomVariables>
            <ServiceAttributesScriptsPacketParser></ServiceAttributesScriptsPacketParser>
            <ServiceActionsScriptsPacketParser></ServiceActionsScriptsPacketParser>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <IsReadOnly>True</IsReadOnly>
            <ReadStateScriptPacketParser>IF(
	ISNULL(responseJson) | responseJson = "error", 
	NaN,
	TODOUBLE(PARSEJSON(responseJson,
		"current.wind.speed"))
);</ReadStateScriptPacketParser>
            <WriteStateScriptPacketParser></WriteStateScriptPacketParser>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Smer vetra</Name>
          <Model>PacketParserVariable</Model>
          <Id>-4</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <SerializedValueLogTypeConversions />
            <ReadScriptPacketParser></ReadScriptPacketParser>
            <InternalPollInterval>15000</InternalPollInterval>
            <CustomVariables />
            <ServiceAttributesScriptsPacketParser></ServiceAttributesScriptsPacketParser>
            <ServiceActionsScriptsPacketParser></ServiceActionsScriptsPacketParser>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <IsReadOnly>False</IsReadOnly>
            <ReadStateScriptPacketParser>IF(
	ISNULL(responseJson) | responseJson = "error", 
	NaN,
	TODOUBLE(PARSEJSON(responseJson,
		"current.wind.angle"))
)</ReadStateScriptPacketParser>
            <WriteStateScriptPacketParser></WriteStateScriptPacketParser>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Teplota</Name>
          <Model>PacketParserTemperatureSensor</Model>
          <Id>-5</Id>
          <DeviceProperties>
            <DeviceType>3003</DeviceType>
            <ReadScriptPacketParser>IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));</ReadScriptPacketParser>
            <InternalPollInterval>60000</InternalPollInterval>
            <CustomVariables></CustomVariables>
            <ServiceAttributesScriptsPacketParser>[]</ServiceAttributesScriptsPacketParser>
            <ServiceActionsScriptsPacketParser>[]</ServiceActionsScriptsPacketParser>
            <ReadTemperatureScriptPacketParser>IF(ISNULL(responseJson) | responseJson = "error", NaN, TODOUBLE(PARSEJSON(responseJson,"current.temperature")))</ReadTemperatureScriptPacketParser>
            <ReadHumidityScriptPacketParser></ReadHumidityScriptPacketParser>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Teplota max.</Name>
          <Model>PacketParserVariable</Model>
          <Id>-6</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <SerializedValueLogTypeConversions>{"5":"{\u0022ValueLogTypeConversionTypeId\u0022:3,\u0022SerializedValueLogTypeConversion\u0022:\u0022{\\u0022Value1OnInput\\u0022:0,\\u0022Value1OnOutput\\u0022:0,\\u0022Value2OnInput\\u0022:1,\\u0022Value2OnOutput\\u0022:1,\\u0022SourceValueLogTypes\\u0022:[62],\\u0022TargetValueLogType\\u0022:5}\u0022}"}</SerializedValueLogTypeConversions>
            <ReadScriptPacketParser></ReadScriptPacketParser>
            <InternalPollInterval>60000</InternalPollInterval>
            <CustomVariables />
            <ServiceAttributesScriptsPacketParser></ServiceAttributesScriptsPacketParser>
            <ServiceActionsScriptsPacketParser></ServiceActionsScriptsPacketParser>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <IsReadOnly>True</IsReadOnly>
            <ReadStateScriptPacketParser>IF(ISNULL(responseJson) | responseJson = "error", NaN, TODOUBLE(PARSEJSON(responseJson,"daily.data[0].all_day.temperature_max")))</ReadStateScriptPacketParser>
            <WriteStateScriptPacketParser></WriteStateScriptPacketParser>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Teplota min.</Name>
          <Model>PacketParserVariable</Model>
          <Id>-7</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <SerializedValueLogTypeConversions>{"5":"{\u0022ValueLogTypeConversionTypeId\u0022:3,\u0022SerializedValueLogTypeConversion\u0022:\u0022{\\u0022Value1OnInput\\u0022:0,\\u0022Value1OnOutput\\u0022:0,\\u0022Value2OnInput\\u0022:1,\\u0022Value2OnOutput\\u0022:1,\\u0022SourceValueLogTypes\\u0022:[62],\\u0022TargetValueLogType\\u0022:5}\u0022}"}</SerializedValueLogTypeConversions>
            <ReadScriptPacketParser></ReadScriptPacketParser>
            <InternalPollInterval>60000</InternalPollInterval>
            <CustomVariables />
            <ServiceAttributesScriptsPacketParser></ServiceAttributesScriptsPacketParser>
            <ServiceActionsScriptsPacketParser></ServiceActionsScriptsPacketParser>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <IsReadOnly>True</IsReadOnly>
            <ReadStateScriptPacketParser>IF(ISNULL(responseJson) | responseJson = "error", NaN, TODOUBLE(PARSEJSON(responseJson,"daily.data[0].all_day.temperature_min")))</ReadStateScriptPacketParser>
            <WriteStateScriptPacketParser></WriteStateScriptPacketParser>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Úhrn zrážok 1-hodinový</Name>
          <Model>PacketParserVariable</Model>
          <Id>-8</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <SerializedValueLogTypeConversions>{"13":"{\u0022ValueLogTypeConversionTypeId\u0022:3,\u0022SerializedValueLogTypeConversion\u0022:\u0022{\\u0022Value1OnInput\\u0022:0,\\u0022Value1OnOutput\\u0022:0,\\u0022Value2OnInput\\u0022:1,\\u0022Value2OnOutput\\u0022:1,\\u0022SourceValueLogTypes\\u0022:[62],\\u0022TargetValueLogType\\u0022:13}\u0022}"}</SerializedValueLogTypeConversions>
            <ReadScriptPacketParser>IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));</ReadScriptPacketParser>
            <InternalPollInterval>60000</InternalPollInterval>
            <CustomVariables></CustomVariables>
            <ServiceAttributesScriptsPacketParser></ServiceAttributesScriptsPacketParser>
            <ServiceActionsScriptsPacketParser></ServiceActionsScriptsPacketParser>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <IsReadOnly>True</IsReadOnly>
            <ReadStateScriptPacketParser>IF(ISNULL(responseJson) | responseJson = "error", NaN, TODOUBLE(PARSEJSON(responseJson,"current.precipitation.total")))</ReadStateScriptPacketParser>
            <WriteStateScriptPacketParser></WriteStateScriptPacketParser>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Úhrn zrážok denný</Name>
          <Model>PacketParserVariable</Model>
          <Id>-9</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <SerializedValueLogTypeConversions>{"13":"{\u0022ValueLogTypeConversionTypeId\u0022:3,\u0022SerializedValueLogTypeConversion\u0022:\u0022{\\u0022Value1OnInput\\u0022:0,\\u0022Value1OnOutput\\u0022:0,\\u0022Value2OnInput\\u0022:1,\\u0022Value2OnOutput\\u0022:1,\\u0022SourceValueLogTypes\\u0022:[62],\\u0022TargetValueLogType\\u0022:13}\u0022}"}</SerializedValueLogTypeConversions>
            <ReadScriptPacketParser></ReadScriptPacketParser>
            <InternalPollInterval>60000</InternalPollInterval>
            <CustomVariables />
            <ServiceAttributesScriptsPacketParser></ServiceAttributesScriptsPacketParser>
            <ServiceActionsScriptsPacketParser></ServiceActionsScriptsPacketParser>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <IsReadOnly>True</IsReadOnly>
            <ReadStateScriptPacketParser>IF(ISNULL(responseJson) | responseJson = "error", NaN, TODOUBLE(PARSEJSON(responseJson,"daily.data[0].all_day.precipitation.total")))</ReadStateScriptPacketParser>
            <WriteStateScriptPacketParser></WriteStateScriptPacketParser>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
      </Devices>
    </Module>
  </Template>
</Templates>
