﻿<?xml version="1.0" encoding="utf-8"?>
<Templates format="2" protocolVersion="83">
  <Template revision="1.1" id = "0973541b-0806-4d0a-8798-c8afeffd56f2">
    <SuggestedCCUParameters />
    <RevisionHistory>
      <Revision id="1.0">Initial version</Revision>
      <Revision id="1.1">Changed to use RECEIVEDMSG</Revision>
    </RevisionHistory>
    <Name>Shelly Plus H&amp;T MQTT</Name>
    <CcuModel>PacketParserCCU</CcuModel>
    <Producer></Producer>
    <Model></Model>
    <Description></Description>
	<ImportParameters>
	<Parameter>
		<Name>Mqtt Broker ${ipAddress}</Name>	
		<Value>192.168.0.1</Value>
		<Id>IpAddress</Id>
	</Parameter>
	<Parameter>
		<Name>Mqtt Broker port</Name>	
		<Value>1883</Value>
		<Id>Port</Id>
	</Parameter>
  <Parameter>
	<Name>Device ID</Name>	
	<Value>shellyplusht-yourDeviceId</Value>
	<Id>deviceId</Id>
  </Parameter>
	</ImportParameters>
    <Module>
      <Name>Shelly Plus H&amp;T MQTT</Name>
      <Model>PacketParserModuleMqtt</Model>
      <DeviceProperties>
        <InternalPollInterval>15000</InternalPollInterval>
        <CustomVariables>[{"Name":"deviceId","ValueTypeId":2,"NumericValue":0,"StringValue":"$[deviceId]"}]</CustomVariables>
        <IpAddress>$[IpAddress]</IpAddress>
		<Port>$[Port]</Port>
        <RootTopic>$[deviceId]/#</RootTopic>
      </DeviceProperties>
      <Devices>
        <Device>
          <Name>Shelly Plus H&amp;T</Name>
          <Model>PacketParserTemperatureSensor</Model>
          <DeviceProperties>
            <ReadScriptPacketParser></ReadScriptPacketParser>
            <InternalPollInterval>10000</InternalPollInterval>
			<CustomVariables>[{"Name":"listenHum","ValueTypeId":1,"NumericValue":"NaN"},{"Name":"batteryPerc","ValueTypeId":1,"NumericValue":"NaN"},{"Name":"batteryV","ValueTypeId":1,"NumericValue":"NaN"},{"Name":"externalPower","ValueTypeId":2,"NumericValue":"NaN","StringValue":""},{"Name":"macAddress","ValueTypeId":2,"NumericValue":0,"StringValue":""},{"Name":"cloudConnected","ValueTypeId":2,"NumericValue":0,"StringValue":""},{"Name":"mqttConnected","ValueTypeId":2,"NumericValue":0,"StringValue":""},{"Name":"BLEenabled","ValueTypeId":2,"NumericValue":0,"StringValue":""},{"Name":"wifi","ValueTypeId":2,"NumericValue":0,"StringValue":""},{"Name":"ipaddress","ValueTypeId":2,"NumericValue":0,"StringValue":""}]</CustomVariables>
            <ServiceAttributesScriptsPacketParser>[{"AttributeDefinition":{"Name":"Battery"},"ReadFormula":"IF (ISNAN(batteryPerc), \u0022-\u0022, batteryPerc \u002B \u0022%\u0022);"},{"AttributeDefinition":{"Name":"Battery voltage"},"ReadFormula":"IF (ISNAN(batteryV), \u0022-\u0022, batteryV \u002B \u0022V\u0022);"},{"AttributeDefinition":{"Name":"External power"},"ReadFormula":"IF (LENGTH(externalPower) = 0, \u0022-\u0022, externalPower);"},{"AttributeDefinition":{"Name":"WiFi"},"ReadFormula":"IF (LENGTH(wifi) = 0, \u0022-\u0022, wifi);"},{"AttributeDefinition":{"Name":"IP Address"},"ReadFormula":"IF (LENGTH(ipaddress) = 0, \u0022-\u0022, ipaddress);"},{"AttributeDefinition":{"Name":"MAC Address"},"ReadFormula":"IF (LENGTH(macAddress) = 0, \u0022-\u0022, macAddress);"},{"AttributeDefinition":{"Name":"Cloud connected"},"ReadFormula":"IF (LENGTH(cloudConnected) = 0, \u0022-\u0022, cloudConnected);"},{"AttributeDefinition":{"Name":"MQTT connected"},"ReadFormula":"IF (LENGTH(mqttConnected) = 0, \u0022-\u0022, mqttConnected);"},{"AttributeDefinition":{"Name":"BLE enabled"},"ReadFormula":"IF (LENGTH(BLEenabled) = 0, \u0022-\u0022, BLEenabled);"}]</ServiceAttributesScriptsPacketParser>
            <ServiceActionsScriptsPacketParser></ServiceActionsScriptsPacketParser>
            <ListenerScriptPacketParser>
IF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/temperature:0") &gt;= 0)
    Te := PARSEJSON(RECEIVEDMSG.PAYLOAD,"tC", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/humidity:0") &gt;= 0)
    listenHum := PARSEJSON(RECEIVEDMSG.PAYLOAD,"rh", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/devicepower:0") &gt;= 0)
    batteryPerc := PARSEJSON(RECEIVEDMSG.PAYLOAD,"battery.percent", true);
    batteryV := PARSEJSON(RECEIVEDMSG.PAYLOAD,"battery.V", true);
    externalPower := PARSEJSON(RECEIVEDMSG.PAYLOAD,"external.present", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/sys") &gt;= 0)
    macAddress := PARSEJSON(RECEIVEDMSG.PAYLOAD,"mac", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/wifi") &gt;= 0)
    ipaddress := PARSEJSON(RECEIVEDMSG.PAYLOAD,"sta_ip", true);
    wifi := PARSEJSON(RECEIVEDMSG.PAYLOAD,"ssid", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/cloud") &gt;= 0)
    cloudConnected := PARSEJSON(RECEIVEDMSG.PAYLOAD,"connected", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/mqtt") &gt;= 0)
    mqttConnected := PARSEJSON(RECEIVEDMSG.PAYLOAD,"connected", true);
ELSEIF (INDEXOF(RECEIVEDMSG.TOPIC, deviceid +"/status/ble") &gt;= 0)
    BLEenabled := PARSEJSON(RECEIVEDMSG.PAYLOAD,"enable", true);
END</ListenerScriptPacketParser>
            <TemperatureCalibration>0</TemperatureCalibration>
            <ReadTemperatureScriptPacketParser></ReadTemperatureScriptPacketParser>
            <ReadHumidityScriptPacketParser>Hu := listenHum / 100.0;</ReadHumidityScriptPacketParser>
          </DeviceProperties>
        </Device>
      </Devices>
    </Module>
  </Template>
</Templates>