]> git.basschouten.com Git - openhab-addons.git/commitdiff
Add information/failure channels (#16463)
authorJacob Laursen <jacob-github@vindvejr.dk>
Sun, 3 Mar 2024 09:21:26 +0000 (10:21 +0100)
committerGitHub <noreply@github.com>
Sun, 3 Mar 2024 09:21:26 +0000 (10:21 +0100)
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
18 files changed:
bundles/org.openhab.binding.miele/README.md
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/CoffeeMachineChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/DishwasherChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/FridgeChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/FridgeFreezerChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/OvenChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/TumbleDryerChannelSelector.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/WashingMachineChannelSelector.java
bundles/org.openhab.binding.miele/src/main/resources/OH-INF/i18n/miele.properties
bundles/org.openhab.binding.miele/src/main/resources/OH-INF/thing/channeltypes.xml
bundles/org.openhab.binding.miele/src/main/resources/OH-INF/thing/coffeemachine.xml
bundles/org.openhab.binding.miele/src/main/resources/OH-INF/thing/dishwasher.xml
bundles/org.openhab.binding.miele/src/main/resources/OH-INF/thing/fridge.xml
bundles/org.openhab.binding.miele/src/main/resources/OH-INF/thing/fridgefreezer.xml
bundles/org.openhab.binding.miele/src/main/resources/OH-INF/thing/oven.xml
bundles/org.openhab.binding.miele/src/main/resources/OH-INF/thing/tumbledryer.xml
bundles/org.openhab.binding.miele/src/main/resources/OH-INF/thing/washingmachine.xml
bundles/org.openhab.binding.miele/src/main/resources/OH-INF/update/instructions.xml

index 532702d11bca7d22f64b4e170dda3121b8f50918..4dabad472324631f7e750a04e6785ed1085a4933 100644 (file)
@@ -45,18 +45,18 @@ discovery.miele:removalGracePeriod=30
 
 ### Thing Configuration for Miele XGW3000
 
-| Configuration Parameter | Description   |
-|-------------------------|---------------|
-| ipAddress               | Network address of the Miele@home gateway |
+| Configuration Parameter | Description                                                                                                                      |
+|-------------------------|----------------------------------------------------------------------------------------------------------------------------------|
+| ipAddress               | Network address of the Miele@home gateway                                                                                        |
 | interface               | Network address of openHAB host interface where the binding will listen for multicast events coming from the Miele@home gateway. |
-| userName                | Name of a registered Miele@home user. |
-| password                | Password for the registered Miele@home user. |
-| language                | Language for state, program and phase texts. Leave blank for system language. |
+| userName                | Name of a registered Miele@home user.                                                                                            |
+| password                | Password for the registered Miele@home user.                                                                                     |
+| language                | Language for state, program and phase texts. Leave blank for system language.                                                    |
 
 ### Thing Configuration for appliance
 
-| Configuration Parameter | Description   |
-|-------------------------|---------------|
+| Configuration Parameter | Description                                              |
+|-------------------------|----------------------------------------------------------|
 | uid                     | Unique identifier for specific appliance on the gateway. |
 
 Each appliance needs the device UID as a configuration parameter.
@@ -112,6 +112,8 @@ Channels available for each appliance type are listed below.
 | phase               | String               | Read       | Current phase of the program running on the appliance               |
 | rawPhase            | Number               | Read       | Current phase of the program running on the appliance as raw number |
 | door                | Contact              | Read       | Current state of the door of the appliance                          |
+| info                | Switch               | Read       | Signals information, check appliance for details                    |
+| failure             | Switch               | Read       | Signals failure, check appliance for details                        |
 | switch              | Switch               | Write      | Switch the appliance on or off                                      |
 
 #### Dishwasher
@@ -130,6 +132,8 @@ Channels available for each appliance type are listed below.
 | elapsed             | Number:Time          | Read       | Time elapsed in the program running on the appliance                 |
 | finish              | Number:Time          | Read       | Time to finish the program running on the appliance                  |
 | door                | Contact              | Read       | Current state of the door of the appliance                           |
+| info                | Switch               | Read       | Signals information, check appliance for details                     |
+| failure             | Switch               | Read       | Signals failure, check appliance for details                         |
 | switch              | Switch               | Write      | Switch the appliance on or off                                       |
 | energyConsumption   | Number:Energy        | Read       | Energy consumption by the currently running program on the appliance |
 | waterConsumption    | Number:Volume        | Read       | Water consumption by the currently running program on the appliance  |
@@ -172,6 +176,8 @@ Channels available for each appliance type are listed below.
 | current             | Number:Temperature   | Read       | Current temperature in the fridge                                   |
 | target              | Number:Temperature   | Read       | Target temperature to be reached by the fridge                      |
 | door                | Contact              | Read       | Current state of the door of the appliance                          |
+| info                | Switch               | Read       | Signals information, check appliance for details                    |
+| failure             | Switch               | Read       | Signals failure, check appliance for details                        |
 | switch              | Switch               | Write      | Switch the appliance on or off                                      |
 
 #### Fridge/Freezer combination
@@ -189,6 +195,8 @@ Channels available for each appliance type are listed below.
 | fridgecurrent       | Number:Temperature   | Read       | Current temperature in the fridge compartment                       |
 | fridgetarget        | Number:Temperature   | Read       | Target temperature to be reached by the fridge compartment          |
 | door                | Contact              | Read       | Current state of the door of the appliance                          |
+| info                | Switch               | Read       | Signals information, check appliance for details                    |
+| failure             | Switch               | Read       | Signals failure, check appliance for details                        |
 | start               | Switch               | Write      | Switch the appliance on or off                                      |
 
 #### Hob
@@ -247,6 +255,8 @@ Channels available for each appliance type are listed below.
 | temp1               | Number:Temperature   | Read       | Program temperature in the oven 1                                   |
 | temp2               | Number:Temperature   | Read       | Program temperature in the oven 2                                   |
 | door                | Contact              | Read       | Current state of the door of the appliance                          |
+| info                | Switch               | Read       | Signals information, check appliance for details                    |
+| failure             | Switch               | Read       | Signals failure, check appliance for details                        |
 | switch              | Switch               | Write      | Switch the appliance on or off                                      |
 | stop                | Switch               | Write      | Stop the appliance                                                  |
 
@@ -286,6 +296,8 @@ See oven.
 | elapsed             | Number:Time          | Read       | Time elapsed in the program running on the appliance                |
 | finish              | Number:Time          | Read       | Time to finish the program running on the appliance                 |
 | door                | Contact              | Read       | Current state of the door of the appliance                          |
+| info                | Switch               | Read       | Signals information, check appliance for details                    |
+| failure             | Switch               | Read       | Signals failure, check appliance for details                        |
 | switch              | Switch               | Write      | Switch the appliance on or off                                      |
 | step                | Number               | Read       | Current step in the program running on the appliance                |
 
@@ -351,6 +363,8 @@ See oven.
 | elapsed             | Number:Time          | Read       | Time elapsed in the program running on the appliance                 |
 | finish              | Number:Time          | Read       | Time to finish the program running on the appliance                  |
 | door                | Contact              | Read       | Current state of the door of the appliance                           |
+| info                | Switch               | Read       | Signals information, check appliance for details                     |
+| failure             | Switch               | Read       | Signals failure, check appliance for details                         |
 | switch              | Switch               | Write      | Switch the appliance on or off                                       |
 | target              | Number:Temperature   | Read       | Temperature of the selected program (10 °C = cold)                   |
 | spinningspeed       | String               | Read       | Spinning speed in the program running on the appliance               |
index 2f9e0dcbc5d02cae16096d2c23bd9a3169b9cf2d..12d8e15609e10aa00bb18dcca8fb993a3ab8d8e5 100644 (file)
@@ -67,7 +67,7 @@ public enum CoffeeMachineChannelSelector implements ApplianceChannelSelector {
         }
     },
     PROGRAM_PHASE(RAW_PHASE_PROPERTY_NAME, PHASE_CHANNEL_ID, DecimalType.class, false),
-    // lightingStatus signalFailure signalInfo
+    // lightingStatus
     DOOR("signalDoor", "door", OpenClosedType.class, false) {
         @Override
         public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
@@ -82,6 +82,18 @@ public enum CoffeeMachineChannelSelector implements ApplianceChannelSelector {
             return UnDefType.UNDEF;
         }
     },
+    INFO("signalInfo", "info", OnOffType.class, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
+    FAILURE("signalFailure", "failure", OnOffType.class, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
     SWITCH("", "switch", OnOffType.class, false);
 
     private final Logger logger = LoggerFactory.getLogger(CoffeeMachineChannelSelector.class);
index 6c6c6387ba78ff179961aa7e015707e393dc4fbd..3ebc8c9decd33939e3b22d094f748c834144096b 100644 (file)
@@ -108,6 +108,18 @@ public enum DishwasherChannelSelector implements ApplianceChannelSelector {
             return UnDefType.UNDEF;
         }
     },
+    INFO("signalInfo", "info", OnOffType.class, false, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
+    FAILURE("signalFailure", "failure", OnOffType.class, false, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
     SWITCH("", "switch", OnOffType.class, false, false),
     ENERGY_CONSUMPTION(EXTENDED_DEVICE_STATE_PROPERTY_NAME, ENERGY_CONSUMPTION_CHANNEL_ID, QuantityType.class, false,
             true),
index 2a3b7cb84a0d713e682c6c2d6578581f6b61466c..75875540e5d370f1fe89cbc487aff231326375ea 100644 (file)
@@ -78,6 +78,18 @@ public enum FridgeChannelSelector implements ApplianceChannelSelector {
             return UnDefType.UNDEF;
         }
     },
+    INFO("signalInfo", "info", OnOffType.class, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
+    FAILURE("signalFailure", "failure", OnOffType.class, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
     START("", "start", OnOffType.class, false);
 
     private final Logger logger = LoggerFactory.getLogger(FridgeChannelSelector.class);
index 47889f3a9b0b5f462e008a38203b5f0d12f43389..258858832a28091049e0ae933787cb5e8cc0222d 100644 (file)
@@ -93,6 +93,18 @@ public enum FridgeFreezerChannelSelector implements ApplianceChannelSelector {
             return UnDefType.UNDEF;
         }
     },
+    INFO("signalInfo", "info", OnOffType.class, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
+    FAILURE("signalFailure", "failure", OnOffType.class, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
     START("", "start", OnOffType.class, false);
 
     private final Logger logger = LoggerFactory.getLogger(FridgeFreezerChannelSelector.class);
index 6d3a973fd4e952f85bb7d374d268e1b50c5020f4..2fd9d133720646f13c688ee52f8ffda2b7e72feb 100644 (file)
@@ -127,6 +127,18 @@ public enum OvenChannelSelector implements ApplianceChannelSelector {
             return UnDefType.UNDEF;
         }
     },
+    INFO("signalInfo", "info", OnOffType.class, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
+    FAILURE("signalFailure", "failure", OnOffType.class, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
     STOP("", "stop", OnOffType.class, false),
     SWITCH("", "switch", OnOffType.class, false);
 
index 09893a7e054e05827654d273a29d1914a246414a..d869f54cd9356ddd60ee880332f004dffee2725f 100644 (file)
@@ -116,6 +116,18 @@ public enum TumbleDryerChannelSelector implements ApplianceChannelSelector {
             return UnDefType.UNDEF;
         }
     },
+    INFO("signalInfo", "info", OnOffType.class, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
+    FAILURE("signalFailure", "failure", OnOffType.class, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
     SWITCH("", "switch", OnOffType.class, false);
 
     private final Logger logger = LoggerFactory.getLogger(TumbleDryerChannelSelector.class);
index d6ac06c4be2ed2133a059c2b892871238a8ccc20..b590e790fc579f67692d6dca77c2d1a6f24c6d64 100644 (file)
@@ -127,6 +127,18 @@ public enum WashingMachineChannelSelector implements ApplianceChannelSelector {
             return UnDefType.UNDEF;
         }
     },
+    INFO("signalInfo", "info", OnOffType.class, false, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
+    FAILURE("signalFailure", "failure", OnOffType.class, false, false) {
+        @Override
+        public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationProvider translationProvider) {
+            return OnOffType.from("true".equals(s));
+        }
+    },
     SWITCH("", "switch", OnOffType.class, false, false),
     ENERGY_CONSUMPTION(EXTENDED_DEVICE_STATE_PROPERTY_NAME, ENERGY_CONSUMPTION_CHANNEL_ID, QuantityType.class, false,
             true),
index 96c1c92037ecacd7a02a5575601fac4c1fe8ac4c..bf5106ca868f3aa28e7a65ea672d4fdff82c057b 100644 (file)
@@ -72,6 +72,8 @@ channel-type.miele.end.label = End Time
 channel-type.miele.end.description = End time of the program (programmed or running)
 channel-type.miele.energy-consumption.label = Energy Consumption
 channel-type.miele.energy-consumption.description = Energy consumption by the currently running program on the appliance
+channel-type.miele.failure.label = Signal Failure
+channel-type.miele.failure.description = Signals failure, check appliance for details
 channel-type.miele.finish.label = Finish Time
 channel-type.miele.finish.description = Time to finish the program running on the appliance
 channel-type.miele.finish.state.pattern = %1$tR
@@ -81,6 +83,8 @@ channel-type.miele.fridgestate.label = Status
 channel-type.miele.fridgestate.description = Current status of the fridge compartment
 channel-type.miele.heat.label = Remaining Heat
 channel-type.miele.heat.description = Remaining heat level of the heating zone/plate
+channel-type.miele.info.label = Signal Information
+channel-type.miele.info.description = Signals information, check appliance for details
 channel-type.miele.phase.label = Phase
 channel-type.miele.phase.description = Current phase of the program running on the appliance
 channel-type.miele.plates.label = Plates
index 20bfc8b67ae30d04c1f0e172dcb9eddca1501edf..5bfc1e0b02a66a2c02331ba85506defdb5ad26c8 100644 (file)
                <state readOnly="true"></state>
        </channel-type>
 
+       <channel-type id="info" advanced="true">
+               <item-type>Switch</item-type>
+               <label>Signal Information</label>
+               <description>Signals information, check appliance for details</description>
+               <state readOnly="true"></state>
+       </channel-type>
+
+       <channel-type id="failure" advanced="true">
+               <item-type>Switch</item-type>
+               <label>Signal Failure</label>
+               <description>Signals failure, check appliance for details</description>
+               <category>Error</category>
+               <state readOnly="true"></state>
+       </channel-type>
+
        <channel-type id="switch">
                <item-type>Switch</item-type>
                <label>Switch</label>
index 92d7a9c3cddb2c2d250e437ee860ed285ee6bce5..3edc78cb7715170fe329e372317b5cae41e99fa6 100644 (file)
                        <channel id="phase" typeId="phase"/>
                        <channel id="rawPhase" typeId="rawPhase"/>
                        <channel id="door" typeId="door"/>
+                       <channel id="info" typeId="info"/>
+                       <channel id="failure" typeId="failure"/>
                        <channel id="switch" typeId="switch"/>
                </channels>
 
+               <properties>
+                       <property name="thingTypeVersion">1</property>
+               </properties>
+
                <representation-property>uid</representation-property>
 
                <config-description-ref uri="thing-type:miele:appliance"/>
index eb2b1f524233d2916f59e0945b4d637a8740553a..ba93b6e930599c61dcec73803132507fd4d87e47 100644 (file)
                        <channel id="elapsed" typeId="elapsed"/>
                        <channel id="finish" typeId="finish"/>
                        <channel id="door" typeId="door"/>
+                       <channel id="info" typeId="info"/>
+                       <channel id="failure" typeId="failure"/>
                        <channel id="switch" typeId="switch"/>
                        <channel id="energyConsumption" typeId="energy-consumption"/>
                        <channel id="waterConsumption" typeId="water-consumption"/>
                </channels>
 
                <properties>
-                       <property name="thingTypeVersion">1</property>
+                       <property name="thingTypeVersion">2</property>
                </properties>
 
                <representation-property>uid</representation-property>
index 4685f0cfad65093fab0a2603e1632a5f6619bbee..272cb405517c07da38f6f0f22d2b05c8b61f3a53 100644 (file)
                                <description>Target temperature to be reached by the fridge</description>
                        </channel>
                        <channel id="door" typeId="door"/>
+                       <channel id="info" typeId="info"/>
+                       <channel id="failure" typeId="failure"/>
                        <channel id="start" typeId="switch"/>
                </channels>
 
+               <properties>
+                       <property name="thingTypeVersion">1</property>
+               </properties>
+
                <representation-property>uid</representation-property>
 
                <config-description-ref uri="thing-type:miele:appliance"/>
index 23fe18099daeacb37741fff98bb3f8ed395e5198..5ccbca2e61875da904330281212ced01c30714c5 100644 (file)
                                <description>Target temperature to be reached by the fridge compartment</description>
                        </channel>
                        <channel id="door" typeId="door"/>
+                       <channel id="info" typeId="info"/>
+                       <channel id="failure" typeId="failure"/>
                        <channel id="start" typeId="switch"/>
                </channels>
 
+               <properties>
+                       <property name="thingTypeVersion">1</property>
+               </properties>
+
                <representation-property>uid</representation-property>
 
                <config-description-ref uri="thing-type:miele:appliance"/>
index f73629332b265b2a089c53f3a6072b0f4d3f382d..1db6b9140bc6ba00ee0ccaf64f9a8b35d77cf956 100644 (file)
                                <description>Program temperature in the oven</description>
                        </channel>
                        <channel id="door" typeId="door"/>
+                       <channel id="info" typeId="info"/>
+                       <channel id="failure" typeId="failure"/>
                        <channel id="stop" typeId="stop"/>
                        <channel id="switch" typeId="switch"/>
                </channels>
 
+               <properties>
+                       <property name="thingTypeVersion">1</property>
+               </properties>
+
                <representation-property>uid</representation-property>
 
                <config-description-ref uri="thing-type:miele:appliance"/>
index 17421f6df47e48638c55b731f76cb01bd2de6b04..45d4b7804796bcd0c5f4a41f8dd4ae80dbaa1546 100644 (file)
                        <channel id="elapsed" typeId="elapsed"/>
                        <channel id="finish" typeId="finish"/>
                        <channel id="door" typeId="door"/>
+                       <channel id="info" typeId="info"/>
+                       <channel id="failure" typeId="failure"/>
                        <channel id="switch" typeId="switch"/>
                        <channel id="step" typeId="step"/>
                </channels>
 
+               <properties>
+                       <property name="thingTypeVersion">1</property>
+               </properties>
+
                <representation-property>uid</representation-property>
 
                <config-description-ref uri="thing-type:miele:appliance"/>
index 9f7c14fb8bbc3b4e5b49c8bf19a1a14f1533ec65..18644917017b0e0b27d8a9f808395d769e9dc2d9 100644 (file)
@@ -27,6 +27,8 @@
                        <channel id="elapsed" typeId="elapsed"/>
                        <channel id="finish" typeId="finish"/>
                        <channel id="door" typeId="door"/>
+                       <channel id="info" typeId="info"/>
+                       <channel id="failure" typeId="failure"/>
                        <channel id="switch" typeId="switch"/>
                        <channel id="target" typeId="targetTemperature">
                                <label>Temperature</label>
@@ -38,7 +40,7 @@
                </channels>
 
                <properties>
-                       <property name="thingTypeVersion">1</property>
+                       <property name="thingTypeVersion">2</property>
                </properties>
 
                <representation-property>uid</representation-property>
index bde4ddefba589fd59dfc7677cbf434ff2d98fc97..fdcf1676355004da2abc17c331c3d78c48966421 100644 (file)
@@ -3,6 +3,17 @@
        xmlns:update="https://openhab.org/schemas/update-description/v1.0.0"
        xsi:schemaLocation="https://openhab.org/schemas/update-description/v1.0.0 https://openhab.org/schemas/update-description-1.0.0.xsd">
 
+       <thing-type uid="miele:coffeemachine">
+               <instruction-set targetVersion="1">
+                       <add-channel id="info">
+                               <type>miele:info</type>
+                       </add-channel>
+                       <add-channel id="failure">
+                               <type>miele:failure</type>
+                       </add-channel>
+               </instruction-set>
+       </thing-type>
+
        <thing-type uid="miele:dishwasher">
                <instruction-set targetVersion="1">
                        <add-channel id="energyConsumption">
                        </update-channel>
                        <remove-channel id="powerConsumption"/>
                </instruction-set>
+               <instruction-set targetVersion="2">
+                       <add-channel id="info">
+                               <type>miele:info</type>
+                       </add-channel>
+                       <add-channel id="failure">
+                               <type>miele:failure</type>
+                       </add-channel>
+               </instruction-set>
+       </thing-type>
+
+       <thing-type uid="miele:fridge">
+               <instruction-set targetVersion="1">
+                       <add-channel id="info">
+                               <type>miele:info</type>
+                       </add-channel>
+                       <add-channel id="failure">
+                               <type>miele:failure</type>
+                       </add-channel>
+               </instruction-set>
+       </thing-type>
+
+       <thing-type uid="miele:fridgefreezer">
+               <instruction-set targetVersion="1">
+                       <add-channel id="info">
+                               <type>miele:info</type>
+                       </add-channel>
+                       <add-channel id="failure">
+                               <type>miele:failure</type>
+                       </add-channel>
+               </instruction-set>
+       </thing-type>
+
+       <thing-type uid="miele:oven">
+               <instruction-set targetVersion="1">
+                       <add-channel id="info">
+                               <type>miele:info</type>
+                       </add-channel>
+                       <add-channel id="failure">
+                               <type>miele:failure</type>
+                       </add-channel>
+               </instruction-set>
+       </thing-type>
+
+       <thing-type uid="miele:tumbledryer">
+               <instruction-set targetVersion="1">
+                       <add-channel id="info">
+                               <type>miele:info</type>
+                       </add-channel>
+                       <add-channel id="failure">
+                               <type>miele:failure</type>
+                       </add-channel>
+               </instruction-set>
        </thing-type>
 
        <thing-type uid="miele:washingmachine">
                        </update-channel>
                        <remove-channel id="powerConsumption"/>
                </instruction-set>
+               <instruction-set targetVersion="2">
+                       <add-channel id="info">
+                               <type>miele:info</type>
+                       </add-channel>
+                       <add-channel id="failure">
+                               <type>miele:failure</type>
+                       </add-channel>
+               </instruction-set>
        </thing-type>
 
 </update:update-descriptions>