<?xml version="1.0" encoding="utf-8"?>
<Templates format="2" protocolVersion="84">
  <Template revision="1.0" id="8c794050-046d-4187-9e4b-c9d910f516de">
    <SuggestedCCUParameters>
      <UseAsciiCommunication>False</UseAsciiCommunication>
      <StopBits>One</StopBits>
      <DataBits>8</DataBits>
      <Parity>None</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>Intesis Dali</Name>
    <CcuModel>ModbusRtuCCU</CcuModel>
    <Producer></Producer>
    <Model></Model>
    <Description></Description>
    <Module>
      <Name>Intesis Dali</Name>
      <Id>-1</Id>
      <Model>ModbusModule</Model>
      <DeviceProperties>
        <DeviceType>7001</DeviceType>
        <InternalPollInterval>30000</InternalPollInterval>
        <ReadScript>failRegister := modbusr(H, base_modifier + 0, Uint16) + 
(modbusr(H, base_modifier + 1, Uint16) &lt;&lt; 16) +
(modbusr(H, base_modifier + 2, Uint16) &lt;&lt; 32) +
(modbusr(H, base_modifier + 3, Uint16) &lt;&lt; 48)</ReadScript>        
        <PrefetchModeId>0</PrefetchModeId>
        <ServiceActionsScripts>[{"ActionDefinition":{"Name":"All - On","NumericParameters":[],"BoolParameters":[],"EnumParameters":[]},"Script":"modbusw(H, base_modifier + 6801, uint16, 1);"},{"ActionDefinition":{"Name":"All - Off","NumericParameters":[],"BoolParameters":[],"EnumParameters":[]},"Script":"modbusw(H, base_modifier + 6801, uint16, 0);"},{"ActionDefinition":{"Name":"All - Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"modbusw(H, base_modifier + 6812, uint16, Lvl);"},{"ActionDefinition":{"Name":"All - Set System-failure Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"modbusw(H, base_modifier + 6813, uint16, Lvl);"}]</ServiceActionsScripts>
        <SlaveId>$[SlaveId]</SlaveId>
        <ModuleVariables>[{"Name":"failRegister","ValueTypeId":0,"NumericValue":0},{"Name":"base_modifier","ValueTypeId":1,"NumericValue":0}]</ModuleVariables>     
        <MaxPrefetchGroupSize>100</MaxPrefetchGroupSize>
        <IpAddress>$[IpAddress]</IpAddress>
      </DeviceProperties>
      <Devices>
        <Device>
          <Name>Gear 0</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":0},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 1</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":1},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 2</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":2},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 3</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":3},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 4</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":4},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 5</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":5},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 6</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":6},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 7</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":7},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 8</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":8},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 9</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":9},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 10</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":10},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 11</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":11},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 12</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":12},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 13</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":13},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 14</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":14},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 15</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":15},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 16</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":16},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 17</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":17},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 18</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":18},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 19</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":19},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 20</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":20},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 21</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":21},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 22</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":22},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 23</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":23},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 24</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":24},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 25</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":25},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 26</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":26},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 27</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":27},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 28</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":28},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 29</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":29},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 30</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":30},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 31</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":31},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 32</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":32},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 33</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":33},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 34</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":34},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 35</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":35},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 36</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":36},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 37</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":37},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 38</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":38},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 39</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":39},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 40</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":40},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 41</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":41},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 42</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":42},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 43</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":43},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 44</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":44},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 45</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":45},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 46</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":46},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 47</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":47},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 48</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":48},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 49</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":49},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 50</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":50},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 51</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":51},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 52</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":52},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 53</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":53},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 54</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":54},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 55</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":55},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 56</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":56},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 57</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":57},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 58</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":58},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 59</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":59},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 60</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":60},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 61</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":61},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 62</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":62},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Gear 63</Name>
          <Model>ModbusDimmer</Model>
          <Id>-2</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript>var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);</InitializeScript>
            <ReadScript>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister &gt;&gt; 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
</ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas>[{"AttributeDefinition":{"Name":"Main Device Type"},"ReadFormula":"\r\nvar base := base_modifier + (100 * SA);\r\n\r\nswitch(modbusr(H, base \u002B 7, uint16),\r\n0, \u0022Fluorescent\u0022,\r\n1, \u0022Emergency\u0022,\r\n2, \u0022Discharge\u0022,\r\n3, \u0022Halogen\u0022,\r\n4, \u0022Incandescent\u0022,\r\n5, \u0022Digital signal\u0022,\r\n6, \u0022LED\u0022,\r\n7, \u0022Switching\u0022,\r\n8, \u0022Color control\u0022,\r\n255, \u0022Other\u0022,\r\n\u0022Unknown\u0022)"},{"AttributeDefinition":{"Name":"Power On Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 11, uint16);"},{"AttributeDefinition":{"Name":"System Failure Level [%]"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 12, uint16);"},{"AttributeDefinition":{"Name":"Fade Time"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 13, uint16);"},{"AttributeDefinition":{"Name":"Fade Rate"},"ReadFormula":"var base := base_modifier + (100 * SA);\r\nmodbusr(H, base \u002B 14, uint16);"}]</ServiceAttributesFormulas>
            <ServiceActionsScripts>[{"ActionDefinition":{"Name":"Set Power-on Level","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 27, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set System-failure Level ","NumericParameters":[{"FriendlyName":"Level","Abbreviation":"Lvl","IsFloat":false,"MinValue":0,"MaxValue":100}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 28, uint16, Lvl);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Time","NumericParameters":[{"FriendlyName":"Fade Time","Abbreviation":"FT","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 23, uint16, FT);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Set Fade Rate","NumericParameters":[{"FriendlyName":"Fade Rate","Abbreviation":"FR","IsFloat":false,"MinValue":1,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 24, uint16, FR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Add to DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 29, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"},{"ActionDefinition":{"Name":"Remove from DALI Group","NumericParameters":[{"FriendlyName":"Group","Abbreviation":"GR","IsFloat":false,"MinValue":0,"MaxValue":15}],"BoolParameters":[],"EnumParameters":[]},"Script":"var base := base_modifier + (100 * SA);\r\nmodbusw(H, base \u002B 30, uint16, GR);\r\nmodbusw(H, base \u002B 4, uint16, 1);"}]</ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"SA","ValueTypeId":1,"NumericValue":63},{"Name":"level","ValueTypeId":1,"NumericValue":0},{"Name":"minLevel","ValueTypeId":1,"NumericValue":0},{"Name":"maxLevel","ValueTypeId":1,"NumericValue":0},{"Name":"status","ValueTypeId":1,"NumericValue":0},{"Name":"count","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel>var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or &lt;=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff &gt; 0 and diff &lt;= 1) or count &gt; 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end</ReadLevel>
            <WriteLevel>var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 0</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":0}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 1</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":1}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 2</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":2}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 3</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":3}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 4</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":4}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 5</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":5}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 6</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":6}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 7</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":7}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 8</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":8}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 9</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":9}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 10</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":10}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 11</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":11}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 12</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":12}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 13</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":13}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 14</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":14}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
﻿        <Device>
          <Name>Group 15</Name>
          <Model>ModbusDimmer</Model>
          <Id>-3</Id>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>2500</InternalPollInterval>
            <InitializeScript></InitializeScript>
            <ReadScript></ReadScript>
            <PrefetchModeId>0</PrefetchModeId>
            <ServiceAttributesFormulas></ServiceAttributesFormulas>
            <ServiceActionsScripts></ServiceActionsScripts>
            <CustomDeviceVariables>[{"Name":"GA","ValueTypeId":1,"NumericValue":15}]</CustomDeviceVariables>
            <ShouldDoPeriodicWrite>False</ShouldDoPeriodicWrite>
            <ReadLevel></ReadLevel>
            <WriteLevel>if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
</WriteLevel>
            <IconId>0</IconId>
          </DeviceProperties>
        </Device>
      </Devices>
    </Module>
  </Template>
</Templates>
