[guntamatic] Added 'biosmart' and 'generic' thingtype, robustness improvements on control interface (#12146)

* * added 'biosmart' and 'generic' type. * robustness improvements on control interface

Signed-off-by: Michael Weger <weger.michael@gmx.net>
This commit is contained in:
MikeTheTux
2022-02-09 21:02:59 +01:00
committed by GitHub
parent b23254fc3a
commit 70e57e43e2
6 changed files with 298 additions and 52 deletions

View File

@@ -31,11 +31,13 @@ public class GuntamaticBindingConstants {
// List of all Thing Type UIDs
public static final ThingTypeUID THING_TYPE_BIOSTAR = new ThingTypeUID(BINDING_ID, "biostar");
public static final ThingTypeUID THING_TYPE_BIOSMART = new ThingTypeUID(BINDING_ID, "biosmart");
public static final ThingTypeUID THING_TYPE_POWERCHIP = new ThingTypeUID(BINDING_ID, "powerchip");
public static final ThingTypeUID THING_TYPE_POWERCORN = new ThingTypeUID(BINDING_ID, "powercorn");
public static final ThingTypeUID THING_TYPE_BIOCOM = new ThingTypeUID(BINDING_ID, "biocom");
public static final ThingTypeUID THING_TYPE_PRO = new ThingTypeUID(BINDING_ID, "pro");
public static final ThingTypeUID THING_TYPE_THERM = new ThingTypeUID(BINDING_ID, "therm");
public static final ThingTypeUID THING_TYPE_GENERIC = new ThingTypeUID(BINDING_ID, "generic");
// List of all Channel ids
public static final String CHANNEL_CONTROLBOILERAPPROVAL = "controlBoilerApproval";
@@ -56,7 +58,14 @@ public class GuntamaticBindingConstants {
public static final String CHANNEL_CONTROLEXTRAWWHEAT1 = "controlExtraWwHeat1";
public static final String CHANNEL_CONTROLEXTRAWWHEAT2 = "controlExtraWwHeat2";
public static final List<String> CHANNELIDS = Arrays.asList(CHANNEL_CONTROLBOILERAPPROVAL, CHANNEL_CONTROLPROGRAM,
public static final List<String> STATIC_CHANNEL_IDS = Arrays.asList(CHANNEL_CONTROLBOILERAPPROVAL,
CHANNEL_CONTROLPROGRAM, CHANNEL_CONTROLHEATCIRCPROGRAM0, CHANNEL_CONTROLHEATCIRCPROGRAM1,
CHANNEL_CONTROLHEATCIRCPROGRAM2, CHANNEL_CONTROLHEATCIRCPROGRAM3, CHANNEL_CONTROLHEATCIRCPROGRAM4,
CHANNEL_CONTROLHEATCIRCPROGRAM5, CHANNEL_CONTROLHEATCIRCPROGRAM6, CHANNEL_CONTROLHEATCIRCPROGRAM7,
CHANNEL_CONTROLHEATCIRCPROGRAM8, CHANNEL_CONTROLWWHEAT0, CHANNEL_CONTROLWWHEAT1, CHANNEL_CONTROLWWHEAT2,
CHANNEL_CONTROLEXTRAWWHEAT0, CHANNEL_CONTROLEXTRAWWHEAT1, CHANNEL_CONTROLEXTRAWWHEAT2);
public static final List<String> STATIC_CHANNEL_IDS_WOBOILERAPP = Arrays.asList(CHANNEL_CONTROLPROGRAM,
CHANNEL_CONTROLHEATCIRCPROGRAM0, CHANNEL_CONTROLHEATCIRCPROGRAM1, CHANNEL_CONTROLHEATCIRCPROGRAM2,
CHANNEL_CONTROLHEATCIRCPROGRAM3, CHANNEL_CONTROLHEATCIRCPROGRAM4, CHANNEL_CONTROLHEATCIRCPROGRAM5,
CHANNEL_CONTROLHEATCIRCPROGRAM6, CHANNEL_CONTROLHEATCIRCPROGRAM7, CHANNEL_CONTROLHEATCIRCPROGRAM8,

View File

@@ -47,6 +47,7 @@ import org.openhab.core.thing.ChannelUID;
import org.openhab.core.thing.Thing;
import org.openhab.core.thing.ThingStatus;
import org.openhab.core.thing.ThingStatusDetail;
import org.openhab.core.thing.ThingTypeUID;
import org.openhab.core.thing.binding.BaseThingHandler;
import org.openhab.core.thing.binding.builder.ChannelBuilder;
import org.openhab.core.thing.binding.builder.ThingBuilder;
@@ -83,11 +84,21 @@ public class GuntamaticHandler extends BaseThingHandler {
SIUnits.CELSIUS, NUMBER_TEMPERATURE, ImperialUnits.FAHRENHEIT, NUMBER_TEMPERATURE, SIUnits.CUBIC_METRE,
NUMBER_VOLUME, Units.DAY, NUMBER_TIME, Units.HOUR, NUMBER_TIME);
private static final Map<String, String> MAP_COMMAND_PARAM_APPROVAL = Map.of("AUTO", "0", "OFF", "1", "ON", "2");
private static final Map<String, String> MAP_COMMAND_PARAM_PROG = Map.of("OFF", "0", "NORMAL", "1", "WARMWATER",
"2", "MANUAL", "8");
private static final Map<String, String> MAP_COMMAND_PARAM_PROG_WOMANU = Map.of("OFF", "0", "NORMAL", "1",
"WARMWATER", "2");
private static final Map<String, String> MAP_COMMAND_PARAM_HC = Map.of("OFF", "0", "NORMAL", "1", "HEAT", "2",
"LOWER", "3");
private static final Map<String, String> MAP_COMMAND_PARAM_WW = Map.of("RECHARGE", "0");
private final Logger logger = LoggerFactory.getLogger(GuntamaticHandler.class);
private final HttpClient httpClient;
private @Nullable ScheduledFuture<?> pollingFuture = null;
private List<String> staticChannelIDs;
private GuntamaticConfiguration config = new GuntamaticConfiguration();
private Boolean channelsInitialized = false;
private GuntamaticChannelTypeProvider guntamaticChannelTypeProvider;
@@ -96,10 +107,11 @@ public class GuntamaticHandler extends BaseThingHandler {
private Map<Integer, Unit<?>> units = new HashMap<>();
public GuntamaticHandler(Thing thing, HttpClient httpClient,
GuntamaticChannelTypeProvider guntamaticChannelTypeProvider) {
GuntamaticChannelTypeProvider guntamaticChannelTypeProvider, List<String> staticChannelIDs) {
super(thing);
this.httpClient = httpClient;
this.guntamaticChannelTypeProvider = guntamaticChannelTypeProvider;
this.staticChannelIDs = staticChannelIDs;
}
@Override
@@ -107,13 +119,25 @@ public class GuntamaticHandler extends BaseThingHandler {
if (!(command instanceof RefreshType)) {
if (!config.key.isBlank()) {
String param;
Map<String, String> map;
String channelID = channelUID.getId();
switch (channelID) {
case CHANNEL_CONTROLBOILERAPPROVAL:
param = getThing().getProperties().get(PARAMETER_BOILERAPPROVAL);
map = MAP_COMMAND_PARAM_APPROVAL;
break;
case CHANNEL_CONTROLPROGRAM:
param = getThing().getProperties().get(PARAMETER_PROGRAM);
ThingTypeUID thingTypeUID = getThing().getThingTypeUID();
if (THING_TYPE_BIOSTAR.equals(thingTypeUID) || THING_TYPE_POWERCHIP.equals(thingTypeUID)
|| THING_TYPE_POWERCORN.equals(thingTypeUID) || THING_TYPE_BIOCOM.equals(thingTypeUID)
|| THING_TYPE_PRO.equals(thingTypeUID) || THING_TYPE_THERM.equals(thingTypeUID)) {
map = MAP_COMMAND_PARAM_PROG;
} else {
map = MAP_COMMAND_PARAM_PROG_WOMANU;
}
break;
case CHANNEL_CONTROLHEATCIRCPROGRAM0:
case CHANNEL_CONTROLHEATCIRCPROGRAM1:
@@ -126,23 +150,36 @@ public class GuntamaticHandler extends BaseThingHandler {
case CHANNEL_CONTROLHEATCIRCPROGRAM8:
param = getThing().getProperties().get(PARAMETER_HEATCIRCPROGRAM).replace("x",
channelID.substring(channelID.length() - 1));
map = MAP_COMMAND_PARAM_HC;
break;
case CHANNEL_CONTROLWWHEAT0:
case CHANNEL_CONTROLWWHEAT1:
case CHANNEL_CONTROLWWHEAT2:
param = getThing().getProperties().get(PARAMETER_WWHEAT).replace("x",
channelID.substring(channelID.length() - 1));
map = MAP_COMMAND_PARAM_WW;
break;
case CHANNEL_CONTROLEXTRAWWHEAT0:
case CHANNEL_CONTROLEXTRAWWHEAT1:
case CHANNEL_CONTROLEXTRAWWHEAT2:
param = getThing().getProperties().get(PARAMETER_EXTRAWWHEAT).replace("x",
channelID.substring(channelID.length() - 1));
map = MAP_COMMAND_PARAM_WW;
break;
default:
return;
}
String response = sendGetRequest(PARSET_URL, "syn=" + param, "value=" + command.toString());
String cmd = command.toString().trim();
if (map.containsValue(cmd)) {
// cmd = cmd;
} else if (map.containsKey(cmd)) {
cmd = map.get(cmd);
} else {
logger.warn("Invalid command '{}' for channel '{}' received ", cmd, channelID);
return;
}
String response = sendGetRequest(PARSET_URL, "syn=" + param, "value=" + cmd);
if (response != null) {
State newState = new StringType(response);
updateState(channelID, newState);
@@ -232,7 +269,8 @@ public class GuntamaticHandler extends BaseThingHandler {
String[] daqdesc = html.split("\\n");
List<Channel> channelList = new ArrayList<>();
for (String channelID : CHANNELIDS) {
// make sure that static channels are present
for (String channelID : staticChannelIDs) {
Channel channel = thing.getChannel(channelID);
if (channel == null) {
logger.warn("Static Channel '{}' is not present: remove and re-add Thing", channelID);
@@ -241,6 +279,7 @@ public class GuntamaticHandler extends BaseThingHandler {
}
}
// add dynamic channels, based on data provided by Guntamatic Heating System
for (int i = 0; i < daqdesc.length; i++) {
String[] param = daqdesc[i].split(";");
String label = param[0].replace("C02", "CO2");
@@ -401,8 +440,10 @@ public class GuntamaticHandler extends BaseThingHandler {
parseAndUpdate(response);
} else if (url.equals(DAQDESC_URL)) {
parseAndInit(response);
} else {
logger.debug(req);
// PARSET_URL via return
}
// PARSET_URL via return
return response;
} catch (IllegalArgumentException e) {
errorReason = String.format("IllegalArgumentException: %s",

View File

@@ -14,6 +14,7 @@ package org.openhab.binding.guntamatic.internal;
import static org.openhab.binding.guntamatic.internal.GuntamaticBindingConstants.*;
import java.util.List;
import java.util.Set;
import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -39,8 +40,9 @@ import org.osgi.service.component.annotations.Reference;
@Component(configurationPid = "binding.guntamatic", service = ThingHandlerFactory.class)
public class GuntamaticHandlerFactory extends BaseThingHandlerFactory {
private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_BIOSTAR, THING_TYPE_POWERCHIP,
THING_TYPE_POWERCORN, THING_TYPE_BIOCOM, THING_TYPE_PRO, THING_TYPE_THERM);
private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_BIOSTAR, THING_TYPE_BIOSMART,
THING_TYPE_POWERCHIP, THING_TYPE_POWERCORN, THING_TYPE_BIOCOM, THING_TYPE_PRO, THING_TYPE_THERM,
THING_TYPE_GENERIC);
private final HttpClient httpClient;
private GuntamaticChannelTypeProvider guntamaticChannelTypeProvider;
@@ -60,9 +62,18 @@ public class GuntamaticHandlerFactory extends BaseThingHandlerFactory {
@Override
protected @Nullable ThingHandler createHandler(Thing thing) {
ThingTypeUID thingTypeUID = thing.getThingTypeUID();
List<String> staticChannelIDs;
if (THING_TYPE_BIOSTAR.equals(thingTypeUID) || THING_TYPE_POWERCHIP.equals(thingTypeUID)
|| THING_TYPE_POWERCORN.equals(thingTypeUID) || THING_TYPE_BIOCOM.equals(thingTypeUID)
|| THING_TYPE_PRO.equals(thingTypeUID) || THING_TYPE_THERM.equals(thingTypeUID)) {
staticChannelIDs = STATIC_CHANNEL_IDS;
} else {
staticChannelIDs = STATIC_CHANNEL_IDS_WOBOILERAPP;
}
if (supportsThingType(thingTypeUID)) {
return new GuntamaticHandler(thing, httpClient, guntamaticChannelTypeProvider);
return new GuntamaticHandler(thing, httpClient, guntamaticChannelTypeProvider, staticChannelIDs);
}
return null;

View File

@@ -6,7 +6,7 @@ binding.guntamatic.description = Binding for Guntamatic Heating Systems.
# thing types
thing-type.guntamatic.biocom.label = Guntamatic Biocom
thing-type.guntamatic.biocom.description = Guntamatic Biocom Heating System. Untested! Please provide Feedback!
thing-type.guntamatic.biocom.description = Guntamatic Biocom Pellets Heating System. Untested! Please provide Feedback!
thing-type.guntamatic.biocom.channel.controlBoilerApproval.label = Set Boiler Approval
thing-type.guntamatic.biocom.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0
thing-type.guntamatic.biocom.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1
@@ -24,8 +24,26 @@ thing-type.guntamatic.biocom.channel.controlProgram.label = Set Program
thing-type.guntamatic.biocom.channel.controlWwHeat0.label = Trigger Warm Water Circle 0
thing-type.guntamatic.biocom.channel.controlWwHeat1.label = Trigger Warm Water Circle 1
thing-type.guntamatic.biocom.channel.controlWwHeat2.label = Trigger Warm Water Circle 2
thing-type.guntamatic.biosmart.label = Guntamatic Biosmart
thing-type.guntamatic.biosmart.description = Guntamatic Biosmart Log Heating System
thing-type.guntamatic.biosmart.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0
thing-type.guntamatic.biosmart.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1
thing-type.guntamatic.biosmart.channel.controlExtraWwHeat2.label = Trigger Extra Warm Water Circle 2
thing-type.guntamatic.biosmart.channel.controlHeatCircProgram0.label = Set Heat Circle 0 Program
thing-type.guntamatic.biosmart.channel.controlHeatCircProgram1.label = Set Heat Circle 1 Program
thing-type.guntamatic.biosmart.channel.controlHeatCircProgram2.label = Set Heat Circle 2 Program
thing-type.guntamatic.biosmart.channel.controlHeatCircProgram3.label = Set Heat Circle 3 Program
thing-type.guntamatic.biosmart.channel.controlHeatCircProgram4.label = Set Heat Circle 4 Program
thing-type.guntamatic.biosmart.channel.controlHeatCircProgram5.label = Set Heat Circle 5 Program
thing-type.guntamatic.biosmart.channel.controlHeatCircProgram6.label = Set Heat Circle 6 Program
thing-type.guntamatic.biosmart.channel.controlHeatCircProgram7.label = Set Heat Circle 7 Program
thing-type.guntamatic.biosmart.channel.controlHeatCircProgram8.label = Set Heat Circle 8 Program
thing-type.guntamatic.biosmart.channel.controlProgram.label = Set Program
thing-type.guntamatic.biosmart.channel.controlWwHeat0.label = Trigger Warm Water Circle 0
thing-type.guntamatic.biosmart.channel.controlWwHeat1.label = Trigger Warm Water Circle 1
thing-type.guntamatic.biosmart.channel.controlWwHeat2.label = Trigger Warm Water Circle 2
thing-type.guntamatic.biostar.label = Guntamatic Biostar
thing-type.guntamatic.biostar.description = Guntamatic Biostar Heating System
thing-type.guntamatic.biostar.description = Guntamatic Biostar Pellets Heating System
thing-type.guntamatic.biostar.channel.controlBoilerApproval.label = Set Boiler Approval
thing-type.guntamatic.biostar.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0
thing-type.guntamatic.biostar.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1
@@ -43,8 +61,26 @@ thing-type.guntamatic.biostar.channel.controlProgram.label = Set Program
thing-type.guntamatic.biostar.channel.controlWwHeat0.label = Trigger Warm Water Circle 0
thing-type.guntamatic.biostar.channel.controlWwHeat1.label = Trigger Warm Water Circle 1
thing-type.guntamatic.biostar.channel.controlWwHeat2.label = Trigger Warm Water Circle 2
thing-type.guntamatic.generic.label = Guntamatic Generic
thing-type.guntamatic.generic.description = Generic Guntamatic Heating System. Use this type, if your Heating System is none of the others. Please provide Feedback!
thing-type.guntamatic.generic.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0
thing-type.guntamatic.generic.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1
thing-type.guntamatic.generic.channel.controlExtraWwHeat2.label = Trigger Extra Warm Water Circle 2
thing-type.guntamatic.generic.channel.controlHeatCircProgram0.label = Set Heat Circle 0 Program
thing-type.guntamatic.generic.channel.controlHeatCircProgram1.label = Set Heat Circle 1 Program
thing-type.guntamatic.generic.channel.controlHeatCircProgram2.label = Set Heat Circle 2 Program
thing-type.guntamatic.generic.channel.controlHeatCircProgram3.label = Set Heat Circle 3 Program
thing-type.guntamatic.generic.channel.controlHeatCircProgram4.label = Set Heat Circle 4 Program
thing-type.guntamatic.generic.channel.controlHeatCircProgram5.label = Set Heat Circle 5 Program
thing-type.guntamatic.generic.channel.controlHeatCircProgram6.label = Set Heat Circle 6 Program
thing-type.guntamatic.generic.channel.controlHeatCircProgram7.label = Set Heat Circle 7 Program
thing-type.guntamatic.generic.channel.controlHeatCircProgram8.label = Set Heat Circle 8 Program
thing-type.guntamatic.generic.channel.controlProgram.label = Set Program
thing-type.guntamatic.generic.channel.controlWwHeat0.label = Trigger Warm Water Circle 0
thing-type.guntamatic.generic.channel.controlWwHeat1.label = Trigger Warm Water Circle 1
thing-type.guntamatic.generic.channel.controlWwHeat2.label = Trigger Warm Water Circle 2
thing-type.guntamatic.powerchip.label = Guntamatic Powerchip
thing-type.guntamatic.powerchip.description = Guntamatic Powerchip Heating System. Untested! Please provide Feedback!
thing-type.guntamatic.powerchip.description = Guntamatic Powerchip WoodChip Heating System
thing-type.guntamatic.powerchip.channel.controlBoilerApproval.label = Set Boiler Approval
thing-type.guntamatic.powerchip.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0
thing-type.guntamatic.powerchip.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1
@@ -63,7 +99,7 @@ thing-type.guntamatic.powerchip.channel.controlWwHeat0.label = Trigger Warm Wate
thing-type.guntamatic.powerchip.channel.controlWwHeat1.label = Trigger Warm Water Circle 1
thing-type.guntamatic.powerchip.channel.controlWwHeat2.label = Trigger Warm Water Circle 2
thing-type.guntamatic.powercorn.label = Guntamatic Powercorn
thing-type.guntamatic.powercorn.description = Guntamatic Powercorn Heating System. Untested! Please provide Feedback!
thing-type.guntamatic.powercorn.description = Guntamatic Powercorn EnergyGrain Heating System. Untested! Please provide Feedback!
thing-type.guntamatic.powercorn.channel.controlBoilerApproval.label = Set Boiler Approval
thing-type.guntamatic.powercorn.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0
thing-type.guntamatic.powercorn.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1
@@ -82,7 +118,7 @@ thing-type.guntamatic.powercorn.channel.controlWwHeat0.label = Trigger Warm Wate
thing-type.guntamatic.powercorn.channel.controlWwHeat1.label = Trigger Warm Water Circle 1
thing-type.guntamatic.powercorn.channel.controlWwHeat2.label = Trigger Warm Water Circle 2
thing-type.guntamatic.pro.label = Guntamatic Pro
thing-type.guntamatic.pro.description = Guntamatic Pro Heating System. Untested! Please provide Feedback!
thing-type.guntamatic.pro.description = Guntamatic Pro Pellets or WoodChip Heating System. Untested! Please provide Feedback!
thing-type.guntamatic.pro.channel.controlBoilerApproval.label = Set Boiler Approval
thing-type.guntamatic.pro.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0
thing-type.guntamatic.pro.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1
@@ -101,7 +137,7 @@ thing-type.guntamatic.pro.channel.controlWwHeat0.label = Trigger Warm Water Circ
thing-type.guntamatic.pro.channel.controlWwHeat1.label = Trigger Warm Water Circle 1
thing-type.guntamatic.pro.channel.controlWwHeat2.label = Trigger Warm Water Circle 2
thing-type.guntamatic.therm.label = Guntamatic Therm
thing-type.guntamatic.therm.description = Guntamatic Therm Heating System. Untested! Please provide Feedback!
thing-type.guntamatic.therm.description = Guntamatic Therm Pellets Heating System. Untested! Please provide Feedback!
thing-type.guntamatic.therm.channel.controlBoilerApproval.label = Set Boiler Approval
thing-type.guntamatic.therm.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0
thing-type.guntamatic.therm.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1
@@ -153,6 +189,11 @@ channel-type.guntamatic.controlProgram.state.option.0 = OFF
channel-type.guntamatic.controlProgram.state.option.1 = NORMAL
channel-type.guntamatic.controlProgram.state.option.2 = WARMWATER
channel-type.guntamatic.controlProgram.state.option.8 = MANUAL
channel-type.guntamatic.controlProgramWOManu.label = Set Program
channel-type.guntamatic.controlProgramWOManu.description = Set Program of the Guntamatic Heating System (OFF, NORMAL, WARMWATER)
channel-type.guntamatic.controlProgramWOManu.state.option.0 = OFF
channel-type.guntamatic.controlProgramWOManu.state.option.1 = NORMAL
channel-type.guntamatic.controlProgramWOManu.state.option.2 = WARMWATER
channel-type.guntamatic.controlWwHeat.label = Trigger Warm Water Circle
channel-type.guntamatic.controlWwHeat.description = Trigger Warm Water Circle of the Guntamatic Heating System (RECHARGE)
channel-type.guntamatic.controlWwHeat.state.option.0 = RECHARGE

View File

@@ -7,7 +7,7 @@
<thing-type id="biostar">
<label>Guntamatic Biostar</label>
<description>Guntamatic Biostar Heating System</description>
<description>Guntamatic Biostar Pellets Heating System</description>
<channels>
<channel id="controlBoilerApproval" typeId="controlBoilerApproval">
@@ -71,10 +71,73 @@
</properties>
<config-description-ref uri="thing-type:guntamatic:heatingsystem"/>
</thing-type>
<thing-type id="biosmart">
<label>Guntamatic Biosmart</label>
<description>Guntamatic Biosmart Log Heating System</description>
<channels>
<channel id="controlProgram" typeId="controlProgramWOManu">
<label>Set Program</label>
</channel>
<channel id="controlHeatCircProgram0" typeId="controlHeatCircProgram">
<label>Set Heat Circle 0 Program</label>
</channel>
<channel id="controlHeatCircProgram1" typeId="controlHeatCircProgram">
<label>Set Heat Circle 1 Program</label>
</channel>
<channel id="controlHeatCircProgram2" typeId="controlHeatCircProgram">
<label>Set Heat Circle 2 Program</label>
</channel>
<channel id="controlHeatCircProgram3" typeId="controlHeatCircProgram">
<label>Set Heat Circle 3 Program</label>
</channel>
<channel id="controlHeatCircProgram4" typeId="controlHeatCircProgram">
<label>Set Heat Circle 4 Program</label>
</channel>
<channel id="controlHeatCircProgram5" typeId="controlHeatCircProgram">
<label>Set Heat Circle 5 Program</label>
</channel>
<channel id="controlHeatCircProgram6" typeId="controlHeatCircProgram">
<label>Set Heat Circle 6 Program</label>
</channel>
<channel id="controlHeatCircProgram7" typeId="controlHeatCircProgram">
<label>Set Heat Circle 7 Program</label>
</channel>
<channel id="controlHeatCircProgram8" typeId="controlHeatCircProgram">
<label>Set Heat Circle 8 Program</label>
</channel>
<channel id="controlWwHeat0" typeId="controlWwHeat">
<label>Trigger Warm Water Circle 0</label>
</channel>
<channel id="controlWwHeat1" typeId="controlWwHeat">
<label>Trigger Warm Water Circle 1</label>
</channel>
<channel id="controlWwHeat2" typeId="controlWwHeat">
<label>Trigger Warm Water Circle 2</label>
</channel>
<channel id="controlExtraWwHeat0" typeId="controlExtraWwHeat">
<label>Trigger Extra Warm Water Circle 0</label>
</channel>
<channel id="controlExtraWwHeat1" typeId="controlExtraWwHeat">
<label>Trigger Extra Warm Water Circle 1</label>
</channel>
<channel id="controlExtraWwHeat2" typeId="controlExtraWwHeat">
<label>Trigger Extra Warm Water Circle 2</label>
</channel>
</channels>
<properties>
<property name="program">PR001</property>
<property name="heatCircProgram">HKx01</property>
<property name="wwHeat">BKx06</property>
<property name="extraWwHeat">ZKx06</property>
</properties>
<config-description-ref uri="thing-type:guntamatic:heatingsystem"/>
</thing-type>
<thing-type id="powerchip">
<label>Guntamatic Powerchip</label>
<description>Guntamatic Powerchip Heating System. Untested! Please provide Feedback!</description>
<description>Guntamatic Powerchip WoodChip Heating System</description>
<channels>
<channel id="controlBoilerApproval" typeId="controlBoilerApproval">
@@ -141,7 +204,7 @@
<thing-type id="powercorn">
<label>Guntamatic Powercorn</label>
<description>Guntamatic Powercorn Heating System. Untested! Please provide Feedback!</description>
<description>Guntamatic Powercorn EnergyGrain Heating System. Untested! Please provide Feedback!</description>
<channels>
<channel id="controlBoilerApproval" typeId="controlBoilerApproval">
@@ -208,7 +271,7 @@
<thing-type id="biocom">
<label>Guntamatic Biocom</label>
<description>Guntamatic Biocom Heating System. Untested! Please provide Feedback!</description>
<description>Guntamatic Biocom Pellets Heating System. Untested! Please provide Feedback!</description>
<channels>
<channel id="controlBoilerApproval" typeId="controlBoilerApproval">
@@ -275,7 +338,7 @@
<thing-type id="pro">
<label>Guntamatic Pro</label>
<description>Guntamatic Pro Heating System. Untested! Please provide Feedback!</description>
<description>Guntamatic Pro Pellets or WoodChip Heating System. Untested! Please provide Feedback!</description>
<channels>
<channel id="controlBoilerApproval" typeId="controlBoilerApproval">
@@ -342,7 +405,7 @@
<thing-type id="therm">
<label>Guntamatic Therm</label>
<description>Guntamatic Therm Heating System. Untested! Please provide Feedback!</description>
<description>Guntamatic Therm Pellets Heating System. Untested! Please provide Feedback!</description>
<channels>
<channel id="controlBoilerApproval" typeId="controlBoilerApproval">
@@ -406,7 +469,70 @@
</properties>
<config-description-ref uri="thing-type:guntamatic:heatingsystem"/>
</thing-type>
<thing-type id="generic">
<label>Guntamatic Generic</label>
<description>Generic Guntamatic Heating System. Use this type, if your Heating System is none of the others. Please
provide Feedback!</description>
<channels>
<channel id="controlProgram" typeId="controlProgramWOManu">
<label>Set Program</label>
</channel>
<channel id="controlHeatCircProgram0" typeId="controlHeatCircProgram">
<label>Set Heat Circle 0 Program</label>
</channel>
<channel id="controlHeatCircProgram1" typeId="controlHeatCircProgram">
<label>Set Heat Circle 1 Program</label>
</channel>
<channel id="controlHeatCircProgram2" typeId="controlHeatCircProgram">
<label>Set Heat Circle 2 Program</label>
</channel>
<channel id="controlHeatCircProgram3" typeId="controlHeatCircProgram">
<label>Set Heat Circle 3 Program</label>
</channel>
<channel id="controlHeatCircProgram4" typeId="controlHeatCircProgram">
<label>Set Heat Circle 4 Program</label>
</channel>
<channel id="controlHeatCircProgram5" typeId="controlHeatCircProgram">
<label>Set Heat Circle 5 Program</label>
</channel>
<channel id="controlHeatCircProgram6" typeId="controlHeatCircProgram">
<label>Set Heat Circle 6 Program</label>
</channel>
<channel id="controlHeatCircProgram7" typeId="controlHeatCircProgram">
<label>Set Heat Circle 7 Program</label>
</channel>
<channel id="controlHeatCircProgram8" typeId="controlHeatCircProgram">
<label>Set Heat Circle 8 Program</label>
</channel>
<channel id="controlWwHeat0" typeId="controlWwHeat">
<label>Trigger Warm Water Circle 0</label>
</channel>
<channel id="controlWwHeat1" typeId="controlWwHeat">
<label>Trigger Warm Water Circle 1</label>
</channel>
<channel id="controlWwHeat2" typeId="controlWwHeat">
<label>Trigger Warm Water Circle 2</label>
</channel>
<channel id="controlExtraWwHeat0" typeId="controlExtraWwHeat">
<label>Trigger Extra Warm Water Circle 0</label>
</channel>
<channel id="controlExtraWwHeat1" typeId="controlExtraWwHeat">
<label>Trigger Extra Warm Water Circle 1</label>
</channel>
<channel id="controlExtraWwHeat2" typeId="controlExtraWwHeat">
<label>Trigger Extra Warm Water Circle 2</label>
</channel>
</channels>
<properties>
<property name="program">PR001</property>
<property name="heatCircProgram">HKx01</property>
<property name="wwHeat">BKx06</property>
<property name="extraWwHeat">ZKx06</property>
</properties>
<config-description-ref uri="thing-type:guntamatic:heatingsystem"/>
</thing-type>
<channel-type id="controlProgram" advanced="false">
<item-type>String</item-type>
@@ -421,6 +547,18 @@
</options>
</state>
</channel-type>
<channel-type id="controlProgramWOManu" advanced="false">
<item-type>String</item-type>
<label>Set Program</label>
<description>Set Program of the Guntamatic Heating System (OFF, NORMAL, WARMWATER)</description>
<state>
<options>
<option value="0">OFF</option>
<option value="1">NORMAL</option>
<option value="2">WARMWATER</option>
</options>
</state>
</channel-type>
<channel-type id="controlBoilerApproval" advanced="true">
<item-type>String</item-type>
<label>Set Boiler Approval</label>