﻿<?xml version="1.0" encoding="utf-8"?>
<Templates format="2" protocolVersion="61">
  <Template id="99577bdd-b7fc-46e8-b80a-dc432ff80783" revision="3.0">
    <SuggestedCCUParameters>
      <TcpPort>502</TcpPort>
      <DelayBetweenRequests>-1</DelayBetweenRequests>
      <ReadWriteTimeout>1000</ReadWriteTimeout>
    </SuggestedCCUParameters>
    <ImportParameters>
      <Parameter>
        <Id>SlaveId</Id>
        <Name>${device_SlaveId}</Name>
        <Value>1</Value>
      </Parameter>
      <Parameter>
	    <Id>IpAddress</Id>
        <Name>${ipAddress}</Name>
		<Value>192.168.0.1</Value>
      </Parameter>
    </ImportParameters>
    <RevisionHistory>
      <Revision id="1.0">Initial version</Revision>
	  <Revision id="2.0">Rework</Revision>
      <Revision id="3.0">Rework + device types</Revision>
    </RevisionHistory>
    <Name>Fronius Symo</Name>
    <CcuModel>ModbusTcpCCU</CcuModel>
    <Producer>Fronius</Producer>
    <Model>Symo</Model>
	<Category>8</Category>
    <Description></Description>
    <Module>
      <Name>Fronius Symo</Name>
      <Id>-1</Id>
      <Model>ModbusModule</Model>
      <DeviceProperties>
        <DeviceType>7001</DeviceType>
        <InternalPollInterval>30000</InternalPollInterval>
        <InitializeScript>#nastavenie float
var curr := modbusr(H, 215, Uint16);
if (curr = 2)
    modbusw(H, 215, Uint16, 1);
    modbusw(H, 215, Uint16, 6);
end</InitializeScript>
        <PrefetchModeId>0</PrefetchModeId>
        <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Manufacturer"},"ReadFormula":"Modbusr(H, 40004, String, 32)"},{"AttributeDefinition":{"Name":"Device Model"},"ReadFormula":"ModbusR(H, 40020, String, 32)"},{"AttributeDefinition":{"Name":"Datamanager FW version"},"ReadFormula":"ModbusR(H, 40036, String, 16)"},{"AttributeDefinition":{"Name":"Inverter SW version"},"ReadFormula":"ModbusR(H, 40044, String, 16)"},{"AttributeDefinition":{"Name":"Serial number of the inverter"},"ReadFormula":"ModbusR(H, 40052, String, 32)"},{"AttributeDefinition":{"Name":"Phase"},"ReadFormula":"SWITCH(MODBUSR(H, 40069, Uint16), 111, \u0022Single Phase\u0022,\r\n112, \u0022Split Phase\u0022,\r\n113, \u0022Three Phase\u0022,\r\n\u0022Unreachable\u0022)"},{"AttributeDefinition":{"Name":"ECP Connection Status"},"ReadFormula":"SWITCH(ModbusR(H, 40195, Uint16), 0, \u0022Disconnected\u0022, 1, \u0022Connected\u0022, \u0022Unreachable\u0022)"},{"AttributeDefinition":{"Name":"PV Inverter Status"},"ReadFormula":"SWITCH(MODBUSR(H, 40193, Uint16), \r\n1, \u0022Connected\u0022, \r\n2, \u0022Available\u0022,\r\n3, \u0022Connected, Available\u0022,\r\n7, \u0022Connected, Available, Operating\u0022,\r\n8, \u0022Test\u0022,\r\n\u0022Not connected\u0022)"},{"AttributeDefinition":{"Name":"Continuous power output capability of the inverter [W]"},"ReadFormula":"modbusr(H, 40134, Uint16) * \r\nPOWER(10, modbusr(H, 40135, int16))"}]</ServiceAttributesFormulas>
        <ServiceActionsScripts>[]</ServiceActionsScripts>
        <SlaveId>$[SlaveId]</SlaveId>
        <IpAddress>$[IpAddress]</IpAddress>
        <MaxPrefetchGroupSize>100</MaxPrefetchGroupSize>
      </DeviceProperties>
      <Devices>
        <Device>
          <Name>Operating state</Name>
          <Model>ModbusMultiValueSwitch</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>1000</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables></CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <Value0Index>64</Value0Index>
            <Value1Index>1</Value1Index>
            <Value2Index>1</Value2Index>
            <Value3Index>2</Value3Index>
            <Value4Index>3</Value4Index>
            <Value5Index>4</Value5Index>
            <Value6Index>5</Value6Index>
            <Value7Index>6</Value7Index>
            <Value8Index>7</Value8Index>
            <Value9Index>72</Value9Index>
            <Value0Name>0</Value0Name>
            <Value1Name>Off</Value1Name>
            <Value2Name>In operation</Value2Name>
            <Value3Name>Run-up phase</Value3Name>
            <Value4Name>Normal operation</Value4Name>
            <Value5Name>Power reduction</Value5Name>
            <Value6Name>Switch-off phase</Value6Name>
            <Value7Name>Error exists</Value7Name>
            <Value8Name>Standby</Value8Name>
            <Value9Name>9</Value9Name>
            <Value0IconId>5</Value0IconId>
            <Value1IconId>61</Value1IconId>
            <Value2IconId>60</Value2IconId>
            <Value3IconId>107</Value3IconId>
            <Value4IconId>39</Value4IconId>
            <Value5IconId>19</Value5IconId>
            <Value6IconId>11</Value6IconId>
            <Value7IconId>57</Value7IconId>
            <Value8IconId>17</Value8IconId>
            <Value9IconId>14</Value9IconId>
            <OffStateValue>0</OffStateValue>
            <ReadSwitchState>MODBUSR(H, 40253+37, Int16)</ReadSwitchState>
            <WriteSwitchState></WriteSwitchState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>${deviceType_PVProduction}</Name>
          <Model>ModbusElectricityMeter</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>9002</DeviceType>
            <InternalPollInterval>15000</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Frequency [Hz]"},"ReadFormula":"ROUND(ModbusR(H, 40093, Float, 2))\r\n"},{"AttributeDefinition":{"Name":"Maximum RMS AC current level capability [W]"},"ReadFormula":"ModbusR(H, 40143, UInt16) * POWER(10, ModbusR(H, 40144, Int16))"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables></CustomDeviceVariables>
            <ReadTotalConsumption>MODBUSR(H, 40101, Float) / 1000</ReadTotalConsumption>
            <ReadDemand>MODBUSR(H, 40107, float) / 1000</ReadDemand>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>String 1</Name>
          <Model>ModbusVariable</Model>
          <Id>-4</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <SerializedValueLogTypeConversions>{"60":"{\u0022ValueLogTypeConversionTypeId\u0022:3,\u0022SerializedValueLogTypeConversion\u0022:\u0022{\\u0022Value1OnInput\\u0022:0,\\u0022Value1OnOutput\\u0022:0,\\u0022Value2OnInput\\u0022:1000,\\u0022Value2OnOutput\\u0022:1,\\u0022SourceValueLogTypes\\u0022:[62],\\u0022TargetValueLogType\\u0022:60}\u0022}"}</SerializedValueLogTypeConversions>
            <InternalPollInterval>15000</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables />
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <IsReadOnly>True</IsReadOnly>
            <ReadState>(MODBUSR(H, 40284, UInt16) * 
POWER(10, MODBUSR(H, 40267, Int16)))</ReadState>
            <WriteState></WriteState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>String 2</Name>
          <Model>ModbusVariable</Model>
          <Id>-5</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <SerializedValueLogTypeConversions>{"60":"{\u0022ValueLogTypeConversionTypeId\u0022:3,\u0022SerializedValueLogTypeConversion\u0022:\u0022{\\u0022Value1OnInput\\u0022:0,\\u0022Value1OnOutput\\u0022:0,\\u0022Value2OnInput\\u0022:1000,\\u0022Value2OnOutput\\u0022:1,\\u0022SourceValueLogTypes\\u0022:[62],\\u0022TargetValueLogType\\u0022:60}\u0022}"}</SerializedValueLogTypeConversions>
            <InternalPollInterval>15000</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables />
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <IsReadOnly>True</IsReadOnly>
            <ReadState>(MODBUSR(H, 40304, UInt16) * 
POWER(10, MODBUSR(H, 40267, Int16)))</ReadState>
            <WriteState></WriteState>
          </DeviceProperties>
        </Device>
      </Devices>
    </Module>
  </Template>
</Templates>