From 1fbdb804300ec5eda025b0053c881b686df0db5c Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 5 Jan 2023 15:22:14 -1000 Subject: [PATCH] Avoid some data merges in the bluetooth remote scanners when nothing has changed (#85270) --- .../components/bluetooth/base_scanner.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/bluetooth/base_scanner.py b/homeassistant/components/bluetooth/base_scanner.py index 45ed6efc4f8..b4c88260591 100644 --- a/homeassistant/components/bluetooth/base_scanner.py +++ b/homeassistant/components/bluetooth/base_scanner.py @@ -297,17 +297,26 @@ class BaseHaRemoteScanner(BaseHaScanner): and len(prev_device.name) > len(local_name) ): local_name = prev_device.name - if prev_advertisement.service_uuids: + if service_uuids and service_uuids != prev_advertisement.service_uuids: service_uuids = list( set(service_uuids + prev_advertisement.service_uuids) ) - if prev_advertisement.service_data: + elif not service_uuids: + service_uuids = prev_advertisement.service_uuids + if service_data and service_data != prev_advertisement.service_data: service_data = {**prev_advertisement.service_data, **service_data} - if prev_advertisement.manufacturer_data: + elif not service_data: + service_data = prev_advertisement.service_data + if ( + manufacturer_data + and manufacturer_data != prev_advertisement.manufacturer_data + ): manufacturer_data = { **prev_advertisement.manufacturer_data, **manufacturer_data, } + elif not manufacturer_data: + manufacturer_data = prev_advertisement.manufacturer_data advertisement_data = AdvertisementData( local_name=None if local_name == "" else local_name,