From 687bf5e8082b23debda360cebf7e84dfc858d6f5 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Mon, 21 Aug 2023 08:43:52 +0200 Subject: [PATCH] Ignore ble name for gardena (#98126) --- .../gardena_bluetooth/config_flow.py | 20 +++++++++++----- .../gardena_bluetooth/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- .../snapshots/test_config_flow.ambr | 24 +++++++++---------- 5 files changed, 29 insertions(+), 21 deletions(-) diff --git a/homeassistant/components/gardena_bluetooth/config_flow.py b/homeassistant/components/gardena_bluetooth/config_flow.py index 3e981675057..7b34edd29af 100644 --- a/homeassistant/components/gardena_bluetooth/config_flow.py +++ b/homeassistant/components/gardena_bluetooth/config_flow.py @@ -5,9 +5,9 @@ import logging from typing import Any from gardena_bluetooth.client import Client -from gardena_bluetooth.const import DeviceInformation, ScanService +from gardena_bluetooth.const import PRODUCT_NAMES, DeviceInformation, ScanService from gardena_bluetooth.exceptions import CharacteristicNotFound, CommunicationFailure -from gardena_bluetooth.parse import ManufacturerData, ProductGroup +from gardena_bluetooth.parse import ManufacturerData, ProductType import voluptuous as vol from homeassistant import config_entries @@ -34,7 +34,13 @@ def _is_supported(discovery_info: BluetoothServiceInfo): return False manufacturer_data = ManufacturerData.decode(data) - if manufacturer_data.group != ProductGroup.WATER_CONTROL: + product_type = ProductType.from_manufacturer_data(manufacturer_data) + + if product_type not in ( + ProductType.PUMP, + ProductType.VALVE, + ProductType.WATER_COMPUTER, + ): _LOGGER.debug("Unsupported device: %s", manufacturer_data) return False @@ -42,9 +48,11 @@ def _is_supported(discovery_info: BluetoothServiceInfo): def _get_name(discovery_info: BluetoothServiceInfo): - if discovery_info.name and discovery_info.name != discovery_info.address: - return discovery_info.name - return "Gardena Device" + data = discovery_info.manufacturer_data[ManufacturerData.company] + manufacturer_data = ManufacturerData.decode(data) + product_type = ProductType.from_manufacturer_data(manufacturer_data) + + return PRODUCT_NAMES.get(product_type, "Gardena Device") class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): diff --git a/homeassistant/components/gardena_bluetooth/manifest.json b/homeassistant/components/gardena_bluetooth/manifest.json index 0226460d4d8..af72ff7f69d 100644 --- a/homeassistant/components/gardena_bluetooth/manifest.json +++ b/homeassistant/components/gardena_bluetooth/manifest.json @@ -13,5 +13,5 @@ "dependencies": ["bluetooth_adapters"], "documentation": "https://www.home-assistant.io/integrations/gardena_bluetooth", "iot_class": "local_polling", - "requirements": ["gardena_bluetooth==1.0.2"] + "requirements": ["gardena_bluetooth==1.2.0"] } diff --git a/requirements_all.txt b/requirements_all.txt index f0a8d957c34..522f424878d 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -829,7 +829,7 @@ fritzconnection[qr]==1.12.2 gTTS==2.2.4 # homeassistant.components.gardena_bluetooth -gardena_bluetooth==1.0.2 +gardena_bluetooth==1.2.0 # homeassistant.components.google_assistant_sdk gassist-text==0.0.10 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 17f2e3f88e9..5de4c5da4c1 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -648,7 +648,7 @@ fritzconnection[qr]==1.12.2 gTTS==2.2.4 # homeassistant.components.gardena_bluetooth -gardena_bluetooth==1.0.2 +gardena_bluetooth==1.2.0 # homeassistant.components.google_assistant_sdk gassist-text==0.0.10 diff --git a/tests/components/gardena_bluetooth/snapshots/test_config_flow.ambr b/tests/components/gardena_bluetooth/snapshots/test_config_flow.ambr index fde70b60a01..24cef3c349e 100644 --- a/tests/components/gardena_bluetooth/snapshots/test_config_flow.ambr +++ b/tests/components/gardena_bluetooth/snapshots/test_config_flow.ambr @@ -3,7 +3,7 @@ FlowResultSnapshot({ 'data_schema': None, 'description_placeholders': dict({ - 'name': 'Timer', + 'name': 'Gardena Water Computer', }), 'errors': None, 'flow_id': , @@ -19,7 +19,7 @@ 'confirm_only': True, 'source': 'bluetooth', 'title_placeholders': dict({ - 'name': 'Timer', + 'name': 'Gardena Water Computer', }), 'unique_id': '00000000-0000-0000-0000-000000000001', }), @@ -44,11 +44,11 @@ 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'bluetooth', - 'title': 'Timer', + 'title': 'Gardena Water Computer', 'unique_id': '00000000-0000-0000-0000-000000000001', 'version': 1, }), - 'title': 'Timer', + 'title': 'Gardena Water Computer', 'type': , 'version': 1, }) @@ -124,7 +124,7 @@ 'options': list([ tuple( '00000000-0000-0000-0000-000000000001', - 'Timer', + 'Gardena Water Computer', ), ]), 'required': True, @@ -144,7 +144,7 @@ FlowResultSnapshot({ 'data_schema': None, 'description_placeholders': dict({ - 'name': 'Timer', + 'name': 'Gardena Water Computer', }), 'errors': None, 'flow_id': , @@ -182,11 +182,11 @@ 'options': list([ tuple( '00000000-0000-0000-0000-000000000001', - 'Timer', + 'Gardena Water Computer', ), tuple( '00000000-0000-0000-0000-000000000002', - 'Gardena Device', + 'Gardena Water Computer', ), ]), 'required': True, @@ -206,7 +206,7 @@ FlowResultSnapshot({ 'data_schema': None, 'description_placeholders': dict({ - 'name': 'Timer', + 'name': 'Gardena Water Computer', }), 'errors': None, 'flow_id': , @@ -222,7 +222,7 @@ 'confirm_only': True, 'source': 'user', 'title_placeholders': dict({ - 'name': 'Timer', + 'name': 'Gardena Water Computer', }), 'unique_id': '00000000-0000-0000-0000-000000000001', }), @@ -247,11 +247,11 @@ 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', - 'title': 'Timer', + 'title': 'Gardena Water Computer', 'unique_id': '00000000-0000-0000-0000-000000000001', 'version': 1, }), - 'title': 'Timer', + 'title': 'Gardena Water Computer', 'type': , 'version': 1, })