]> git.basschouten.com Git - openhab-addons.git/commitdiff
[guntamatic] Added 'biosmart' and 'generic' thingtype, robustness improvements on...
authorMikeTheTux <44850211+MikeTheTux@users.noreply.github.com>
Wed, 9 Feb 2022 20:02:59 +0000 (21:02 +0100)
committerGitHub <noreply@github.com>
Wed, 9 Feb 2022 20:02:59 +0000 (21:02 +0100)
* * added 'biosmart' and 'generic' type. * robustness improvements on control interface

Signed-off-by: Michael Weger <weger.michael@gmx.net>
bundles/org.openhab.binding.guntamatic/README.md
bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticBindingConstants.java
bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java
bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandlerFactory.java
bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/i18n/guntamatic.properties
bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/thing/thing-types.xml

index 3fb9a056d48278f2ffb38cfd5410d40f370c50d7..196fd11d26a69e0c35cf656b7f04a6a84c3ffd99 100644 (file)
@@ -5,39 +5,41 @@ The Guntamatic Binding can be used to monitor and control [Guntamatic Heating Sy
 ## Supported Things
 
 The Guntamatic Binding was developed and tested using Guntamatic Biostar 15kW Pellets Heating System, running Firmware 3.2d.
-It should work for all other Guntamatic Heating Systems as well, that support the same web interface.
+It should work for all other Guntamatic Heating Systems as well, that support the same web interface (Pellets, WoodChips, EnergyGrain as well as Log Heating Systems).
 
 ## Things
 
 Guntamatic Heating Systems supported as Thing Types:
 
-| Name          | Thing Type ID | Status                            |
-|---------------|---------------|-----------------------------------|
-| Biostar       | `biostar`     | tested via 15kW, firmware 3.2d    |
-| Powerchip     | `powerchip`   | untested                          |
-| Powercorn     | `powercorn`   | untested                          |
-| Biocom        | `biocom`      | untested                          |
-| Pro           | `pro`         | untested                          |
-| Therm         | `therm`       | untested                          |
+| Name          | Thing Type ID | Heating System Type  | Binding Development Status                       |
+|---------------|---------------|----------------------|--------------------------------------------------|
+| Biostar       | `biostar`     | Pellets              | tested via 15kW, firmware 3.2d, German & English |
+| Biosmart      | `biosmart`    | Logs                 | tested via 22kW, firmware 3.2f, German           |
+| Powerchip     | `powerchip`   | WoodChips            | tested via 100kW, firmware 3.2d, French          |
+| Powercorn     | `powercorn`   | EnergyGrain          | untested                                         |
+| Biocom        | `biocom`      | Pellets              | untested                                         |
+| Pro           | `pro`         | Pellets or WoodChips | untested                                         |
+| Therm         | `therm`       | Pellets              | untested                                         |
+| Generic       | `generic`     | -                    | use, if none from above                          |
 
 ### Thing Configuration
 
-| Parameter        | Description                                                                 | Default         |
-|------------------|-----------------------------------------------------------------------------|-----------------|
-| `hostname`         | Hostname or IP address of the Guntamatic Heating System                   |                 |
-| `key`              | Optional, but required to read protected parameters and to control the Guntamatic Heating System.<br/>The key needs to be requested from Guntamatic support, e.g. via https://www.guntamatic.com/en/contact/.                                        |                 |
-| `refreshInterval` | Interval the Guntamatic Heating System is polled in seconds                | `60`            |
-| `encoding`         | Code page used by the Guntamatic Heating System                           | `windows-1252`  |
+| Parameter          | Description                                                                 | Default         |
+|--------------------|-----------------------------------------------------------------------------|-----------------|
+| `hostname`         | Hostname or IP address of the Guntamatic Heating System                     |                 |
+| `key`              | Optional, but required to read protected parameters and to control the Guntamatic Heating System.<br/>The key needs to be requested from Guntamatic support, e.g. via https://www.guntamatic.com/en/contact/.                                          |                 |
+| `refreshInterval`  | Interval the Guntamatic Heating System is polled in seconds                 | `60`            |
+| `encoding`         | Code page used by the Guntamatic Heating System                             | `windows-1252`  |
 
 ### Properties
 
-| Property            | Description                                                   |
-|---------------------|---------------------------------------------------------------|
-| `extraWwHeat`       | Parameter used by `controlExtraWwHeat` channels               |
-| `boilerApproval`    | Parameter used by `controlBoilerApproval` channel             |
-| `heatCircProgram`   | Parameter used by `controlHeatCircProgram` channels           |
-| `program`           | Parameter used by `controlProgram` channel                    |
-| `wwHeat`            | Parameter used by `controlWwHeat` channels                    |
+| Property            | Description                                                   | Supported                                         |
+|---------------------|---------------------------------------------------------------|---------------------------------------------------|
+| `extraWwHeat`       | Parameter used by `controlExtraWwHeat` channels               | all                                               |
+| `boilerApproval`    | Parameter used by `controlBoilerApproval` channel             | Biostar, Powerchip, Powercorn, Biocom, Pro, Therm |
+| `heatCircProgram`   | Parameter used by `controlHeatCircProgram` channels           | all                                               | 
+| `program`           | Parameter used by `controlProgram` channel                    | all                                               |
+| `wwHeat`            | Parameter used by `controlWwHeat` channels                    | all                                               |
 
 ## Channels
 
@@ -45,10 +47,10 @@ Guntamatic Heating Systems supported as Thing Types:
 
 The Guntamatic Heating System can be controlled using the following channels:
 
-|      Channel             |   Description                                             | Type  |       Unit    |       Security Access Level   | ReadOnly | Advanced |
-|-----------------------|-----------------------------------------------------------|-------|:---------:|:-------------------------:|:--------:|:--------:|
-|      `controlBoilerApproval` |       Set Boiler Approval (`AUTO`, `OFF`, `ON`)       |       `String`        |               |       🔐 W1 |       R/W     |       true    |
-|      `controlProgram`        |       Set Program (`OFF`, `NORMAL`, `WARMWATER`, `MANUAL`)    |       `String`        |               |       🔐 W1 |       R/W     |       false   |
+|      Channel             |   Description                                                             | Type  |       Unit    |       Security Access Level   | ReadOnly | Advanced |
+|-----------------------|---------------------------------------------------------------------------|-------|:---------:|:-------------------------:|:--------:|:--------:|
+|      `controlBoilerApproval` |       Set Boiler Approval (`AUTO`, `OFF`, `ON`)                               |       `String`        |               |       🔐 W1 |       R/W     |       true    |
+|      `controlProgram`        |       Set Program (`OFF`, `NORMAL`, `WARMWATER`, `MANUAL`<sup id="a1">[1](#f1)</sup>) |       `String`        |               |       🔐 W1 |       R/W     |       false   |
 |      `controlHeatCircProgram0`       |       Set Heat Circle 0 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`)    |       `String`        |               |       🔐 W1 |       R/W     |       true    |
 |      `controlHeatCircProgram1`       |       Set Heat Circle 1 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`)    |       `String`        |               |       🔐 W1 |       R/W     |       true    |
 |      `controlHeatCircProgram2`       |       Set Heat Circle 2 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`)    |       `String`        |               |       🔐 W1 |       R/W     |       true    |
@@ -58,18 +60,22 @@ The Guntamatic Heating System can be controlled using the following channels:
 |      `controlHeatCircProgram6`       |       Set Heat Circle 6 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`)    |       `String`        |               |       🔐 W1 |       R/W     |       true    |
 |      `controlHeatCircProgram7`       |       Set Heat Circle 7 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`)    |       `String`        |               |       🔐 W1 |       R/W     |       true    |
 |      `controlHeatCircProgram8`       |       Set Heat Circle 8 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`)    |       `String`        |               |       🔐 W1 |       R/W     |       true    |
-|      `controlWwHeat0`        |       Trigger Warm Water Circle 0 (`RECHARGE`)        |       `String`        |               |       🔐 W1 |       R/W     |       true    |
-|      `controlWwHeat1`        |       Trigger Warm Water Circle 1 (`RECHARGE`)        |       `String`        |               |       🔐 W1 |       R/W     |       true    |
-|      `controlWwHeat2`        |       Trigger Warm Water Circle 2 (`RECHARGE`)        |       `String`        |               |       🔐 W1 |       R/W     |       true    |
-|      `controlExtraWwHeat0`   |       Trigger Extra Warm Water Circle 0 (`RECHARGE`)  |       `String`        |               |       🔐 W1 |       R/W     |       true    |
-|      `controlExtraWwHeat1`   |       Trigger Extra Warm Water Circle 1 (`RECHARGE`)  |       `String`        |               |       🔐 W1 |       R/W     |       true    |
-|      `controlExtraWwHeat2`   |       Trigger Extra Warm Water Circle 2 (`RECHARGE`)  |       `String`        |               |       🔐 W1 |       R/W     |       true    |
+|      `controlWwHeat0`                |       Trigger Warm Water Circle 0 (`RECHARGE`)                            |   `String`        |               |       🔐 W1 |       R/W     |       true    |
+|      `controlWwHeat1`            |   Trigger Warm Water Circle 1 (`RECHARGE`)                            |   `String`        |               |       🔐 W1 |       R/W     |       true    |
+|      `controlWwHeat2`            |   Trigger Warm Water Circle 2 (`RECHARGE`)                            |   `String`        |               |       🔐 W1 |       R/W     |       true    |
+|      `controlExtraWwHeat0`       |   Trigger Extra Warm Water Circle 0 (`RECHARGE`)                  |       `String`        |               |       🔐 W1 |       R/W     |       true    |
+|      `controlExtraWwHeat1`       |   Trigger Extra Warm Water Circle 1 (`RECHARGE`)                  |       `String`        |               |       🔐 W1 |       R/W     |       true    |
+|      `controlExtraWwHeat2`       |   Trigger Extra Warm Water Circle 2 (`RECHARGE`)                  |       `String`        |               |       🔐 W1 |       R/W     |       true    |
+
+- <b id="f1">1)</b> ... `MANUAL` is supported by Biostar, Powerchip, Powercorn, Biocom, Pro as well as Therm only [↩](#a1)
 
 #### Response of Control Channels
 
 - `{"ack":"confirmation message"}` ... in case of success
 - `{"err":"error message"}`        ... in case of error
 
+The reaction of the Guntamatic Heating System can be monitored via the corresponding data channel. E.g. `programHc1` if you triggered `controlHeatCircProgram1`. The data channel gets updated with the next cyclic update (according to the `refreshInterval` configuration).
+
 ### Monitoring Channels
 
 The Binding dynamically generates Channels, derived from the data provided from the actual Guntamatic Heating System.
index 1d52bcff6113465adad0fbdc4b638b91ae3c65f7..917838aa91ad4cd20e5c082d945b82526ad0cecf 100644 (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,
index 442c8521ac300b827d5d378bbedefe586adf89ce..abca7d469da394bd63e4bd2d8c403d7b04aedaa9 100644 (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",
index 6ef605aedd0946a5b3be10cc31777e63bfd123a0..6b32053ecad03359140ac1b9bbbaef29d3c5d8aa 100644 (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;
index 8d3e99cc4632c32b45632173e32cf2ca3db82f0b..844919ee589a6fc9638076486912ccd7a2ce4485 100644 (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
index a47745155c6580e221d50976510f364b876010b6..676cb34deb5043f6a7dff75215de1c6db88962e4 100644 (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">
                </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">
        <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">
        <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">
        <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">
        <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">
                </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>
                        </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>