While that is technically true, improv ble, in this case, is a component of ESPHome. So, they are two separate protocols/integrations, but they are provided by and represent the same device.
The double addition would make more sense if the Improv BLE integration provided a device separate from the ESPHome device, but that is not the case. The Improv BLE is solely to provision the device.
Essentially, the issue is that Improv BLE is treated as entirely separate as opposed to just a provisioning protocol for other integrations.
Yes, it’s like what you currently do when you set up a wifi device. You eitehr connect to the the devices network or set it up via bluetooth, then you set it up to connect to your network.
Anyways, it actually takes 4 integrations to get it done. bluetooth for discovery, improve for setup, then dhcp for discovery, and esphome for final.
I don’t believe there would be any way to get past the 2 adds with the current system because you’d have to auto add the espdevice and that would upset people if you couldn’t ignore it (if they didn’t want to add it to HA). IIRC conversations should still work without the entity in HA.
Yeah, I figured it wouldn’t be a simple add, but it seemed odd, given all of the work the team did to make the setup so streamlined. The Improv BLE integration could also retrieve the encryption key and OTA info from the ESPHome device which would let HA add it automatically.
EDIT: Essentially, this would be the flow:
Bluetooth discovers device
Improv provisions WiFi credentials and retrieves encryption key
DHCP discovers device
ESPHome sees that it has the correct encryption key and adds the device
I had considered that, but it just didn’t seem like a real use case. Why do you think people would want to add a device to the WiFi using Home Assistant but not connect it to Home Assistant? It seems to be that provisioning it with an “Add” button in Home Assistant is a tacit agreement that you don’t want to ignore it.