thoukydides / homebridge-homeconnect

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

Feature Request: Configurable Option to allow user to decide if devices should go offline (Not Responding) in HomeKit #251

Closed badgertastic closed 9 months ago

badgertastic commented 9 months ago

Description of Enhancement

I would say, certainly in the case of Washers and Driers, people don't leave these on, not even in standby. Yet also people don't want devices disconnected in Home app as it shows as abnormal status on Home app menu.

Proposing to add configurable option to adjust this behaviour. Thanks.

Home Connect Mapping

No response

HomeKit Mapping

No response

Home Connect Appliance(s)

No response

thoukydides commented 9 months ago

Sorry, but no. I really do not want to add configuration options for detailed behaviour like this. I think the plugin configuration is already too complicated, with too many options likely to confuse new users. There needs to be an extremely strong justification for new configuration options, especially ones like this that I would not use myself.

More importantly, a significant proportion of this plugin is already untested before I make releases - either due to not having access to Home Connect appliances with the associated functionality, or the time required to try every feature and option. Each extra configuration option (that I do not use myself) just adds more untested code.

In this case I believe that the current behaviour is entirely appropriate. It is consistent with how my native HomeKit devices behave - the Home app reports them as Not Responding when they are unplugged. For my Home Connect appliances it is also definitely the appropriate way to handle them being disconnected. It is also the best match for the Home Connect API - if the appliance is disconnected (which can be due to a Wi-Fi/internet/cloud connectivity issue) then it does not provide any information other than the static appliance details such as model and serial number. The API, and hence this plugin, have no information about whether the appliance is switched off at the mains or has a communication issue. Hence, the only state that can be correctly reported to HomeKit is that there is SERVICE_COMMUNICATION_FAILURE.

badgertastic commented 9 months ago

Ok fair enough. But FYI I'm not disconnecting the Dryer or Washing Machine from the mains. I'm simply pressing the On/Off button at the end of the cycle. Otherwise the display is left on and goes to standby pause blinking light. It's the usual and recommended behaviour for energy conscious households.

thoukydides commented 9 months ago

That button is disconnecting the appliance from the mains - it is just doing that internally instead of at the wall socket. The effect is the same. As far as the Home Connect API servers are concerned the appliance has just disappeared.

All of my Home Connect appliances have soft power switches. They turn off the appliance display, but leave the appliance connected to the Home Connect servers. The only time that they disconnect from the Home Connect servers is when they are disconnected externally or the internet connection goes down. I originally assumed that all Home Connect appliances behaved that way since the API documentation doesn't suggest otherwise. It is also the only behaviour that fits in with how HomeKit expects accessories to function.

badgertastic commented 9 months ago

Then the dryer and washing machine i have clearly aren’t suitable for your plugin. Have removed. My life will be simpler.

flschweiger commented 4 months ago

I'd love to contribute to this discussion as well. First, a big thanks to @thoukydides for this fantastic plugin! I have a washer/dryer unit that I also completely power off when not in use (like many others, I imagine). I use the active program virtual switch to get notifications when the laundry is ready, but I’m not interested in using the machine’s on/off switch.

It’s frustrating that washers and dryers disconnect entirely when turned off, and I understand @badgertastic's point about the non-responding accessory. This isn’t ideal because you constantly receive 'some accessories are not responding' messages, which appear as warnings in the Home app. That’s why this plugin isn’t currently practical for me either, unless:

  1. We can disable the device’s power state, using only the switches/buttons for active programs, the door sensor, or starting a specific program.
  2. The last power state is cached for dryers/washers (similar to virtual switches).

I’d love to hear your thoughts on this. Thanks again for all your hard work!

thoukydides commented 4 months ago

We can disable the device’s power state, using only the switches/buttons for active programs, the door sensor, or starting a specific program.

The Power service is the only service that this plugin always creates for all accessories. It is deeply ingrained in the architecture of this plugin that it is always present and supported, even for things like freezers, which really are always-on.

Unless I do another major rewrite of this plugin, this is not going to change. The next major update is likely to be for iOS 18, where hopefully more of this plugin's functionality can be migrated to more appropriate characteristics and services (Apple have announced support for robot vacuum cleaners, but hopefully it will also include other Matter 1.2/1.3 appliance types). Until I see what Apple add, and consider how best to support it, I won't know how much needs to change.

The last power state is cached for dryers/washers (similar to virtual switches).

Home Connect will always report that they are On. For appliances that power-off the Home Connect functionality, they are either On or Disconnected. There is no way to distinguish between different reasons for disconnection, whether the appliance is switched off on its front panel, disconnected from the mains, or is on but unable to connect to the Home Connect servers.

I used to treat all forms of disconnected as the appliance being Off, but that doesn't accurately reflect the appliance state... especially for those appliances that really do report Off/Standby states. Either approach is probably acceptable for appliances like freezers which should always be On, although the error state is probably better.

The Home Connect API documentation does not mention that Washer/Dryer appliances disconnect when switched off. It could be that this is model specific, and only those with models that do this have been commenting here. Hence, I really do not want to make a special case for these appliances.