[miele] State/program/phase: Add raw channels and improve text channels (#11341)

* Add raw channels for state, program and phase.
* Provide program/phase texts when missing from XGW 3000 and for multicast.
* Consistent handling of missing program/phase text across all appliance types.
* Fix tumble dryer example configuration.
* Changed tumble dryer Finished phase text for consistency.

Fixes #11335

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
This commit is contained in:
jlaur
2021-10-10 20:34:55 +02:00
committed by GitHub
parent d4e15bfbd6
commit 01c0b199fd
23 changed files with 690 additions and 46 deletions

View File

@@ -32,7 +32,7 @@ When an XGW3000 gateway is discovered, all appliances can be subsequently discov
## Thing Configuration
Each appliances needs the device UID as a configuration parameter.
Each appliance needs the device UID as a configuration parameter.
The UID is nowhere to be found on the appliances, but since the discovery works quite reliably, a manual configuration is not needed.
Once you got hold of the IDs, a manual configuration looks like this:
@@ -55,17 +55,306 @@ Thing coffeemachine coffeemachine [uid="001d63fffe020505#190"]
## Channels
The definition of the channels in use can best be checked in the [source repository](https://github.com/openhab/openhab-addons/tree/main/bundles/org.openhab.binding.miele/src/main/resources/OH-INF/thing).
See below which channels are available for each appliance type. Raw program and phase values are individual for each appliance type,
while these raw state values are unique across all appliance types:
## Example
| State | Description | Appliances |
|-------|------------------------------|-----------------------------------------------------------------|
| 0 | Unknown | All |
| 1 | Off | All |
| 2 | Stand-By | All |
| 3 | Programmed | Coffee Machine, Dishwasher, Oven, Tumble Dryer, Washing Machine |
| 4 | Waiting to Start | Coffee Machine, Dishwasher, Oven, Tumble Dryer, Washing Machine |
| 5 | Running | All |
| 6 | Paused | Coffee Machine, Dishwasher, Oven, Tumble Dryer, Washing Machine |
| 7 | End | Coffee Machine, Dishwasher, Oven, Tumble Dryer, Washing Machine |
| 8 | Failure | All |
| 9 | Abort | Coffee Machine, Dishwasher, Oven, Tumble Dryer, Washing Machine |
| 10 | Idle | All |
| 11 | Rinse Hold | Washing Machine, Tumble Dryer |
| 12 | Service | All |
| 13 | Super Freezing | Fridge/Freezer combination |
| 14 | Super Cooling | Fridge, Fridge/Freezer combination |
| 15 | Super Heating | Hob |
| 144 | Default | All |
| 145 | Locked | All |
| 146 | Super Cooling/Super Freezing | Fridge/Freezer combination |
| 255 | Not Connected | All |
demo.items:
### Coffee Machine
| Channel | Type | Read/write | Description |
|---------------------|----------------------|------------|---------------------------------------------------------------------|
| state | String | Read | Current status of the appliance |
| rawState | Number | Read | Current status of the appliance as raw number |
| program | String | Read | Current program or function running on the appliance |
| rawProgram | Number | Read | Current program or function running on the appliance as raw number |
| type | String | Read | Type of the program running on the appliance |
| 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 |
| switch | Switch | Write | Switch the appliance on or off |
### Dishwasher
| Channel | Type | Read/write | Description |
|---------------------|----------------------|------------|---------------------------------------------------------------------|
| state | String | Read | Current status of the appliance |
| rawState | Number | Read | Current status of the appliance as raw number |
| program | String | Read | Current program or function running on the appliance |
| rawProgram | Number | Read | Current program or function running on the appliance as raw number |
| 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 |
| start | DateTime | Read | Programmed start time of the program |
| duration | DateTime | Read | Duration of the program running on the appliance |
| elapsed | DateTime | Read | Time elapsed in the program running on the appliance |
| finish | DateTime | Read | Time to finish the program running on the appliance |
| door | Contact | Read | Current state of the door of the appliance |
| switch | Switch | Write | Switch the appliance on or off |
| powerConsumption | Number:Power | Read | Power consumption by the currently running program on the appliance |
| waterConsumption | Number:Volume | Read | Water consumption by the currently running program on the appliance |
### Fridge
| Channel | Type | Read/write | Description |
|---------------------|----------------------|------------|---------------------------------------------------------------------|
| state | String | Read | Current status of the appliance |
| rawState | Number | Read | Current status of the appliance as raw number |
| supercool | Switch | Read/Write | Start or stop Super Cooling |
| 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 |
| switch | Switch | Write | Switch the appliance on or off |
### Fridge/Freezer combination
| Channel | Type | Read/write | Description |
|---------------------|----------------------|------------|---------------------------------------------------------------------|
| state | String | Read | Current status of the appliance |
| rawState | Number | Read | Current status of the appliance as raw number |
| freezerstate | String | Read | Current status of the freezer compartment |
| fridgestate | String | Read | Current status of the fridge compartment |
| supercool | Switch | Read/Write | Start or stop Super Cooling |
| superfreeze | Switch | Read/Write | Start or stop Super Freezing |
| freezercurrent | Number:Temperature | Read | Current temperature in the freezer compartment |
| freezertarget | Number:Temperature | Read | Target temperature to be reached by the freezer compartment |
| 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 |
| start | Switch | Write | Switch the appliance on or off |
### Hob
| Channel | Type | Read/write | Description |
|---------------------|----------------------|------------|---------------------------------------------------------------------|
| state | String | Read | Current status of the appliance |
| rawState | Number | Read | Current status of the appliance as raw number |
| plate1power | Number | Read | Power level of heating zone/plate 1 |
| plate1heat | Number | Read | Remaining heat level of heating zone/plate 1 |
| plate1time | String | Read | Remaining time of heating zone/plate 1 |
| plate2power | Number | Read | Power level of heating zone/plate 2 |
| plate2heat | Number | Read | Remaining heat level of heating zone/plate 2 |
| plate2time | String | Read | Remaining time of heating zone/plate 2 |
| plate3power | Number | Read | Power level of heating zone/plate 3 |
| plate3heat | Number | Read | Remaining heat level of heating zone/plate 3 |
| plate3time | String | Read | Remaining time of heating zone/plate 3 |
| plate4power | Number | Read | Power level of heating zone/plate 4 |
| plate4heat | Number | Read | Remaining heat level of heating zone/plate 4 |
| plate4time | String | Read | Remaining time of heating zone/plate 4 |
| plate5power | Number | Read | Power level of heating zone/plate 5 |
| plate5heat | Number | Read | Remaining heat level of heating zone/plate 5 |
| plate5time | String | Read | Remaining time of heating zone/plate 5 |
| plate6power | Number | Read | Power level of heating zone/plate 6 |
| plate6heat | Number | Read | Remaining heat level of heating zone/plate 6 |
| plate6time | String | Read | Remaining time of heating zone/plate 6 |
### Hood
| Channel | Type | Read/write | Description |
|---------------------|----------------------|------------|---------------------------------------------------------------------|
| state | String | Read | Current status of the appliance |
| rawState | Number | Read | Current status of the appliance as raw number |
| light | Switch | Write | Switch the appliance on or off |
| ventilation | Number | Read | Current ventilation power |
| stop | Switch | Write | Stop the appliance |
### Oven
| Channel | Type | Read/write | Description |
|---------------------|----------------------|------------|---------------------------------------------------------------------|
| state | String | Read | Current status of the appliance |
| rawState | Number | Read | Current status of the appliance as raw number |
| program | String | Read | Current program or function running on the appliance |
| rawProgram | Number | Read | Current program or function running on the appliance as raw number |
| type | String | Read | Type of the program running on the appliance |
| 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 |
| start | DateTime | Read | Programmed start time of the program |
| duration | DateTime | Read | Duration of the program running on the appliance |
| elapsed | DateTime | Read | Time elapsed in the program running on the appliance |
| finish | DateTime | Read | Time to finish the program running on the appliance |
| target | Number:Temperature | Read | Target temperature to be reached by the oven |
| measured | Number:Temperature | Read | Actual measured temperature in the oven |
| 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 |
| switch | Switch | Write | Switch the appliance on or off |
| stop | Switch | Write | Stop the appliance |
### Microwave/Oven combination
See oven.
### Tumble Dryer
| Channel | Type | Read/write | Description |
|---------------------|----------------------|------------|---------------------------------------------------------------------|
| state | String | Read | Current status of the appliance |
| rawState | Number | Read | Current status of the appliance as raw number |
| program | String | Read | Current program or function running on the appliance |
| rawProgram | Number | Read | Current program or function running on the appliance as raw number |
| type | String | Read | Type of the program running on the appliance |
| 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 |
| start | DateTime | Read | Programmed start time of the program |
| duration | DateTime | Read | Duration of the program running on the appliance |
| elapsed | DateTime | Read | Time elapsed in the program running on the appliance |
| finish | DateTime | Read | Time to finish the program running on the appliance |
| door | Contact | Read | Current state of the door of the appliance |
| switch | Switch | Write | Switch the appliance on or off |
| step | Number | Read | Current step in the program running on the appliance |
### Washing Machine
| Channel | Type | Read/write | Description |
|---------------------|----------------------|------------|---------------------------------------------------------------------|
| state | String | Read | Current status of the appliance |
| rawState | Number | Read | Current status of the appliance as raw number |
| program | String | Read | Current program or function running on the appliance |
| rawProgram | Number | Read | Current program or function running on the appliance as raw number |
| type | String | Read | Type of the program running on the appliance |
| 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 |
| start | DateTime | Read | Programmed start time of the program |
| duration | DateTime | Read | Duration of the program running on the appliance |
| elapsed | DateTime | Read | Time elapsed in the program running on the appliance |
| finish | DateTime | Read | Time to finish the program running on the appliance |
| door | Contact | Read | Current state of the door of the appliance |
| switch | Switch | Write | Switch the appliance on or off |
| target | Number:Temperature | Read | Temperature of the selected program |
| spinningspeed | String | Read | Spinning speed in the program running on the appliance |
| powerConsumption | Number:Power | Read | Power consumption by the currently running program on the appliance |
| waterConsumption | Number:Volume | Read | Water consumption by the currently running program on the appliance |
# Configuration Examples
## things/miele.things
```
String MieleFridgeState (gMiele,gMieleFridge) {channel="miele:fridge:dilbeek:fridge:state"}
Switch MieleFridgeSuperCool (gMiele,gMieleFridge) {channel="miele:fridge:dilbeek:fridge:supercool"}
Number:Temperature MieleFridgeCurrent (gMiele,gMieleFridge) {channel="miele:fridge:dilbeek:fridge:current"}
Number:Temperature MieleFridgeTarget (gMiele,gMieleFridge) {channel="miele:fridge:dilbeek:fridge:target"}
Contact MieleFridgeDoor (gMiele,gMieleFridge) {channel="miele:fridge:dilbeek:fridge:door"}
Switch MieleFridgeStart (gMiele,gMieleFridge) {channel="miele:fridge:dilbeek:fridge:start"}
Bridge miele:xgw3000:home [ipAddress="192.168.0.18", interface="192.168.0.5"] {
Things:
Thing fridgefreezer freezer [uid="00124b000424be44#2"]
Thing hood hood [uid="001d63fffe020685#210"]
Thing fridge fridge [uid="00124b000424bdc0#2"]
Thing oven oven [uid="001d63fffe020390#210"]
Thing oven microwave [uid="001d63fffe0206eb#210"]
Thing hob hob [uid="00124b000424bed7#2"]
Thing dishwasher dishwasher [uid="001d63fffe020683#210"]
Thing tumbledryer tumbledryer [uid="001d63fffe0200ba#210"]
Thing washingmachine washingmachine [uid="001d63fffe020505#210"]
Thing coffeemachine coffeemachine [uid="001d63fffe020505#190"]
}
```
## items/miele.items
```
String Dishwasher_State {channel="miele:dishwasher:home:dishwasher:state"}
Number Dishwasher_RawState {channel="miele:dishwasher:home:dishwasher:rawState"}
String Dishwasher_Program "Program [%s]" {channel="miele:dishwasher:home:dishwasher:program"}
String Dishwasher_Phase "Phase [%s]" {channel="miele:dishwasher:home:dishwasher:phase"}
DateTime Dishwasher_ElapsedTime "Elapsed time" <time> {channel="miele:dishwasher:home:dishwasher:elapsed"}
DateTime Dishwasher_FinishTime "Remaining time" <time> {channel="miele:dishwasher:home:dishwasher:finish"}
Number:Power Dishwasher_PowerConsumption {channel="miele:dishwasher:home:dishwasher:powerConsumption"}
Number:Volume Dishwasher_WaterConsumption {channel="miele:dishwasher:home:dishwasher:waterConsumption"}
String Fridge_State {channel="miele:fridge:home:fridge:state"}
Contact Fridge_Door {channel="miele:fridge:home:fridge:door"}
Switch Fridge_SuperCool {channel="miele:fridge:home:fridge:supercool"}
Number:Temperature Fridge_CurrentTemperature <temperature> {channel="miele:fridge:home:fridge:current"}
Number:Temperature Fridge_TargetTemperature <temperature> {channel="miele:fridge:home:fridge:target"}
Switch Fridge_Start {channel="miele:fridge:home:fridge:start"}
String Oven_State {channel="miele:oven:home:oven:state"}
Number Oven_RawState {channel="miele:oven:home:oven:rawState"}
String Oven_Program "Program [%s]" {channel="miele:oven:home:oven:program"}
String Oven_Phase "Phase [%s]" {channel="miele:oven:home:oven:phase"}
DateTime Oven_ElapsedTime "Elapsed time" <time> {channel="miele:oven:home:oven:elapsed"}
DateTime Oven_FinishTime "Remaining time" <time> {channel="miele:oven:home:oven:finish"}
Number:Temperature Oven_CurrentTemperature <temperature> {channel="miele:oven:home:oven:measured"}
Number:Temperature Oven_TargetTemperature <temperature> {channel="miele:oven:home:oven:target"}
Switch Oven_Stop {channel="miele:oven:home:oven:stop", autoupdate="false"}
String WashingMachine_State {channel="miele:washingmachine:home:washingmachine:state"}
Number WashingMachine_RawState {channel="miele:washingmachine:home:washingmachine:rawState"}
String WashingMachine_Program "Program [%s]" {channel="miele:washingmachine:home:washingmachine:program"}
String WashingMachine_Phase "Phase [%s]" {channel="miele:washingmachine:home:washingmachine:phase"}
Number:Temperature WashingMachine_Temperature <temperature> {channel="miele:washingmachine:home:washingmachine:target"}
String WashingMachine_SpinningSpeed {channel="miele:washingmachine:home:washingmachine:spinningspeed"}
DateTime WashingMachine_ElapsedTime "Elapsed time" <time> {channel="miele:washingmachine:home:washingmachine:elapsed"}
DateTime WashingMachine_FinishTime "Remaining time" <time> {channel="miele:washingmachine:home:washingmachine:finish"}
Number:Power WashingMachine_PowerConsumption {channel="miele:washingmachine:home:washingmachine:powerConsumption"}
Number:Volume WashingMachine_WaterConsumption {channel="miele:washingmachine:home:washingmachine:waterConsumption"}
String TumbleDryer_State {channel="miele:tumbledryer:home:tumbledryer:state"}
Number TumbleDryer_RawState {channel="miele:tumbledryer:home:tumbledryer:rawState"}
String TumbleDryer_Program "Program [%s]" {channel="miele:tumbledryer:home:tumbledryer:program"}
String TumbleDryer_Phase "Phase [%s]" {channel="miele:tumbledryer:home:tumbledryer:phase"}
DateTime TumbleDryer_ElapsedTime "Elapsed time" <time> {channel="miele:tumbledryer:home:tumbledryer:elapsed"}
DateTime TumbleDryer_FinishTime "Remaining time" <time> {channel="miele:tumbledryer:home:tumbledryer:finish"}
```
## sitemaps/miele.sitemap
```
sitemap miele label="Miele" {
Frame label="Miele" {
Text item=Oven_State label="Oven [%s]" icon="kitchen" {
Text item=Oven_Program visibility=[Oven_RawState>1]
Text item=Oven_Phase visibility=[Oven_Phase!=UNDEF]
Text item=Oven_ElapsedTime
Text item=Oven_FinishTime
Switch item=Oven_Stop
}
Text item=WashingMachine_State label="Washing Machine [%s]" icon="washingmachine" {
Text item=WashingMachine_Program visibility=[WashingMachine_RawState>1]
Text item=WashingMachine_Temperature visibility=[WashingMachine_Program!=UNDEF]
Text item=WashingMachine_SpinningSpeed visibility=[WashingMachine_Program!=UNDEF]
Text item=WashingMachine_Phase visibility=[WashingMachine_Phase!=UNDEF]
Text item=WashingMachine_ElapsedTime
Text item=WashingMachine_FinishTime
Text item=WashingMachine_PowerConsumption
Text item=WashingMachine_WaterConsumption
}
Text item=TumbleDryer_State label="Tumble Dryer [%s]" icon="dryer" {
Text item=TumbleDryer_Program visibility=[TumbleDryer_RawState>1]
Text item=TumbleDryer_Phase visibility=[TumbleDryer_Phase!=UNDEF]
Text item=TumbleDryer_ElapsedTime
Text item=TumbleDryer_FinishTime
}
Text item=Dishwasher_State label="Dishwasher [%s]" icon="dryer" {
Text item=Dishwasher_Program visibility=[Dishwasher_RawState>1]
Text itemDishwasher_Phase visibility=[Dishwasher_Phase!=UNDEF]
Text item=Dishwasher_ElapsedTime
Text item=Dishwasher_FinishTime
Text item=Dishwasher_PowerConsumption
Text item=Dishwasher_WaterConsumption
}
Text item=Fridge_CurrentTemperature label="Fridge" icon="climate" {
Text item=Fridge_CurrentTemperature
Text item=Fridge_TargetTemperature
Switch item=Fridge_SuperCool icon="snow"
}
}
}
```