Design - astrandb/miele GitHub Wiki
How Miele devices are represented in Home Assistant
Background
There is no simple solution to map the functions of a Miele houshold appliance to the available tools in Home Assistant. The situation is quite complex with the physical device, Miele's own mobile apps, the public 3:rd party API and the capabilities of Home Assistant. The official documentation from Miele is also sparse and in many cases incorrect. Different models of e.g. washing machines are also behaving differently when it comes to presentation of status and possibility to control functions.
This integration is a best effort attempt to enable monitoring and control of suppported appliances from Miele. It can never be perfect but it should be good enough for most users.
All help with debugging, PR:s and requests for new features are welcomed.
General design philosophy
The device capabilities matrix from Miele is used as a base for creating interface elements in HA. However the available matrix is both incorrect and incomplete comapred to the real world so there are excemptions and additions in the integration.
-
Sensors and binary sensors are used to display numeric and text values from the API. The ambition is to present all relevant data in HA so that it can displayed in the UI and used for automations and scripts.
-
Controlling the devices and changing of settings are represented by the available platforms in HA. Switches, buttons, lights, climate entities are used where applicable. The switch is used when there is a clear on/off function and the API will report the current state in an unambiguous way. The toggle for Superfreeze on a Freezer is a typical example. Other functions, such at start and stop of a program, where the status is not a simple on/off, buttons are used instead a interface element.
-
Setting of programs is not supported with interface elements in HA. These functions can be handled with service calls from automations or scripts.
-
The less common sensors and controls are created as hidden entities in HA in order to avoid cluttering of the UI. These entities can easily be enabled by the user if needed.
-
Changes in device status are pushed in real time from the API. The updates are perceived as immediate most of the times, but sometimes it can take a couple of seconds or even more. Polling of status every minute is used as a backup if the real time stream stops.