architecture
architecture copied to clipboard
New device class doorbell needed to resolve homekit issue
Context
As discussed in home-assistant/core#40052 - the 0.114 addition of homekit doorbells has taken on the assumption that all devices that have a binary_sensor with DEVICE_CLASS_OCCUPANCY are doorbells. There are devices with this class that are not doorbells (Nest Cameras are one example), that are now sending doorbell notifications by the hundreds to users through homekit every time there is motion.
Proposal
With the addition of a new DEVICE_CLASS_DOORBELL the logic in homekit at https://github.com/home-assistant/core/blob/0c077685b6f74179cbaecde31577b0da4f975ad6/homeassistant/components/homekit/init.py#L682 could explicitly grab doorbells for this functionality, rather than incorrectly grabbing other devices.
Consequences
Homekit integration can now understand what is a doorbell rather than assuming non-doorbells are doorbells as well. The current integration has broken existing user behavior, and adding this device class was suggested by the homekit maintainer. I am not aware of any downsides but I admittedly don't know of other doorbell functionality throughout home-assistant widely.