A lot of devices (and services) go offline. Currently, Home Assistant handles this by retrying integrations on an interval.This functionality is perfect for the backend, however to the user this indicates an error connecting to a device (displayed in red)
Proposed (high level) solution
Add a way for integrations to poll / receive (webhooks etc.) whether a device or service is online before continuing to setup the integration.
Update the UI to to show the device or service as an amber/grey status to show to the user that the “device is currently offline”.
Potentially add a section/filter to the devices and services ui to show which are currently offline (and those which are in an error state) so users can interpret what is down and what is a potential issue to report.
This is a brain dump / finger in the air idea. I think this would grant integrations better flexibility to check a device/service first, before continuing to setup.
I also think having a setup like this would allow errors to stop flooding the logs so often and handle any problematic services which rate limit or devices such as a desktop pc which go offline
Well you can, if you wish, monitor state of all your devices using ie. uptime kuma. It can monitor not only wifi but also zigbee or devices using mqtt.
You can set up alert that will alert you that some device is offline if you wish.
The idea here is not to use a 3rd party service to monitor a service, this is for integrations to make the tests themselves.
If a service is down for maintenance, the integration reflecting that and in future the ability to notify if a service is down etc.
More specifically this is mostly aimed at in home devices, like a PC or TV which instead of showing a timeout error, could show an amber “offline” or “down for maintenance” status
I personally think that you want to put too many eggs in one basket and this is not a good thing imho.
As I said there is a service, addon aka docker contaner, for that, it is called uptime kuma, that is build for this purpose only.
And it should stay that way.