thoukydides / homebridge-homeconnect

Home Connect home appliances plugin for Homebridge
https://www.thouky.co.uk
ISC License
142 stars 15 forks source link

Feature Request: Option to ignore/silence Dryer programmes that are unavailble #250

Closed badgertastic closed 9 months ago

badgertastic commented 9 months ago

Description of Enhancement

I'd like to stop seeing the messages when Dryer programs are not available. See below:

[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] 2 of 13 programs advertised by appliance currently unavailable:
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer]     Pillow                (LaundryCare.Dryer.Program.Pillow)
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer]     Timed programme cold  (LaundryCare.Dryer.Program.TimeCold)

I performed the 'Identify' to no avail

[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] Identify: BOSCH-WTX88RH9GB-68Axxxxxx4BD
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] BSH.Common.Option.EstimatedTotalProgramTime=12900 seconds
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] BSH.Common.Option.FinishInRelative=12900 seconds
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] BSH.Common.Root.ActiveProgram=null
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] BSH.Common.Root.SelectedProgram=LaundryCare.Dryer.Program.Cotton
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] BSH.Common.Setting.ChildLock=false
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] BSH.Common.Setting.PowerState=BSH.Common.EnumType.PowerState.On
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] BSH.Common.Status.DoorState=BSH.Common.EnumType.DoorState.Closed
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] BSH.Common.Status.LocalControlActive=false
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] BSH.Common.Status.OperationState=BSH.Common.EnumType.OperationState.Ready
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] BSH.Common.Status.RemoteControlActive=true
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] BSH.Common.Status.RemoteControlStartAllowed=false
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] LaundryCare.Dryer.Option.DryingTarget=LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] LaundryCare.Dryer.Option.DryingTargetAdjustment=LaundryCare.Dryer.EnumType.DryingTargetAdjustment.Off
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] LaundryCare.Dryer.Option.Gentle=false
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] LaundryCare.Dryer.Option.WrinkleGuard=LaundryCare.Dryer.EnumType.WrinkleGuard.Off
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] connected=true
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] 2 of 13 programs advertised by appliance currently unavailable:
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer]     Pillow                (LaundryCare.Dryer.Program.Pillow)
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer]     Timed programme cold  (LaundryCare.Dryer.Program.TimeCold)
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] Temporarily selecting program LaundryCare.Dryer.Program.Blankets to read its options
[2/16/2024, 1:52:22 PM] [HomeConnect] [Dryer] Actively reading options for 11 programs
[2/16/2024, 1:52:23 PM] [HomeConnect] [Dryer] Using expired cache result: Error: Program LaundryCare.Dryer.Program.Cotton is not selected
[2/16/2024, 1:52:24 PM] [HomeConnect] [Dryer] Temporarily selecting program LaundryCare.Dryer.Program.Cotton to read its options
[2/16/2024, 1:52:25 PM] [HomeConnect] [Dryer] Temporarily selecting program LaundryCare.Dryer.Program.Delicates to read its options
[2/16/2024, 1:52:27 PM] [HomeConnect] [Dryer] Temporarily selecting program LaundryCare.Dryer.Program.DownFeathers to read its options
[2/16/2024, 1:52:28 PM] [HomeConnect] [Dryer] Temporarily selecting program LaundryCare.Dryer.Program.Hygiene to read its options
[2/16/2024, 1:52:30 PM] [HomeConnect] [Dryer] Temporarily selecting program LaundryCare.Dryer.Program.Mix to read its options
[2/16/2024, 1:52:31 PM] [HomeConnect] [Dryer] Temporarily selecting program LaundryCare.Dryer.Program.Outdoor to read its options
[2/16/2024, 1:52:33 PM] [HomeConnect] [Dryer] Temporarily selecting program LaundryCare.Dryer.Program.Super40 to read its options
[2/16/2024, 1:52:34 PM] [HomeConnect] [Dryer] Temporarily selecting program LaundryCare.Dryer.Program.Synthetic to read its options
[2/16/2024, 1:52:36 PM] [HomeConnect] [Dryer] Temporarily selecting program LaundryCare.Dryer.Program.TimeWarm to read its options
[2/16/2024, 1:52:37 PM] [HomeConnect] [Dryer] Temporarily selecting program LaundryCare.Dryer.Program.Towels to read its options
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer] 2 of 13 programs missing options (program never available to read supported options):
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]     Pillow                (LaundryCare.Dryer.Program.Pillow)
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]     Timed programme cold  (LaundryCare.Dryer.Program.TimeCold)
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer] This could be entirely expected if some programs are never available for use (e.g. some appliances require Sabbath programs to be enabled in the appliance setting before they can be selected)
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer] Unavailable programs may also be due to bugs in the appliance firmware or Home Connect API service
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer] However, if these programs should be usable then these steps may help resolve the issue:
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]     1.  Ensure that the appliance is in a suitable state to allow selection of all programs:
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]       (a)  Replenish any consumables that are low or empty
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]       (b)  Complete any required cleaning or other maintenance operations
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]       (c)  Ensure that the appliance has power and that no program is active
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]       (d)  Leave the appliance idle for a few minutes (so that it can be controlled remotely)
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]     2.  Manually select (but do not start) each program on the appliance, leaving the appliance idle for a couple of minutes after each selection:
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]       (a)  Pillow
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]       (b)  Timed programme cold
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]     3.  Trigger this plugin to re-read the details of all programs using one of these methods:
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]       (a)  Restart the Homebridge instance for this plugin
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]       (b)  Invoke the HomeKit "Identify" routine for this appliance (e.g. using the "ID" button in the Eve app)
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer] 13 programs supported
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer] {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]     "BOSCH-WTX88RH9GB-68A40E4E94BD": {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]         "programs": [
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "name": "Duvets",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "key": "LaundryCare.Dryer.Program.Blankets",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "options": {}
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             },
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "name": "Cotton",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "key": "LaundryCare.Dryer.Program.Cotton",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "options": {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     "LaundryCare.Dryer.Option.DryingTarget": "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     "_LaundryCare.Dryer.Option.DryingTarget": [
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                         "LaundryCare.Dryer.EnumType.DryingTarget.IronDry",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                         "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                         "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDryPlus"
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     ]
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 }
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             },
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "name": "Delicates",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "key": "LaundryCare.Dryer.Program.Delicates",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "options": {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     "LaundryCare.Dryer.Option.DryingTarget": "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     "_LaundryCare.Dryer.Option.DryingTarget": [
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                         "LaundryCare.Dryer.EnumType.DryingTarget.IronDry",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                         "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry"
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     ]
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 }
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             },
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "name": "Down Wear",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "key": "LaundryCare.Dryer.Program.DownFeathers",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "options": {}
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             },
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "name": "Hygiene",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "key": "LaundryCare.Dryer.Program.Hygiene",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "options": {}
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             },
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "name": "Mixed Fabrics",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "key": "LaundryCare.Dryer.Program.Mix",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "options": {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     "LaundryCare.Dryer.Option.DryingTarget": "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     "_LaundryCare.Dryer.Option.DryingTarget": [
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                         "LaundryCare.Dryer.EnumType.DryingTarget.IronDry",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                         "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                         "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDryPlus"
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     ]
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 }
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             },
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "name": "Sportswear",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "key": "LaundryCare.Dryer.Program.Outdoor",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "options": {}
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             },
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "name": "Pillow",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "key": "LaundryCare.Dryer.Program.Pillow"
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             },
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "name": "Super Quick 40",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "key": "LaundryCare.Dryer.Program.Super40",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "options": {}
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             },
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "name": "Easy-Care",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "key": "LaundryCare.Dryer.Program.Synthetic",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "options": {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     "LaundryCare.Dryer.Option.DryingTarget": "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     "_LaundryCare.Dryer.Option.DryingTarget": [
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                         "LaundryCare.Dryer.EnumType.DryingTarget.IronDry",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                         "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                         "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDryPlus"
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     ]
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 }
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             },
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "name": "Timed programme cold",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "key": "LaundryCare.Dryer.Program.TimeCold"
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             },
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "name": "Timed programme warm",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "key": "LaundryCare.Dryer.Program.TimeWarm",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "options": {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     "BSH.Common.Option.Duration": 1200,
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     "_BSH.Common.Option.Duration": "Int [1200 .. 12600] step 600 seconds"
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 }
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             },
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "name": "Towels",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "key": "LaundryCare.Dryer.Program.Towels",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 "options": {
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     "LaundryCare.Dryer.Option.DryingTarget": "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     "_LaundryCare.Dryer.Option.DryingTarget": [
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                         "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry",
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                         "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDryPlus"
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                     ]
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]                 }
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]             }
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]         ]
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer]     }
[2/16/2024, 1:52:40 PM] [HomeConnect] [Dryer] }

Home Connect Mapping

No response

HomeKit Mapping

No response

Home Connect Appliance(s)

BOSCH-WTX88RH9GB

thoukydides commented 9 months ago

That message is only displayed once at plugin start-up.

The Home Connect API provides two lists of appliance programs - the complete list of all programs supported by the appliance, and those that can currently be selected. Many appliances do not correctly report the details of a program (e.g. the supported options) unless the program is currently selected. Hence, the plugin needs to select each program to read its details.

The log message is a warning that some of the programs that the API says are supported by the appliance cannot be selected to read their options. This will limit some of the plugin functionality - notably the ability to configure options for those programs (in Homebridge Config UI) or to select/start those programs.

There are many reasons why programs might not be selectable at a particular time. In many cases it is a dynamic issue, e.g. due to the appliance being busy (e.g. performing start-up operations or another program is active), requiring maintenance (e.g. emptying a drip tray), or requiring supplies (e.g. cleaning products). In those cases this message is especially important because it provides the user will need to do something to rectify the situation, e.g. performing any pending maintenance and then restarting the plugin (or triggering an Identify operation). However, there are some cases where this is a (semi-)permanent restriction, e.g. my Oven reports that it supports a Sabbath program, but I have it disabled in the appliance settings so it is not available to be selected.

I have no idea why your appliance does not allow those two programs to be selected. You would need to ask the Home Connect team about that. Maybe it is similar to the Sabbath program on my Oven and requires some setting to be changed. Or it could just be a limitation of the current appliance firmware that prevents those programs being selected via the API. Regardless, there is no way for this plugin to determine whether it is a temporary or permanent issue that prevents those programs being selected. Either way, that log message is an important warning, and will not be removed.

badgertastic commented 9 months ago

Ok thanks for info.

The log messages are too chatty IMO. And connection attempts nag constantly if you start the plugin with the device off (but on at the mains state -- which it's in 90% of the time).

I just want a simple plugin that reports the end of a program and when I need to do something (like refill the iDOS drawers).

I appreciate the effort so thanks, but the plugin seems is not a good fit for the Apple home and I guess I'll just use the native app in future.

Just having a setting to push all the chatty log message to say warning level, that user can turn off, would help. But Ok.

No idea what Sabbath is or why programs are not on the appliance. They are not documented in the manual, written as functions on the device so assume it's an oversight in the API. I wouldn't even be aware of them if were not for your plugin.

thoukydides commented 9 months ago

Those "chatty" log messages are at Info level, which is lower-priority than the Warning level that you propose. Hence, that suggested change would make them harder to filter.

They are "chatty" because users did not understand what the previous terse messages meant or what they were expected to do in response. The fact that you appear to have misunderstood them suggests that I actually need to make them more verbose with additional explanation. As I said, they only occur once at start-up, so I really don't see what the problem is.

There was previous discussion about not being able to select programs in #224.

There was previous discussion about the "nag" messages in #234.

I do not intend to repeat either discussion or change the log usage.