From 1080a9ed69719f865ba96b8e645ce8d654806789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20S=20-=20Piper?= Date: Sun, 6 Apr 2025 20:25:52 +0000 Subject: [PATCH 01/14] Initial commit for Miele docs page --- source/_integrations/miele.markdown | 218 ++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 source/_integrations/miele.markdown diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown new file mode 100644 index 000000000000..505170f42740 --- /dev/null +++ b/source/_integrations/miele.markdown @@ -0,0 +1,218 @@ +--- +title: Miele +description: Instructions on how to set up the Miele integration within Home Assistant. +ha_category: + - Hub + - Sensor +ha_iot_class: Cloud Push +ha_release: '2025.5.0' +ha_domain: miele +ha_codeowners: + - '@astrandb' +ha_config_flow: true +ha_platforms: + - sensor +ha_integration_type: integration +--- + +The Miele integration allows users to integrate their home appliances using the [official 3rd party API](https://www.miele.com/developer). + +## Use cases + +- Monitor the multiple sensors of the appliance and trigger automations based on these sensors. +- Start programs on your appliances from your dashboard. +- Monitor the program status of the appliances. +- Control the light of your appliances. +- Adjust the appliance settings. + +{% note %} +Note that it depends on the appliance which of the features are supported. +{% endnote %} + +## Supported devices + +You can find information about supported devices on the [Miele website](https://www.miele.com/developer/capabilities.html). + +## Prerequisites + +1. Visit [https://www.miele.com/developer](https://www.miele.com/f/com/en/register_api.aspx) and sign up for a developer account. +2. Enter the email of your login for the original Miele app. + +3. On success, you will be redirected to the **Applications** page. Select **Details** for your app. Make note of the client ID and secret - you will need it for the next step. Log out of the Home Connect developer portal. +4. In Home Assistant, find the Home Connect integration and launch it. You will be prompted to create an [Application Credential](https://www.home-assistant.io/integrations/application_credentials). You will need to provide a name (it's arbitrary) in addition to the Client ID and Secret from the previous step. Then, follow the steps in the UI to complete setup. + +{% important %} + +- To update the appliance programs list, you can reload the Home Connect integration when an appliance is turned on. If the re-initialization process is not triggered by reload, restart the Home Assistant when an appliance is turned on. +- After performing the steps above, [log out](https://developer.home-connect.com/user/logout) of your Home Connect Developer account. If you don't do this, the configuration steps below will fail during OAuth authentication with the message `“error”: “unauthorized_client”`. +- The provided Miele User Account email address **must** be all lowercase; otherwise, it will result in authentication failures. +- All changes in the developer portal take couple of minutes before the change is implemented. + +{% endimportant %} + +{% details "I have manually disabled My Home Assistant" %} + +If you don't have [My Home Assistant](/integrations/my) on your installation, +you can use `/auth/external/callback` as the redirect URI +instead. + +The `` must be the same as used during the configuration/ +authentication process. + +Internal examples: `http://192.168.0.2:8123/auth/external/callback`, `http://homeassistant.local:8123/auth/external/callback`." + +{% enddetails %} + +{% include integrations/config_flow.md %} + +The integration configuration will ask for the *Client ID* and *Client Secret* created above. See [Application Credentials](/integrations/application_credentials) for more details. + +## Supported functionality + +{% note %} + +- The entities availability depends on the appliance type, but the appliance might not support all the entities for its type. +- Some appliances don't report data while they are turned off, so corresponding entities will not appear in the Home Connect integration after loading until the appliances are turned on. +{% endnote %} + +### Sensor + +### Sensor + +{% details "List of binary sensors" %} + +- **Operation state**: + - **Status**: Represents the current operation state of the device. + - **Availability**: All the appliances with programs +{% enddetails %} + +## Automation examples + +Get started with these automation examples + +### Send a notification when the appliance ends the program + +{% details "Example YAML configuration" %} + +{% raw %} + +```yaml +alias: "Notify when program ends" +triggers: + - trigger: state + entity_id: + - sensor.appliance_operation_state + to: finished +actions: + - service: notify.notify + data: + message: "The appliance has finished the program." +``` + +{% endraw %} +{% enddetails %} + +### Start a program when electricity is cheap + +Because electricity is typically cheaper at night, this automation will activate the silent mode when starting the program at night. + +{% details "Example YAML configuration" %} + +{% raw %} + +```yaml +alias: "Start program when electricity is cheap" +triggers: + - trigger: state + entity_id: sensor.electricity_price + to: "0.10" +conditions: + - condition: state + entity_id: sensor.diswasher_door + state: closed +actions: + - if: + - condition: time + after: '22:00:00' + before: '06:00:00' + then: + - service: home_connect.set_program_and_options + data: + device_id: "your_device_id" + affects_to: "active_program" + program: "dishcare_dishwasher_program_eco_50" + options: + - key: "dishcare_dishwasher_option_silence_on_demand" + value: true + else: + - service: home_connect.set_program_and_options + data: + device_id: "your_device_id" + affects_to: "active_program" + program: "dishcare_dishwasher_program_eco_50" +``` + +{% endraw %} +{% enddetails %} + +## Data updates + +This integration uses server-sent events from the Miele API to receive live updates from the appliances. +When the configuration entry is loaded or after a streaming error (for example after disconnection), the integration will request all data (such as appliance info, available commands, programs, settings, and status) for all appliances. +If a new appliance is added to the account, the integration will request data for the new appliance and expose the related entities automatically. + +## Known limitations + +- The Miele 3rd party API does not fully match the Miele app. Some programs, options, or settings available in the app may not be accessible or usable via the API. +- This integration supports only one integration entry, as the Miele 3rd party API does not allow for the unique identification of an account. + +## Troubleshooting + +### Unavailable entities for a device + +#### Symptom: "The entities related to an appliance were available but no longer are" + +After reloading the Home Connect integration, the entities related to an appliance that used to be available are no longer available. +Also, when downloading the diagnostics data from the device entry, the following data is obtained: + +```json +{ + "data": { + "connected": false, + "status": {}, + "programs": null + } +} +``` + +##### Description + +Unavailable entities can have multiple causes: + +- The appliance is turned off. When it is turned off, the appliance is disconnected and the API does not retrieve information about the appliance. +- The appliance is experiencing a network issue. +- The Miele API is experiencing issues. + +##### Solution + +To try to solve the above issues, follow these steps: + +1. Turn on the appliance and reload the Home Connect integration. +2. If the appliance is turned on and the issue persists, check the network connection of the appliance and perform a soft reset on the appliance. +3. If the issue persists, check the connection of the appliance with the Miele API by checking it in the Miele app. + 1. Open the Miele app. + 2. Go to the appliance that is experiencing the issue. + 3. At the bottom of the screen, open the settings menu. + 4. Go to the **Network** section. + 5. Verify if the appliance is connected to the cloud: + - If the line between the appliance and the cloud is red and with a red warning icon {% icon "mdi:alert-outline" %}, the appliance is not connected to the Home Connect API. + - If the line between the appliance and the cloud is green, the appliance is connected to the cloud. +4. If everything is correct and the issue persists, contact Miele support. + - [Miele service and contact](https://www.miele.com/) + - [Miele developer Help & Support](https://www.miele.com/developer) + +## Removing the integration + +This integration follows standard integration removal. No extra steps are required. + +{% include integrations/remove_device_service.md %} From 835b3a85d4773b1839ae997c8bf88931cce07429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20S=20-=20Piper?= Date: Sun, 6 Apr 2025 21:04:52 +0000 Subject: [PATCH 02/14] Improving document --- source/_integrations/miele.markdown | 91 +++++------------------------ 1 file changed, 15 insertions(+), 76 deletions(-) diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown index 505170f42740..0b3409475af6 100644 --- a/source/_integrations/miele.markdown +++ b/source/_integrations/miele.markdown @@ -36,17 +36,15 @@ You can find information about supported devices on the [Miele website](https:// ## Prerequisites 1. Visit [https://www.miele.com/developer](https://www.miele.com/f/com/en/register_api.aspx) and sign up for a developer account. -2. Enter the email of your login for the original Miele app. - -3. On success, you will be redirected to the **Applications** page. Select **Details** for your app. Make note of the client ID and secret - you will need it for the next step. Log out of the Home Connect developer portal. -4. In Home Assistant, find the Home Connect integration and launch it. You will be prompted to create an [Application Credential](https://www.home-assistant.io/integrations/application_credentials). You will need to provide a name (it's arbitrary) in addition to the Client ID and Secret from the previous step. Then, follow the steps in the UI to complete setup. +2. Enter and arbitrary name for you connection and the email of your login for the original Miele app. +3. On success, you will get an email with an activation link. Press the Activate button. Make note of the client ID and secret - you will need them for the next step. +4. In Home Assistant, find the Miele integration and launch it. You will be prompted to create an [Application Credential](https://www.home-assistant.io/integrations/application_credentials). You will need to provide a name (it's arbitrary) in addition to the Client ID and Secret from the previous step. Then, follow the steps in the UI to complete setup. {% important %} -- To update the appliance programs list, you can reload the Home Connect integration when an appliance is turned on. If the re-initialization process is not triggered by reload, restart the Home Assistant when an appliance is turned on. -- After performing the steps above, [log out](https://developer.home-connect.com/user/logout) of your Home Connect Developer account. If you don't do this, the configuration steps below will fail during OAuth authentication with the message `“error”: “unauthorized_client”`. - The provided Miele User Account email address **must** be all lowercase; otherwise, it will result in authentication failures. -- All changes in the developer portal take couple of minutes before the change is implemented. +- The password should not contain any special characters. Even though it works in the Miele app it may not work with the API. +- Allow a couple of minutes to get the activation email. All changes in the developer portal take couple of minutes before the change is implemented. {% endimportant %} @@ -71,15 +69,13 @@ The integration configuration will ask for the *Client ID* and *Client Secret* c {% note %} -- The entities availability depends on the appliance type, but the appliance might not support all the entities for its type. -- Some appliances don't report data while they are turned off, so corresponding entities will not appear in the Home Connect integration after loading until the appliances are turned on. +- The entities availability depends on the appliance type and the generation of the product, and the appliance might not support all the entities for its type. +- Some appliances don't report data while they are turned off, so corresponding entities will not appear in the Miele integration after loading until the appliances are turned on. {% endnote %} ### Sensor -### Sensor - -{% details "List of binary sensors" %} +{% details "List of sensors" %} - **Operation state**: - **Status**: Represents the current operation state of the device. @@ -101,8 +97,8 @@ alias: "Notify when program ends" triggers: - trigger: state entity_id: - - sensor.appliance_operation_state - to: finished + - sensor.washing_machine_status + to: program_ended actions: - service: notify.notify data: @@ -112,54 +108,11 @@ actions: {% endraw %} {% enddetails %} -### Start a program when electricity is cheap - -Because electricity is typically cheaper at night, this automation will activate the silent mode when starting the program at night. - -{% details "Example YAML configuration" %} - -{% raw %} - -```yaml -alias: "Start program when electricity is cheap" -triggers: - - trigger: state - entity_id: sensor.electricity_price - to: "0.10" -conditions: - - condition: state - entity_id: sensor.diswasher_door - state: closed -actions: - - if: - - condition: time - after: '22:00:00' - before: '06:00:00' - then: - - service: home_connect.set_program_and_options - data: - device_id: "your_device_id" - affects_to: "active_program" - program: "dishcare_dishwasher_program_eco_50" - options: - - key: "dishcare_dishwasher_option_silence_on_demand" - value: true - else: - - service: home_connect.set_program_and_options - data: - device_id: "your_device_id" - affects_to: "active_program" - program: "dishcare_dishwasher_program_eco_50" -``` - -{% endraw %} -{% enddetails %} - ## Data updates This integration uses server-sent events from the Miele API to receive live updates from the appliances. When the configuration entry is loaded or after a streaming error (for example after disconnection), the integration will request all data (such as appliance info, available commands, programs, settings, and status) for all appliances. -If a new appliance is added to the account, the integration will request data for the new appliance and expose the related entities automatically. +If a new appliance is added to the account, the integration will request data for the new appliance and expose the related entities automatically after a reload of the integration. ## Known limitations @@ -172,18 +125,8 @@ If a new appliance is added to the account, the integration will request data fo #### Symptom: "The entities related to an appliance were available but no longer are" -After reloading the Home Connect integration, the entities related to an appliance that used to be available are no longer available. -Also, when downloading the diagnostics data from the device entry, the following data is obtained: - -```json -{ - "data": { - "connected": false, - "status": {}, - "programs": null - } -} -``` +After reloading the Miele integration, the entities related to an appliance that used to be available are no longer available. +Also, when downloading the diagnostics data from the device page, the technical data is obtained: ##### Description @@ -197,16 +140,12 @@ Unavailable entities can have multiple causes: To try to solve the above issues, follow these steps: -1. Turn on the appliance and reload the Home Connect integration. +1. Turn on the appliance and reload the Miele integration. 2. If the appliance is turned on and the issue persists, check the network connection of the appliance and perform a soft reset on the appliance. 3. If the issue persists, check the connection of the appliance with the Miele API by checking it in the Miele app. 1. Open the Miele app. 2. Go to the appliance that is experiencing the issue. - 3. At the bottom of the screen, open the settings menu. - 4. Go to the **Network** section. - 5. Verify if the appliance is connected to the cloud: - - If the line between the appliance and the cloud is red and with a red warning icon {% icon "mdi:alert-outline" %}, the appliance is not connected to the Home Connect API. - - If the line between the appliance and the cloud is green, the appliance is connected to the cloud. + 3. Press the cog-wheel to view more information. 4. If everything is correct and the issue persists, contact Miele support. - [Miele service and contact](https://www.miele.com/) - [Miele developer Help & Support](https://www.miele.com/developer) From 7e1206d5fa7b571360b1c3fd8408bea93fcf5be6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20S=20-=20Piper?= Date: Mon, 7 Apr 2025 20:20:28 +0000 Subject: [PATCH 03/14] Fixes --- source/_integrations/miele.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown index 0b3409475af6..9da977c06950 100644 --- a/source/_integrations/miele.markdown +++ b/source/_integrations/miele.markdown @@ -15,7 +15,7 @@ ha_platforms: ha_integration_type: integration --- -The Miele integration allows users to integrate their home appliances using the [official 3rd party API](https://www.miele.com/developer). +The Miele integration allows users to integrate their home appliances using the [official 3rd party API](https://www.miele.com/developer). The integration will make the best effort to map the data-points in the API to sensors, switches etc in Home Assistant. ## Use cases @@ -26,7 +26,7 @@ The Miele integration allows users to integrate their home appliances using the - Adjust the appliance settings. {% note %} -Note that it depends on the appliance which of the features are supported. +Note that it depends on the appliance model which of the features that are supported. {% endnote %} ## Supported devices @@ -36,7 +36,7 @@ You can find information about supported devices on the [Miele website](https:// ## Prerequisites 1. Visit [https://www.miele.com/developer](https://www.miele.com/f/com/en/register_api.aspx) and sign up for a developer account. -2. Enter and arbitrary name for you connection and the email of your login for the original Miele app. +2. Enter an arbitrary name for you connection and the email of your login for the original Miele app. 3. On success, you will get an email with an activation link. Press the Activate button. Make note of the client ID and secret - you will need them for the next step. 4. In Home Assistant, find the Miele integration and launch it. You will be prompted to create an [Application Credential](https://www.home-assistant.io/integrations/application_credentials). You will need to provide a name (it's arbitrary) in addition to the Client ID and Secret from the previous step. Then, follow the steps in the UI to complete setup. From e55c6e62cbe7837d8dcbe02a1d46a1474c900f27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20S=20-=20Piper?= Date: Mon, 7 Apr 2025 20:52:01 +0000 Subject: [PATCH 04/14] Address comments by Coderabbit AI --- Gemfile.lock | 7 +++---- source/_integrations/miele.markdown | 16 ++++++++-------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c4004cddf08d..9a1f23e04e6f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -142,10 +142,9 @@ GEM ruby2_keywords (0.0.5) safe_yaml (1.0.5) sass (3.4.25) - sass-embedded (1.86.1-arm64-darwin) - google-protobuf (~> 4.30) - sass-embedded (1.86.1-x86_64-linux-gnu) + sass-embedded (1.86.1) google-protobuf (~> 4.30) + rake (>= 13) sass-globbing (1.1.5) sass (>= 3.1) sassc (2.1.0) @@ -199,4 +198,4 @@ RUBY VERSION ruby 2.6.2p47 BUNDLED WITH - 2.5.3 \ No newline at end of file + 2.5.3 diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown index 9da977c06950..93fdc9f6e286 100644 --- a/source/_integrations/miele.markdown +++ b/source/_integrations/miele.markdown @@ -15,7 +15,7 @@ ha_platforms: ha_integration_type: integration --- -The Miele integration allows users to integrate their home appliances using the [official 3rd party API](https://www.miele.com/developer). The integration will make the best effort to map the data-points in the API to sensors, switches etc in Home Assistant. +The Miele integration allows users to integrate their home appliances using the [official 3rd party API](https://www.miele.com/developer). The integration will make the best effort to map the data-points in the API to sensors, switches, etc. in Home Assistant. ## Use cases @@ -26,7 +26,7 @@ The Miele integration allows users to integrate their home appliances using the - Adjust the appliance settings. {% note %} -Note that it depends on the appliance model which of the features that are supported. +Note that the feature availability depends on the appliance model. {% endnote %} ## Supported devices @@ -36,15 +36,15 @@ You can find information about supported devices on the [Miele website](https:// ## Prerequisites 1. Visit [https://www.miele.com/developer](https://www.miele.com/f/com/en/register_api.aspx) and sign up for a developer account. -2. Enter an arbitrary name for you connection and the email of your login for the original Miele app. +2. Enter an arbitrary name for your connection and the email of your login for the original Miele app. 3. On success, you will get an email with an activation link. Press the Activate button. Make note of the client ID and secret - you will need them for the next step. 4. In Home Assistant, find the Miele integration and launch it. You will be prompted to create an [Application Credential](https://www.home-assistant.io/integrations/application_credentials). You will need to provide a name (it's arbitrary) in addition to the Client ID and Secret from the previous step. Then, follow the steps in the UI to complete setup. {% important %} -- The provided Miele User Account email address **must** be all lowercase; otherwise, it will result in authentication failures. -- The password should not contain any special characters. Even though it works in the Miele app it may not work with the API. -- Allow a couple of minutes to get the activation email. All changes in the developer portal take couple of minutes before the change is implemented. +- The provided Miele User Account email address must be all lowercase; otherwise, it will result in authentication failures. +- The password should not contain any special characters. Even though it works in the Miele app, it may not work with the API. +- Allow a couple of minutes to get the activation email. All changes in the developer portal take a couple of minutes before the change is implemented. {% endimportant %} @@ -57,7 +57,7 @@ instead. The `` must be the same as used during the configuration/ authentication process. -Internal examples: `http://192.168.0.2:8123/auth/external/callback`, `http://homeassistant.local:8123/auth/external/callback`." +Internal examples: `http://192.168.0.2:8123/auth/external/callback`, `http://homeassistant.local:8123/auth/external/callback`. {% enddetails %} @@ -79,7 +79,7 @@ The integration configuration will ask for the *Client ID* and *Client Secret* c - **Operation state**: - **Status**: Represents the current operation state of the device. - - **Availability**: All the appliances with programs + - **Availability**: Represents that current connection status for the device. {% enddetails %} ## Automation examples From 36fdcd6ed542c8226bb87405c1cad5bfcc4b62ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20S=20-=20Piper?= Date: Sat, 12 Apr 2025 08:04:36 +0000 Subject: [PATCH 05/14] Sync text with capabilities of first release of the integration --- source/_integrations/miele.markdown | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown index 93fdc9f6e286..dd7fa4473173 100644 --- a/source/_integrations/miele.markdown +++ b/source/_integrations/miele.markdown @@ -20,10 +20,7 @@ The Miele integration allows users to integrate their home appliances using the ## Use cases - Monitor the multiple sensors of the appliance and trigger automations based on these sensors. -- Start programs on your appliances from your dashboard. - Monitor the program status of the appliances. -- Control the light of your appliances. -- Adjust the appliance settings. {% note %} Note that the feature availability depends on the appliance model. @@ -69,7 +66,8 @@ The integration configuration will ask for the *Client ID* and *Client Secret* c {% note %} -- The entities availability depends on the appliance type and the generation of the product, and the appliance might not support all the entities for its type. +- The entities' availability depends on the appliance type and the generation of the product, and the appliance might not support all the entities for its type. +- Products from professional and semi-professional series are generally not supported due to limitations in the Miele 3rd party API. - Some appliances don't report data while they are turned off, so corresponding entities will not appear in the Miele integration after loading until the appliances are turned on. {% endnote %} @@ -78,8 +76,8 @@ The integration configuration will ask for the *Client ID* and *Client Secret* c {% details "List of sensors" %} - **Operation state**: - - **Status**: Represents the current operation state of the device. - - **Availability**: Represents that current connection status for the device. + - **Status**: Represents the current operation state of the device. The default entity name is just the appliance type e.g. "Dishwasher". + - **Temperature**: Represents current temperature in refrigerators, freezers and ovens. Entities are created for up to 3 zones depending on the device capabilities. {% enddetails %} ## Automation examples @@ -97,7 +95,7 @@ alias: "Notify when program ends" triggers: - trigger: state entity_id: - - sensor.washing_machine_status + - sensor.washing_machine to: program_ended actions: - service: notify.notify From 3c24c1f172e401a2b55ec93a70edfe0d6791330d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20S=20-=20Piper?= Date: Sat, 12 Apr 2025 08:15:27 +0000 Subject: [PATCH 06/14] Touch-up --- source/_integrations/miele.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown index dd7fa4473173..85b568fb630a 100644 --- a/source/_integrations/miele.markdown +++ b/source/_integrations/miele.markdown @@ -76,8 +76,8 @@ The integration configuration will ask for the *Client ID* and *Client Secret* c {% details "List of sensors" %} - **Operation state**: - - **Status**: Represents the current operation state of the device. The default entity name is just the appliance type e.g. "Dishwasher". - - **Temperature**: Represents current temperature in refrigerators, freezers and ovens. Entities are created for up to 3 zones depending on the device capabilities. + - **Status**: Represents the current operation state of the device. The default entity name is just the appliance type e.g., "Dishwasher". + - **Temperature**: Represents the current temperature in refrigerators, freezers and ovens. Entities are created for up to 3 zones depending on the device capabilities. {% enddetails %} ## Automation examples From 912c0bc3fe30ea34ae41e236144440ce6ccab0e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20S=20-=20Piper?= Date: Sat, 12 Apr 2025 08:24:57 +0000 Subject: [PATCH 07/14] Advice from AI review --- Gemfile.lock | 201 ---------------------------- source/_integrations/miele.markdown | 2 +- 2 files changed, 1 insertion(+), 202 deletions(-) delete mode 100644 Gemfile.lock diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 9a1f23e04e6f..000000000000 --- a/Gemfile.lock +++ /dev/null @@ -1,201 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) - ast (2.4.3) - base64 (0.2.0) - bigdecimal (3.1.9) - chunky_png (1.4.0) - colorator (1.1.0) - commonmarker (0.23.11) - compass (1.0.3) - chunky_png (~> 1.2) - compass-core (~> 1.0.2) - compass-import-once (~> 1.0.5) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9) - sass (>= 3.3.13, < 3.5) - compass-core (1.0.3) - multi_json (~> 1.0) - sass (>= 3.3.0, < 3.5) - compass-import-once (1.0.5) - sass (>= 3.2, < 3.5) - concurrent-ruby (1.3.5) - csv (3.3.3) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - eventmachine (1.2.7) - ffi (1.17.1-arm64-darwin) - ffi (1.17.1-x86_64-linux-gnu) - forwardable-extended (2.6.0) - google-protobuf (4.30.2-arm64-darwin) - bigdecimal - rake (>= 13) - google-protobuf (4.30.2-x86_64-linux) - bigdecimal - rake (>= 13) - http_parser.rb (0.8.0) - i18n (1.14.7) - concurrent-ruby (~> 1.0) - jekyll (4.4.1) - addressable (~> 2.4) - base64 (~> 0.2) - colorator (~> 1.0) - csv (~> 3.0) - em-websocket (~> 0.5) - i18n (~> 1.0) - jekyll-sass-converter (>= 2.0, < 4.0) - jekyll-watch (~> 2.0) - json (~> 2.6) - kramdown (~> 2.3, >= 2.3.1) - kramdown-parser-gfm (~> 1.0) - liquid (~> 4.0) - mercenary (~> 0.3, >= 0.3.6) - pathutil (~> 0.9) - rouge (>= 3.0, < 5.0) - safe_yaml (~> 1.0) - terminal-table (>= 1.8, < 4.0) - webrick (~> 1.7) - jekyll-commonmark (1.4.0) - commonmarker (~> 0.22) - jekyll-paginate (1.1.0) - jekyll-sass-converter (3.1.0) - sass-embedded (~> 1.75) - jekyll-sitemap (1.4.0) - jekyll (>= 3.7, < 5.0) - jekyll-toc (0.19.0) - jekyll (>= 3.9) - nokogiri (~> 1.12) - jekyll-watch (2.2.1) - listen (~> 3.0) - json (2.10.2) - kramdown (2.5.1) - rexml (>= 3.3.9) - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - language_server-protocol (3.17.0.4) - lint_roller (1.1.0) - liquid (4.0.4) - listen (3.9.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - logger (1.7.0) - mercenary (0.4.0) - multi_json (1.15.0) - mustermann (3.0.3) - ruby2_keywords (~> 0.0.1) - nokogiri (1.18.7-arm64-darwin) - racc (~> 1.4) - nokogiri (1.18.7-x86_64-linux-gnu) - racc (~> 1.4) - parallel (1.26.3) - parser (3.3.7.4) - ast (~> 2.4.1) - racc - pathutil (0.16.2) - forwardable-extended (~> 2.6) - prism (1.4.0) - public_suffix (6.0.1) - racc (1.8.1) - rack (3.1.12) - rack-protection (4.1.1) - base64 (>= 0.1.0) - logger (>= 1.6.0) - rack (>= 3.0.0, < 4) - rack-session (2.1.0) - base64 (>= 0.1.0) - rack (>= 3.0.0) - rackup (2.2.1) - rack (>= 3) - rainbow (3.1.1) - rake (13.2.1) - rb-fsevent (0.11.2) - rb-inotify (0.11.1) - ffi (~> 1.0) - rbs (3.9.2) - logger - regexp_parser (2.10.0) - rexml (3.4.1) - rouge (4.5.1) - rubocop (1.75.1) - json (~> 2.3) - language_server-protocol (~> 3.17.0.2) - lint_roller (~> 1.1.0) - parallel (~> 1.10) - parser (>= 3.3.0.2) - rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.43.0, < 2.0) - ruby-progressbar (~> 1.7) - unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.43.0) - parser (>= 3.3.7.2) - prism (~> 1.4) - ruby-lsp (0.23.13) - language_server-protocol (~> 3.17.0) - prism (>= 1.2, < 2.0) - rbs (>= 3, < 4) - sorbet-runtime (>= 0.5.10782) - ruby-progressbar (1.13.0) - ruby2_keywords (0.0.5) - safe_yaml (1.0.5) - sass (3.4.25) - sass-embedded (1.86.1) - google-protobuf (~> 4.30) - rake (>= 13) - sass-globbing (1.1.5) - sass (>= 3.1) - sassc (2.1.0) - ffi (~> 1.9) - sassc (2.1.0-x86_64-linux) - ffi (~> 1.9) - sinatra (4.1.1) - logger (>= 1.6.0) - mustermann (~> 3.0) - rack (>= 3.0.0, < 4) - rack-protection (= 4.1.1) - rack-session (>= 2.0.0, < 3) - tilt (~> 2.0) - sorbet-runtime (0.5.11980) - stringex (2.8.6) - terminal-table (3.0.2) - unicode-display_width (>= 1.1.1, < 3) - tilt (2.6.0) - tzinfo (2.0.6) - concurrent-ruby (~> 1.0) - tzinfo-data (1.2025.2) - tzinfo (>= 1.0.0) - unicode-display_width (2.6.0) - webrick (1.9.1) - -PLATFORMS - arm64-darwin-23 - x86_64-linux - -DEPENDENCIES - compass (= 1.0.3) - jekyll (= 4.4.1) - jekyll-commonmark (= 1.4.0) - jekyll-paginate (= 1.1.0) - jekyll-sitemap (= 1.4.0) - jekyll-toc (= 0.19.0) - nokogiri (= 1.18.7) - rackup (= 2.2.1) - rake (= 13.2.1) - rubocop (= 1.75.1) - ruby-lsp (= 0.23.13) - sass-embedded (= 1.86.1) - sass-globbing (= 1.1.5) - sassc (= 2.1.0) - sinatra (= 4.1.1) - stringex (= 2.8.6) - tzinfo (~> 2.0) - tzinfo-data - -RUBY VERSION - ruby 2.6.2p47 - -BUNDLED WITH - 2.5.3 diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown index 85b568fb630a..9260e4dad1b2 100644 --- a/source/_integrations/miele.markdown +++ b/source/_integrations/miele.markdown @@ -67,7 +67,7 @@ The integration configuration will ask for the *Client ID* and *Client Secret* c {% note %} - The entities' availability depends on the appliance type and the generation of the product, and the appliance might not support all the entities for its type. -- Products from professional and semi-professional series are generally not supported due to limitations in the Miele 3rd party API. +- Products from professional and semi-professional series are generally not supported due to the limitations in the Miele 3rd party API. - Some appliances don't report data while they are turned off, so corresponding entities will not appear in the Miele integration after loading until the appliances are turned on. {% endnote %} From ed6b8a7f48255a59067f1a40123605a6322bf3d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20S=20-=20Piper?= Date: Sun, 13 Apr 2025 20:26:07 +0000 Subject: [PATCH 08/14] Address review comments --- Gemfile.lock | 192 ++++++++++++++++++++++++++++ source/_integrations/miele.markdown | 9 +- 2 files changed, 197 insertions(+), 4 deletions(-) create mode 100644 Gemfile.lock diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 000000000000..ef84b3db7d17 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,192 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + ast (2.4.3) + base64 (0.2.0) + bigdecimal (3.1.9) + chunky_png (1.4.0) + colorator (1.1.0) + commonmarker (0.23.11) + compass (1.0.3) + chunky_png (~> 1.2) + compass-core (~> 1.0.2) + compass-import-once (~> 1.0.5) + rb-fsevent (>= 0.9.3) + rb-inotify (>= 0.9) + sass (>= 3.3.13, < 3.5) + compass-core (1.0.3) + multi_json (~> 1.0) + sass (>= 3.3.0, < 3.5) + compass-import-once (1.0.5) + sass (>= 3.2, < 3.5) + concurrent-ruby (1.3.5) + csv (3.3.4) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + ffi (1.17.1-x86_64-linux-gnu) + forwardable-extended (2.6.0) + google-protobuf (4.30.2-x86_64-linux) + bigdecimal + rake (>= 13) + http_parser.rb (0.8.0) + i18n (1.14.7) + concurrent-ruby (~> 1.0) + jekyll (4.4.1) + addressable (~> 2.4) + base64 (~> 0.2) + colorator (~> 1.0) + csv (~> 3.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + json (~> 2.6) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (~> 0.3, >= 0.3.6) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-commonmark (1.4.0) + commonmarker (~> 0.22) + jekyll-paginate (1.1.0) + jekyll-sass-converter (3.1.0) + sass-embedded (~> 1.75) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-toc (0.19.0) + jekyll (>= 3.9) + nokogiri (~> 1.12) + jekyll-watch (2.2.1) + listen (~> 3.0) + json (2.10.2) + kramdown (2.5.1) + rexml (>= 3.3.9) + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + language_server-protocol (3.17.0.4) + lint_roller (1.1.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + logger (1.7.0) + mercenary (0.4.0) + multi_json (1.15.0) + mustermann (3.0.3) + ruby2_keywords (~> 0.0.1) + nokogiri (1.18.7-x86_64-linux-gnu) + racc (~> 1.4) + parallel (1.26.3) + parser (3.3.7.4) + ast (~> 2.4.1) + racc + pathutil (0.16.2) + forwardable-extended (~> 2.6) + prism (1.4.0) + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.13) + rack-protection (4.1.1) + base64 (>= 0.1.0) + logger (>= 1.6.0) + rack (>= 3.0.0, < 4) + rack-session (2.1.0) + base64 (>= 0.1.0) + rack (>= 3.0.0) + rackup (2.2.1) + rack (>= 3) + rainbow (3.1.1) + rake (13.2.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rbs (3.9.2) + logger + regexp_parser (2.10.0) + rexml (3.4.1) + rouge (4.5.1) + rubocop (1.75.1) + json (~> 2.3) + language_server-protocol (~> 3.17.0.2) + lint_roller (~> 1.1.0) + parallel (~> 1.10) + parser (>= 3.3.0.2) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 2.9.3, < 3.0) + rubocop-ast (>= 1.43.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 4.0) + rubocop-ast (1.44.1) + parser (>= 3.3.7.2) + prism (~> 1.4) + ruby-lsp (0.23.13) + language_server-protocol (~> 3.17.0) + prism (>= 1.2, < 2.0) + rbs (>= 3, < 4) + sorbet-runtime (>= 0.5.10782) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + safe_yaml (1.0.5) + sass (3.4.25) + sass-embedded (1.86.1) + google-protobuf (~> 4.30) + rake (>= 13) + sass-globbing (1.1.5) + sass (>= 3.1) + sassc (2.1.0-x86_64-linux) + ffi (~> 1.9) + sinatra (4.1.1) + logger (>= 1.6.0) + mustermann (~> 3.0) + rack (>= 3.0.0, < 4) + rack-protection (= 4.1.1) + rack-session (>= 2.0.0, < 3) + tilt (~> 2.0) + sorbet-runtime (0.5.12010) + stringex (2.8.6) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + tilt (2.6.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + tzinfo-data (1.2025.2) + tzinfo (>= 1.0.0) + unicode-display_width (2.6.0) + webrick (1.9.1) + +PLATFORMS + x86_64-linux + +DEPENDENCIES + compass (= 1.0.3) + jekyll (= 4.4.1) + jekyll-commonmark (= 1.4.0) + jekyll-paginate (= 1.1.0) + jekyll-sitemap (= 1.4.0) + jekyll-toc (= 0.19.0) + nokogiri (= 1.18.7) + rackup (= 2.2.1) + rake (= 13.2.1) + rubocop (= 1.75.1) + ruby-lsp (= 0.23.13) + sass-embedded (= 1.86.1) + sass-globbing (= 1.1.5) + sassc (= 2.1.0) + sinatra (= 4.1.1) + stringex (= 2.8.6) + tzinfo (~> 2.0) + tzinfo-data + +RUBY VERSION + ruby 3.1.6p260 + +BUNDLED WITH + 2.3.27 diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown index 9260e4dad1b2..400374ed5d7e 100644 --- a/source/_integrations/miele.markdown +++ b/source/_integrations/miele.markdown @@ -5,7 +5,7 @@ ha_category: - Hub - Sensor ha_iot_class: Cloud Push -ha_release: '2025.5.0' +ha_release: '2025.5' ha_domain: miele ha_codeowners: - '@astrandb' @@ -15,7 +15,9 @@ ha_platforms: ha_integration_type: integration --- -The Miele integration allows users to integrate their home appliances using the [official 3rd party API](https://www.miele.com/developer). The integration will make the best effort to map the data-points in the API to sensors, switches, etc. in Home Assistant. +The Miele integration allows users to integrate their home appliances using the [official 3rd party API](https://www.miele.com/developer). + +Miele is known as a manufacturer of premium appliances for cooking, laundry care and floorcare. ## Use cases @@ -110,7 +112,7 @@ actions: This integration uses server-sent events from the Miele API to receive live updates from the appliances. When the configuration entry is loaded or after a streaming error (for example after disconnection), the integration will request all data (such as appliance info, available commands, programs, settings, and status) for all appliances. -If a new appliance is added to the account, the integration will request data for the new appliance and expose the related entities automatically after a reload of the integration. + ## Known limitations @@ -124,7 +126,6 @@ If a new appliance is added to the account, the integration will request data fo #### Symptom: "The entities related to an appliance were available but no longer are" After reloading the Miele integration, the entities related to an appliance that used to be available are no longer available. -Also, when downloading the diagnostics data from the device page, the technical data is obtained: ##### Description From 6382fce898b812b8a48d07e13745d95d07142a04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20S=20-=20Piper?= Date: Sun, 13 Apr 2025 22:36:30 +0000 Subject: [PATCH 09/14] Hints from AI --- source/_integrations/miele.markdown | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown index 400374ed5d7e..6233076052af 100644 --- a/source/_integrations/miele.markdown +++ b/source/_integrations/miele.markdown @@ -78,8 +78,8 @@ The integration configuration will ask for the *Client ID* and *Client Secret* c {% details "List of sensors" %} - **Operation state**: - - **Status**: Represents the current operation state of the device. The default entity name is just the appliance type e.g., "Dishwasher". - - **Temperature**: Represents the current temperature in refrigerators, freezers and ovens. Entities are created for up to 3 zones depending on the device capabilities. + - **Status**: Represents the current operation state of the device. The default entity name is just the appliance type, e.g., "Dishwasher". + - **Temperature**: Represents the current temperature in refrigerators, freezers, and ovens. Entities are created for up to 3 zones depending on the device capabilities. {% enddetails %} ## Automation examples @@ -113,7 +113,6 @@ actions: This integration uses server-sent events from the Miele API to receive live updates from the appliances. When the configuration entry is loaded or after a streaming error (for example after disconnection), the integration will request all data (such as appliance info, available commands, programs, settings, and status) for all appliances. - ## Known limitations - The Miele 3rd party API does not fully match the Miele app. Some programs, options, or settings available in the app may not be accessible or usable via the API. From 4e7ddf97f51aa0f8aeb837e68140d53ab17494db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20S=20-=20Piper?= Date: Mon, 14 Apr 2025 09:15:26 +0000 Subject: [PATCH 10/14] Remove gemfile.lock from PR --- Gemfile.lock | 192 --------------------------------------------------- 1 file changed, 192 deletions(-) delete mode 100644 Gemfile.lock diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index ef84b3db7d17..000000000000 --- a/Gemfile.lock +++ /dev/null @@ -1,192 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) - ast (2.4.3) - base64 (0.2.0) - bigdecimal (3.1.9) - chunky_png (1.4.0) - colorator (1.1.0) - commonmarker (0.23.11) - compass (1.0.3) - chunky_png (~> 1.2) - compass-core (~> 1.0.2) - compass-import-once (~> 1.0.5) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9) - sass (>= 3.3.13, < 3.5) - compass-core (1.0.3) - multi_json (~> 1.0) - sass (>= 3.3.0, < 3.5) - compass-import-once (1.0.5) - sass (>= 3.2, < 3.5) - concurrent-ruby (1.3.5) - csv (3.3.4) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - eventmachine (1.2.7) - ffi (1.17.1-x86_64-linux-gnu) - forwardable-extended (2.6.0) - google-protobuf (4.30.2-x86_64-linux) - bigdecimal - rake (>= 13) - http_parser.rb (0.8.0) - i18n (1.14.7) - concurrent-ruby (~> 1.0) - jekyll (4.4.1) - addressable (~> 2.4) - base64 (~> 0.2) - colorator (~> 1.0) - csv (~> 3.0) - em-websocket (~> 0.5) - i18n (~> 1.0) - jekyll-sass-converter (>= 2.0, < 4.0) - jekyll-watch (~> 2.0) - json (~> 2.6) - kramdown (~> 2.3, >= 2.3.1) - kramdown-parser-gfm (~> 1.0) - liquid (~> 4.0) - mercenary (~> 0.3, >= 0.3.6) - pathutil (~> 0.9) - rouge (>= 3.0, < 5.0) - safe_yaml (~> 1.0) - terminal-table (>= 1.8, < 4.0) - webrick (~> 1.7) - jekyll-commonmark (1.4.0) - commonmarker (~> 0.22) - jekyll-paginate (1.1.0) - jekyll-sass-converter (3.1.0) - sass-embedded (~> 1.75) - jekyll-sitemap (1.4.0) - jekyll (>= 3.7, < 5.0) - jekyll-toc (0.19.0) - jekyll (>= 3.9) - nokogiri (~> 1.12) - jekyll-watch (2.2.1) - listen (~> 3.0) - json (2.10.2) - kramdown (2.5.1) - rexml (>= 3.3.9) - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - language_server-protocol (3.17.0.4) - lint_roller (1.1.0) - liquid (4.0.4) - listen (3.9.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - logger (1.7.0) - mercenary (0.4.0) - multi_json (1.15.0) - mustermann (3.0.3) - ruby2_keywords (~> 0.0.1) - nokogiri (1.18.7-x86_64-linux-gnu) - racc (~> 1.4) - parallel (1.26.3) - parser (3.3.7.4) - ast (~> 2.4.1) - racc - pathutil (0.16.2) - forwardable-extended (~> 2.6) - prism (1.4.0) - public_suffix (6.0.1) - racc (1.8.1) - rack (3.1.13) - rack-protection (4.1.1) - base64 (>= 0.1.0) - logger (>= 1.6.0) - rack (>= 3.0.0, < 4) - rack-session (2.1.0) - base64 (>= 0.1.0) - rack (>= 3.0.0) - rackup (2.2.1) - rack (>= 3) - rainbow (3.1.1) - rake (13.2.1) - rb-fsevent (0.11.2) - rb-inotify (0.11.1) - ffi (~> 1.0) - rbs (3.9.2) - logger - regexp_parser (2.10.0) - rexml (3.4.1) - rouge (4.5.1) - rubocop (1.75.1) - json (~> 2.3) - language_server-protocol (~> 3.17.0.2) - lint_roller (~> 1.1.0) - parallel (~> 1.10) - parser (>= 3.3.0.2) - rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.43.0, < 2.0) - ruby-progressbar (~> 1.7) - unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.44.1) - parser (>= 3.3.7.2) - prism (~> 1.4) - ruby-lsp (0.23.13) - language_server-protocol (~> 3.17.0) - prism (>= 1.2, < 2.0) - rbs (>= 3, < 4) - sorbet-runtime (>= 0.5.10782) - ruby-progressbar (1.13.0) - ruby2_keywords (0.0.5) - safe_yaml (1.0.5) - sass (3.4.25) - sass-embedded (1.86.1) - google-protobuf (~> 4.30) - rake (>= 13) - sass-globbing (1.1.5) - sass (>= 3.1) - sassc (2.1.0-x86_64-linux) - ffi (~> 1.9) - sinatra (4.1.1) - logger (>= 1.6.0) - mustermann (~> 3.0) - rack (>= 3.0.0, < 4) - rack-protection (= 4.1.1) - rack-session (>= 2.0.0, < 3) - tilt (~> 2.0) - sorbet-runtime (0.5.12010) - stringex (2.8.6) - terminal-table (3.0.2) - unicode-display_width (>= 1.1.1, < 3) - tilt (2.6.0) - tzinfo (2.0.6) - concurrent-ruby (~> 1.0) - tzinfo-data (1.2025.2) - tzinfo (>= 1.0.0) - unicode-display_width (2.6.0) - webrick (1.9.1) - -PLATFORMS - x86_64-linux - -DEPENDENCIES - compass (= 1.0.3) - jekyll (= 4.4.1) - jekyll-commonmark (= 1.4.0) - jekyll-paginate (= 1.1.0) - jekyll-sitemap (= 1.4.0) - jekyll-toc (= 0.19.0) - nokogiri (= 1.18.7) - rackup (= 2.2.1) - rake (= 13.2.1) - rubocop (= 1.75.1) - ruby-lsp (= 0.23.13) - sass-embedded (= 1.86.1) - sass-globbing (= 1.1.5) - sassc (= 2.1.0) - sinatra (= 4.1.1) - stringex (= 2.8.6) - tzinfo (~> 2.0) - tzinfo-data - -RUBY VERSION - ruby 3.1.6p260 - -BUNDLED WITH - 2.3.27 From 1a9f74c2589fa0d1c22a6b5016f70b3ea6f84448 Mon Sep 17 00:00:00 2001 From: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Date: Mon, 14 Apr 2025 14:33:25 +0200 Subject: [PATCH 11/14] tiny tweaks --- source/_integrations/miele.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown index 6233076052af..3ba2617c42a3 100644 --- a/source/_integrations/miele.markdown +++ b/source/_integrations/miele.markdown @@ -15,9 +15,9 @@ ha_platforms: ha_integration_type: integration --- -The Miele integration allows users to integrate their home appliances using the [official 3rd party API](https://www.miele.com/developer). +The Miele {% term integrations %} allows users to integrate their home appliances using the [official 3rd party API](https://www.miele.com/developer). -Miele is known as a manufacturer of premium appliances for cooking, laundry care and floorcare. +Miele is known as a manufacturer of premium appliances for cooking, laundry care, and floorcare. ## Use cases @@ -78,7 +78,7 @@ The integration configuration will ask for the *Client ID* and *Client Secret* c {% details "List of sensors" %} - **Operation state**: - - **Status**: Represents the current operation state of the device. The default entity name is just the appliance type, e.g., "Dishwasher". + - **Status**: Represents the current operation state of the device. The default entity name is just the appliance type. For example, "Dishwasher". - **Temperature**: Represents the current temperature in refrigerators, freezers, and ovens. Entities are created for up to 3 zones depending on the device capabilities. {% enddetails %} @@ -134,7 +134,7 @@ Unavailable entities can have multiple causes: - The appliance is experiencing a network issue. - The Miele API is experiencing issues. -##### Solution +##### Resolution To try to solve the above issues, follow these steps: From fee7f2cb573e3be0b5ec4488c3d6cf4c4ff0d2b1 Mon Sep 17 00:00:00 2001 From: Joostlek Date: Tue, 15 Apr 2025 16:35:22 +0200 Subject: [PATCH 12/14] Fix --- Gemfile.lock | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 Gemfile.lock diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 000000000000..c4004cddf08d --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,202 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + ast (2.4.3) + base64 (0.2.0) + bigdecimal (3.1.9) + chunky_png (1.4.0) + colorator (1.1.0) + commonmarker (0.23.11) + compass (1.0.3) + chunky_png (~> 1.2) + compass-core (~> 1.0.2) + compass-import-once (~> 1.0.5) + rb-fsevent (>= 0.9.3) + rb-inotify (>= 0.9) + sass (>= 3.3.13, < 3.5) + compass-core (1.0.3) + multi_json (~> 1.0) + sass (>= 3.3.0, < 3.5) + compass-import-once (1.0.5) + sass (>= 3.2, < 3.5) + concurrent-ruby (1.3.5) + csv (3.3.3) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + ffi (1.17.1-arm64-darwin) + ffi (1.17.1-x86_64-linux-gnu) + forwardable-extended (2.6.0) + google-protobuf (4.30.2-arm64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.30.2-x86_64-linux) + bigdecimal + rake (>= 13) + http_parser.rb (0.8.0) + i18n (1.14.7) + concurrent-ruby (~> 1.0) + jekyll (4.4.1) + addressable (~> 2.4) + base64 (~> 0.2) + colorator (~> 1.0) + csv (~> 3.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + json (~> 2.6) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (~> 0.3, >= 0.3.6) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-commonmark (1.4.0) + commonmarker (~> 0.22) + jekyll-paginate (1.1.0) + jekyll-sass-converter (3.1.0) + sass-embedded (~> 1.75) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-toc (0.19.0) + jekyll (>= 3.9) + nokogiri (~> 1.12) + jekyll-watch (2.2.1) + listen (~> 3.0) + json (2.10.2) + kramdown (2.5.1) + rexml (>= 3.3.9) + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + language_server-protocol (3.17.0.4) + lint_roller (1.1.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + logger (1.7.0) + mercenary (0.4.0) + multi_json (1.15.0) + mustermann (3.0.3) + ruby2_keywords (~> 0.0.1) + nokogiri (1.18.7-arm64-darwin) + racc (~> 1.4) + nokogiri (1.18.7-x86_64-linux-gnu) + racc (~> 1.4) + parallel (1.26.3) + parser (3.3.7.4) + ast (~> 2.4.1) + racc + pathutil (0.16.2) + forwardable-extended (~> 2.6) + prism (1.4.0) + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.12) + rack-protection (4.1.1) + base64 (>= 0.1.0) + logger (>= 1.6.0) + rack (>= 3.0.0, < 4) + rack-session (2.1.0) + base64 (>= 0.1.0) + rack (>= 3.0.0) + rackup (2.2.1) + rack (>= 3) + rainbow (3.1.1) + rake (13.2.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rbs (3.9.2) + logger + regexp_parser (2.10.0) + rexml (3.4.1) + rouge (4.5.1) + rubocop (1.75.1) + json (~> 2.3) + language_server-protocol (~> 3.17.0.2) + lint_roller (~> 1.1.0) + parallel (~> 1.10) + parser (>= 3.3.0.2) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 2.9.3, < 3.0) + rubocop-ast (>= 1.43.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 4.0) + rubocop-ast (1.43.0) + parser (>= 3.3.7.2) + prism (~> 1.4) + ruby-lsp (0.23.13) + language_server-protocol (~> 3.17.0) + prism (>= 1.2, < 2.0) + rbs (>= 3, < 4) + sorbet-runtime (>= 0.5.10782) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + safe_yaml (1.0.5) + sass (3.4.25) + sass-embedded (1.86.1-arm64-darwin) + google-protobuf (~> 4.30) + sass-embedded (1.86.1-x86_64-linux-gnu) + google-protobuf (~> 4.30) + sass-globbing (1.1.5) + sass (>= 3.1) + sassc (2.1.0) + ffi (~> 1.9) + sassc (2.1.0-x86_64-linux) + ffi (~> 1.9) + sinatra (4.1.1) + logger (>= 1.6.0) + mustermann (~> 3.0) + rack (>= 3.0.0, < 4) + rack-protection (= 4.1.1) + rack-session (>= 2.0.0, < 3) + tilt (~> 2.0) + sorbet-runtime (0.5.11980) + stringex (2.8.6) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + tilt (2.6.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + tzinfo-data (1.2025.2) + tzinfo (>= 1.0.0) + unicode-display_width (2.6.0) + webrick (1.9.1) + +PLATFORMS + arm64-darwin-23 + x86_64-linux + +DEPENDENCIES + compass (= 1.0.3) + jekyll (= 4.4.1) + jekyll-commonmark (= 1.4.0) + jekyll-paginate (= 1.1.0) + jekyll-sitemap (= 1.4.0) + jekyll-toc (= 0.19.0) + nokogiri (= 1.18.7) + rackup (= 2.2.1) + rake (= 13.2.1) + rubocop (= 1.75.1) + ruby-lsp (= 0.23.13) + sass-embedded (= 1.86.1) + sass-globbing (= 1.1.5) + sassc (= 2.1.0) + sinatra (= 4.1.1) + stringex (= 2.8.6) + tzinfo (~> 2.0) + tzinfo-data + +RUBY VERSION + ruby 2.6.2p47 + +BUNDLED WITH + 2.5.3 \ No newline at end of file From 059f3062f80e4e59303575b3a534a3c8bd5461d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20Strandberg?= Date: Tue, 15 Apr 2025 20:48:22 +0000 Subject: [PATCH 13/14] Address review comments --- source/_integrations/miele.markdown | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown index 3ba2617c42a3..79e1eda3ea53 100644 --- a/source/_integrations/miele.markdown +++ b/source/_integrations/miele.markdown @@ -30,22 +30,27 @@ Note that the feature availability depends on the appliance model. ## Supported devices -You can find information about supported devices on the [Miele website](https://www.miele.com/developer/capabilities.html). +You can find general information about supported devices on the [Miele website](https://www.miele.com/developer/capabilities.html).The integration supports any Miele appliance which is connected to a Miele user account. Miele WiFi Conn@ct appliances can be connected direct via a WiFi router, Miele Zigbee appliances must use the Miele@home Gateway XGW3000. -## Prerequisites +The appliance must be connected to the Miele CloudService by using the Miele app. + +{% note %} +New generation washer/dryers and new generation vacuum cleaners: +Endpoints for the new generations are not yet available and will be released in the fall of 2025. +{% endnote %} -1. Visit [https://www.miele.com/developer](https://www.miele.com/f/com/en/register_api.aspx) and sign up for a developer account. -2. Enter an arbitrary name for your connection and the email of your login for the original Miele app. -3. On success, you will get an email with an activation link. Press the Activate button. Make note of the client ID and secret - you will need them for the next step. -4. In Home Assistant, find the Miele integration and launch it. You will be prompted to create an [Application Credential](https://www.home-assistant.io/integrations/application_credentials). You will need to provide a name (it's arbitrary) in addition to the Client ID and Secret from the previous step. Then, follow the steps in the UI to complete setup. +## Prerequisites -{% important %} +{% details "Manual entry of authentication credentials" %} -- The provided Miele User Account email address must be all lowercase; otherwise, it will result in authentication failures. +- Visit [https://www.miele.com/developer](https://www.miele.com/f/com/en/register_api.aspx) and sign up for a developer account. +- Enter an arbitrary name for your connection and the email of your login for the original Miele app. +- On success, you will get an email with an activation link. Press the Activate button. Make note of the client ID and secret - you will need them for the next step. +You may be prompted to create an [Application - The provided Miele User Account email address must be all lowercase; otherwise, it will result in authentication failures. - The password should not contain any special characters. Even though it works in the Miele app, it may not work with the API. -- Allow a couple of minutes to get the activation email. All changes in the developer portal take a couple of minutes before the change is implemented. +- Allow a couple of minutes to get the activation email. All changes in the developer portal take a couple of minutes before the change is implemented. Save your credentials as you will need them later. -{% endimportant %} +{% enddetails %} {% details "I have manually disabled My Home Assistant" %} @@ -62,7 +67,7 @@ Internal examples: `http://192.168.0.2:8123/auth/external/callback`, `http://hom {% include integrations/config_flow.md %} -The integration configuration will ask for the *Client ID* and *Client Secret* created above. See [Application Credentials](/integrations/application_credentials) for more details. +The integration configuration may ask for the *Client ID* and *Client Secret* created above. See [Application Credentials](/integrations/application_credentials) for more details. ## Supported functionality @@ -150,6 +155,6 @@ To try to solve the above issues, follow these steps: ## Removing the integration -This integration follows standard integration removal. No extra steps are required. +This integration follows standard integration removal. If you have entered own credentials you will be asked if you want to keep them or to delete them. If you want to delete them later you can do that from the tree-dot menu in Settings->Device & services. {% include integrations/remove_device_service.md %} From b1779d03997004a99be61a958fd4bbe4303a85bb Mon Sep 17 00:00:00 2001 From: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Date: Wed, 16 Apr 2025 08:47:21 +0200 Subject: [PATCH 14/14] tiny tweaks --- source/_integrations/miele.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown index 79e1eda3ea53..da045296bf46 100644 --- a/source/_integrations/miele.markdown +++ b/source/_integrations/miele.markdown @@ -30,7 +30,7 @@ Note that the feature availability depends on the appliance model. ## Supported devices -You can find general information about supported devices on the [Miele website](https://www.miele.com/developer/capabilities.html).The integration supports any Miele appliance which is connected to a Miele user account. Miele WiFi Conn@ct appliances can be connected direct via a WiFi router, Miele Zigbee appliances must use the Miele@home Gateway XGW3000. +You can find general information about supported devices on the [Miele website](https://www.miele.com/developer/capabilities.html). The integration supports any Miele appliance connected to a Miele user account. Miele WiFiConn@ct appliances can be connected directly via a Wi-Fi router. Miele Zigbee appliances must use the Miele@home Gateway XGW3000. The appliance must be connected to the Miele CloudService by using the Miele app. @@ -45,7 +45,7 @@ Endpoints for the new generations are not yet available and will be released in - Visit [https://www.miele.com/developer](https://www.miele.com/f/com/en/register_api.aspx) and sign up for a developer account. - Enter an arbitrary name for your connection and the email of your login for the original Miele app. -- On success, you will get an email with an activation link. Press the Activate button. Make note of the client ID and secret - you will need them for the next step. +- On success, you will get an email with an activation link. Press the **Activate** button. Make note of the client ID and secret - you will need them for the next step. You may be prompted to create an [Application - The provided Miele User Account email address must be all lowercase; otherwise, it will result in authentication failures. - The password should not contain any special characters. Even though it works in the Miele app, it may not work with the API. - Allow a couple of minutes to get the activation email. All changes in the developer portal take a couple of minutes before the change is implemented. Save your credentials as you will need them later. @@ -155,6 +155,6 @@ To try to solve the above issues, follow these steps: ## Removing the integration -This integration follows standard integration removal. If you have entered own credentials you will be asked if you want to keep them or to delete them. If you want to delete them later you can do that from the tree-dot menu in Settings->Device & services. +This integration follows standard integration removal. If you have entered your own credentials, you will be asked if you want to keep them or delete them. If you want to delete them later you can do that from the tree-dot menu in {% my integrations title="**Settings** > **Devices & services**" %}. {% include integrations/remove_device_service.md %}