From 3aaea907baa6ab6c095945410ec33d55c15162ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edvard=20Filistovi=C4=8D?= Date: Sat, 8 Aug 2026 05:59:21 +0300 Subject: [PATCH] [ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 7: xiaomi_cgd1, xiaomi_cgdk2, xiaomi_cgg1) (#18170) --- esphome/components/xiaomi_cgd1/sensor.py | 14 +++++------ .../components/xiaomi_cgd1/xiaomi_cgd1.cpp | 6 +---- esphome/components/xiaomi_cgd1/xiaomi_cgd1.h | 10 +++----- esphome/components/xiaomi_cgdk2/sensor.py | 20 ++++++++-------- .../components/xiaomi_cgdk2/xiaomi_cgdk2.cpp | 6 +---- .../components/xiaomi_cgdk2/xiaomi_cgdk2.h | 10 +++----- esphome/components/xiaomi_cgg1/sensor.py | 14 +++++------ .../components/xiaomi_cgg1/xiaomi_cgg1.cpp | 6 +---- esphome/components/xiaomi_cgg1/xiaomi_cgg1.h | 10 +++----- tests/components/xiaomi_cgd1/common-ln.yaml | 10 ++++++++ tests/components/xiaomi_cgd1/common.yaml | 3 +++ .../xiaomi_cgd1/test.ln882x-ard.yaml | 3 +++ .../xiaomi_cgd1/validate.bk72xx-ard.yaml | 24 +++++++++++++++++++ tests/components/xiaomi_cgdk2/common-ln.yaml | 10 ++++++++ tests/components/xiaomi_cgdk2/common.yaml | 9 ++++--- .../xiaomi_cgdk2/test.ln882x-ard.yaml | 3 +++ .../xiaomi_cgdk2/validate.bk72xx-ard.yaml | 24 +++++++++++++++++++ tests/components/xiaomi_cgg1/common-ln.yaml | 10 ++++++++ tests/components/xiaomi_cgg1/common.yaml | 9 ++++--- .../xiaomi_cgg1/test.ln882x-ard.yaml | 3 +++ .../xiaomi_cgg1/validate.bk72xx-ard.yaml | 24 +++++++++++++++++++ 21 files changed, 162 insertions(+), 66 deletions(-) create mode 100644 tests/components/xiaomi_cgd1/common-ln.yaml create mode 100644 tests/components/xiaomi_cgd1/test.ln882x-ard.yaml create mode 100644 tests/components/xiaomi_cgd1/validate.bk72xx-ard.yaml create mode 100644 tests/components/xiaomi_cgdk2/common-ln.yaml create mode 100644 tests/components/xiaomi_cgdk2/test.ln882x-ard.yaml create mode 100644 tests/components/xiaomi_cgdk2/validate.bk72xx-ard.yaml create mode 100644 tests/components/xiaomi_cgg1/common-ln.yaml create mode 100644 tests/components/xiaomi_cgg1/test.ln882x-ard.yaml create mode 100644 tests/components/xiaomi_cgg1/validate.bk72xx-ard.yaml diff --git a/esphome/components/xiaomi_cgd1/sensor.py b/esphome/components/xiaomi_cgd1/sensor.py index e11ddac19d..7206f023d7 100644 --- a/esphome/components/xiaomi_cgd1/sensor.py +++ b/esphome/components/xiaomi_cgd1/sensor.py @@ -1,5 +1,5 @@ import esphome.codegen as cg -from esphome.components import esp32_ble_tracker, sensor +from esphome.components import ble_device_base, sensor import esphome.config_validation as cv from esphome.const import ( CONF_BATTERY_LEVEL, @@ -17,15 +17,15 @@ from esphome.const import ( UNIT_PERCENT, ) -DEPENDENCIES = ["esp32_ble_tracker"] -AUTO_LOAD = ["xiaomi_ble"] +AUTO_LOAD = ["ble_device_base", "xiaomi_ble"] xiaomi_cgd1_ns = cg.esphome_ns.namespace("xiaomi_cgd1") XiaomiCGD1 = xiaomi_cgd1_ns.class_( - "XiaomiCGD1", esp32_ble_tracker.ESPBTDeviceListener, cg.Component + "XiaomiCGD1", ble_device_base.ESPBTDeviceListener, cg.Component ) -CONFIG_SCHEMA = ( +CONFIG_SCHEMA = cv.All( + ble_device_base.rename_legacy_hub_id("xiaomi_cgd1"), cv.Schema( { cv.GenerateID(): cv.declare_id(XiaomiCGD1), @@ -52,15 +52,15 @@ CONFIG_SCHEMA = ( ), } ) - .extend(esp32_ble_tracker.ESP_BLE_DEVICE_SCHEMA) .extend(cv.COMPONENT_SCHEMA) + .extend(ble_device_base.BLE_DEVICE_SCHEMA), ) async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) - await esp32_ble_tracker.register_ble_device(var, config) + await ble_device_base.register_ble_device(var, config) cg.add(var.set_address(config[CONF_MAC_ADDRESS].as_hex)) cg.add(var.set_bindkey(config[CONF_BINDKEY])) diff --git a/esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp b/esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp index 948e02be46..0159314f4d 100644 --- a/esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp +++ b/esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp @@ -2,8 +2,6 @@ #include "esphome/core/helpers.h" #include "esphome/core/log.h" -#ifdef USE_ESP32 - namespace esphome::xiaomi_cgd1 { static const char *const TAG = "xiaomi_cgd1"; @@ -21,7 +19,7 @@ void XiaomiCGD1::dump_config() { LOG_SENSOR(" ", "Battery Level", this->battery_level_); } -bool XiaomiCGD1::parse_device(const esp32_ble_tracker::ESPBTDevice &device) { +bool XiaomiCGD1::parse_device(const ble_device_base::ESPBTDevice &device) { if (device.address_uint64() != this->address_) { ESP_LOGVV(TAG, "parse_device(): unknown MAC address."); return false; @@ -65,5 +63,3 @@ bool XiaomiCGD1::parse_device(const esp32_ble_tracker::ESPBTDevice &device) { void XiaomiCGD1::set_bindkey(const char *bindkey) { parse_hex(bindkey, this->bindkey_, sizeof(this->bindkey_)); } } // namespace esphome::xiaomi_cgd1 - -#endif diff --git a/esphome/components/xiaomi_cgd1/xiaomi_cgd1.h b/esphome/components/xiaomi_cgd1/xiaomi_cgd1.h index 1c510c7eb4..afa88738f0 100644 --- a/esphome/components/xiaomi_cgd1/xiaomi_cgd1.h +++ b/esphome/components/xiaomi_cgd1/xiaomi_cgd1.h @@ -2,19 +2,17 @@ #include "esphome/core/component.h" #include "esphome/components/sensor/sensor.h" -#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h" +#include "esphome/components/ble_device_base/ble_device.h" #include "esphome/components/xiaomi_ble/xiaomi_ble.h" -#ifdef USE_ESP32 - namespace esphome::xiaomi_cgd1 { -class XiaomiCGD1 : public Component, public esp32_ble_tracker::ESPBTDeviceListener { +class XiaomiCGD1 : public Component, public ble_device_base::ESPBTDeviceListener { public: void set_address(uint64_t address) { address_ = address; }; void set_bindkey(const char *bindkey); - bool parse_device(const esp32_ble_tracker::ESPBTDevice &device) override; + bool parse_device(const ble_device_base::ESPBTDevice &device) override; void dump_config() override; void set_temperature(sensor::Sensor *temperature) { temperature_ = temperature; } void set_humidity(sensor::Sensor *humidity) { humidity_ = humidity; } @@ -29,5 +27,3 @@ class XiaomiCGD1 : public Component, public esp32_ble_tracker::ESPBTDeviceListen }; } // namespace esphome::xiaomi_cgd1 - -#endif diff --git a/esphome/components/xiaomi_cgdk2/sensor.py b/esphome/components/xiaomi_cgdk2/sensor.py index c7ec13f6e0..0e7535cd76 100644 --- a/esphome/components/xiaomi_cgdk2/sensor.py +++ b/esphome/components/xiaomi_cgdk2/sensor.py @@ -1,5 +1,5 @@ import esphome.codegen as cg -from esphome.components import esp32_ble_tracker, sensor +from esphome.components import ble_device_base, sensor import esphome.config_validation as cv from esphome.const import ( CONF_BATTERY_LEVEL, @@ -17,18 +17,18 @@ from esphome.const import ( UNIT_PERCENT, ) -DEPENDENCIES = ["esp32_ble_tracker"] -AUTO_LOAD = ["xiaomi_ble"] +AUTO_LOAD = ["ble_device_base", "xiaomi_ble"] -xiaomi_cgd1_ns = cg.esphome_ns.namespace("xiaomi_cgdk2") -XiaomiCGD1 = xiaomi_cgd1_ns.class_( - "XiaomiCGDK2", esp32_ble_tracker.ESPBTDeviceListener, cg.Component +xiaomi_cgdk2_ns = cg.esphome_ns.namespace("xiaomi_cgdk2") +XiaomiCGDK2 = xiaomi_cgdk2_ns.class_( + "XiaomiCGDK2", ble_device_base.ESPBTDeviceListener, cg.Component ) -CONFIG_SCHEMA = ( +CONFIG_SCHEMA = cv.All( + ble_device_base.rename_legacy_hub_id("xiaomi_cgdk2"), cv.Schema( { - cv.GenerateID(): cv.declare_id(XiaomiCGD1), + cv.GenerateID(): cv.declare_id(XiaomiCGDK2), cv.Required(CONF_BINDKEY): cv.bind_key, cv.Required(CONF_MAC_ADDRESS): cv.mac_address, cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema( @@ -52,15 +52,15 @@ CONFIG_SCHEMA = ( ), } ) - .extend(esp32_ble_tracker.ESP_BLE_DEVICE_SCHEMA) .extend(cv.COMPONENT_SCHEMA) + .extend(ble_device_base.BLE_DEVICE_SCHEMA), ) async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) - await esp32_ble_tracker.register_ble_device(var, config) + await ble_device_base.register_ble_device(var, config) cg.add(var.set_address(config[CONF_MAC_ADDRESS].as_hex)) cg.add(var.set_bindkey(config[CONF_BINDKEY])) diff --git a/esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp b/esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp index ff9036db14..01912c3778 100644 --- a/esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp +++ b/esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp @@ -2,8 +2,6 @@ #include "esphome/core/helpers.h" #include "esphome/core/log.h" -#ifdef USE_ESP32 - namespace esphome::xiaomi_cgdk2 { static const char *const TAG = "xiaomi_cgdk2"; @@ -21,7 +19,7 @@ void XiaomiCGDK2::dump_config() { LOG_SENSOR(" ", "Battery Level", this->battery_level_); } -bool XiaomiCGDK2::parse_device(const esp32_ble_tracker::ESPBTDevice &device) { +bool XiaomiCGDK2::parse_device(const ble_device_base::ESPBTDevice &device) { if (device.address_uint64() != this->address_) { ESP_LOGVV(TAG, "parse_device(): unknown MAC address."); return false; @@ -65,5 +63,3 @@ bool XiaomiCGDK2::parse_device(const esp32_ble_tracker::ESPBTDevice &device) { void XiaomiCGDK2::set_bindkey(const char *bindkey) { parse_hex(bindkey, this->bindkey_, sizeof(this->bindkey_)); } } // namespace esphome::xiaomi_cgdk2 - -#endif diff --git a/esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.h b/esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.h index 36068ae227..a27d41cea5 100644 --- a/esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.h +++ b/esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.h @@ -2,19 +2,17 @@ #include "esphome/core/component.h" #include "esphome/components/sensor/sensor.h" -#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h" +#include "esphome/components/ble_device_base/ble_device.h" #include "esphome/components/xiaomi_ble/xiaomi_ble.h" -#ifdef USE_ESP32 - namespace esphome::xiaomi_cgdk2 { -class XiaomiCGDK2 final : public Component, public esp32_ble_tracker::ESPBTDeviceListener { +class XiaomiCGDK2 final : public Component, public ble_device_base::ESPBTDeviceListener { public: void set_address(uint64_t address) { address_ = address; }; void set_bindkey(const char *bindkey); - bool parse_device(const esp32_ble_tracker::ESPBTDevice &device) override; + bool parse_device(const ble_device_base::ESPBTDevice &device) override; void dump_config() override; void set_temperature(sensor::Sensor *temperature) { temperature_ = temperature; } void set_humidity(sensor::Sensor *humidity) { humidity_ = humidity; } @@ -29,5 +27,3 @@ class XiaomiCGDK2 final : public Component, public esp32_ble_tracker::ESPBTDevic }; } // namespace esphome::xiaomi_cgdk2 - -#endif diff --git a/esphome/components/xiaomi_cgg1/sensor.py b/esphome/components/xiaomi_cgg1/sensor.py index 1a6ed2b7da..6273d8549b 100644 --- a/esphome/components/xiaomi_cgg1/sensor.py +++ b/esphome/components/xiaomi_cgg1/sensor.py @@ -1,5 +1,5 @@ import esphome.codegen as cg -from esphome.components import esp32_ble_tracker, sensor +from esphome.components import ble_device_base, sensor import esphome.config_validation as cv from esphome.const import ( CONF_BATTERY_LEVEL, @@ -17,15 +17,15 @@ from esphome.const import ( UNIT_PERCENT, ) -DEPENDENCIES = ["esp32_ble_tracker"] -AUTO_LOAD = ["xiaomi_ble"] +AUTO_LOAD = ["ble_device_base", "xiaomi_ble"] xiaomi_cgg1_ns = cg.esphome_ns.namespace("xiaomi_cgg1") XiaomiCGG1 = xiaomi_cgg1_ns.class_( - "XiaomiCGG1", esp32_ble_tracker.ESPBTDeviceListener, cg.Component + "XiaomiCGG1", ble_device_base.ESPBTDeviceListener, cg.Component ) -CONFIG_SCHEMA = ( +CONFIG_SCHEMA = cv.All( + ble_device_base.rename_legacy_hub_id("xiaomi_cgg1"), cv.Schema( { cv.GenerateID(): cv.declare_id(XiaomiCGG1), @@ -52,15 +52,15 @@ CONFIG_SCHEMA = ( ), } ) - .extend(esp32_ble_tracker.ESP_BLE_DEVICE_SCHEMA) .extend(cv.COMPONENT_SCHEMA) + .extend(ble_device_base.BLE_DEVICE_SCHEMA), ) async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) - await esp32_ble_tracker.register_ble_device(var, config) + await ble_device_base.register_ble_device(var, config) cg.add(var.set_address(config[CONF_MAC_ADDRESS].as_hex)) if CONF_BINDKEY in config: diff --git a/esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp b/esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp index ef4ef46424..679cb76198 100644 --- a/esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp +++ b/esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp @@ -2,8 +2,6 @@ #include "esphome/core/helpers.h" #include "esphome/core/log.h" -#ifdef USE_ESP32 - namespace esphome::xiaomi_cgg1 { static const char *const TAG = "xiaomi_cgg1"; @@ -21,7 +19,7 @@ void XiaomiCGG1::dump_config() { LOG_SENSOR(" ", "Battery Level", this->battery_level_); } -bool XiaomiCGG1::parse_device(const esp32_ble_tracker::ESPBTDevice &device) { +bool XiaomiCGG1::parse_device(const ble_device_base::ESPBTDevice &device) { if (device.address_uint64() != this->address_) { ESP_LOGVV(TAG, "parse_device(): unknown MAC address."); return false; @@ -65,5 +63,3 @@ bool XiaomiCGG1::parse_device(const esp32_ble_tracker::ESPBTDevice &device) { void XiaomiCGG1::set_bindkey(const char *bindkey) { parse_hex(bindkey, this->bindkey_, sizeof(this->bindkey_)); } } // namespace esphome::xiaomi_cgg1 - -#endif diff --git a/esphome/components/xiaomi_cgg1/xiaomi_cgg1.h b/esphome/components/xiaomi_cgg1/xiaomi_cgg1.h index 7633458cb8..ef666ab6d2 100644 --- a/esphome/components/xiaomi_cgg1/xiaomi_cgg1.h +++ b/esphome/components/xiaomi_cgg1/xiaomi_cgg1.h @@ -2,19 +2,17 @@ #include "esphome/core/component.h" #include "esphome/components/sensor/sensor.h" -#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h" +#include "esphome/components/ble_device_base/ble_device.h" #include "esphome/components/xiaomi_ble/xiaomi_ble.h" -#ifdef USE_ESP32 - namespace esphome::xiaomi_cgg1 { -class XiaomiCGG1 final : public Component, public esp32_ble_tracker::ESPBTDeviceListener { +class XiaomiCGG1 final : public Component, public ble_device_base::ESPBTDeviceListener { public: void set_address(uint64_t address) { address_ = address; } void set_bindkey(const char *bindkey); - bool parse_device(const esp32_ble_tracker::ESPBTDevice &device) override; + bool parse_device(const ble_device_base::ESPBTDevice &device) override; void dump_config() override; void set_temperature(sensor::Sensor *temperature) { temperature_ = temperature; } @@ -30,5 +28,3 @@ class XiaomiCGG1 final : public Component, public esp32_ble_tracker::ESPBTDevice }; } // namespace esphome::xiaomi_cgg1 - -#endif diff --git a/tests/components/xiaomi_cgd1/common-ln.yaml b/tests/components/xiaomi_cgd1/common-ln.yaml new file mode 100644 index 0000000000..0ee92e3e14 --- /dev/null +++ b/tests/components/xiaomi_cgd1/common-ln.yaml @@ -0,0 +1,10 @@ +sensor: + - platform: xiaomi_cgd1 + mac_address: A4:C1:38:D1:61:7D + bindkey: c99d2313182473b38001086febf781bd + temperature: + name: Xiaomi CGD1 Temperature + humidity: + name: Xiaomi CGD1 Humidity + battery_level: + name: Xiaomi CGD1 Battery Level diff --git a/tests/components/xiaomi_cgd1/common.yaml b/tests/components/xiaomi_cgd1/common.yaml index 94ed09e8f2..032a6d5c19 100644 --- a/tests/components/xiaomi_cgd1/common.yaml +++ b/tests/components/xiaomi_cgd1/common.yaml @@ -1,7 +1,10 @@ esp32_ble_tracker: + id: ble_tracker_hub sensor: + # Explicit ble_hub_id: pins the neutral binding as a declared key. - platform: xiaomi_cgd1 + ble_hub_id: ble_tracker_hub mac_address: A4:C1:38:D1:61:7D bindkey: c99d2313182473b38001086febf781bd temperature: diff --git a/tests/components/xiaomi_cgd1/test.ln882x-ard.yaml b/tests/components/xiaomi_cgd1/test.ln882x-ard.yaml new file mode 100644 index 0000000000..844f9c97bc --- /dev/null +++ b/tests/components/xiaomi_cgd1/test.ln882x-ard.yaml @@ -0,0 +1,3 @@ +packages: + ln882h_ble_tracker: !include ../ln882h_ble_tracker/common.yaml + xiaomi_cgd1: !include common-ln.yaml diff --git a/tests/components/xiaomi_cgd1/validate.bk72xx-ard.yaml b/tests/components/xiaomi_cgd1/validate.bk72xx-ard.yaml new file mode 100644 index 0000000000..5980fba7ff --- /dev/null +++ b/tests/components/xiaomi_cgd1/validate.bk72xx-ard.yaml @@ -0,0 +1,24 @@ +# Config-only: the CI base board (generic-bk7252, BLE 4.2) cannot compile the +# BLE 5.x tracker, so this fixture proves validation (schema + neutral binding) +# on a non-esp32 platform; codegen and compilation are not exercised here. +bk72xx_ble_tracker: + id: ble_tracker_hub + +sensor: + # Explicit ble_hub_id: pins the neutral binding as a declared key. + - platform: xiaomi_cgd1 + ble_hub_id: ble_tracker_hub + mac_address: A4:C1:38:D1:61:7D + bindkey: c99d2313182473b38001086febf781bd + temperature: + name: Xiaomi CGD1 Temperature + humidity: + name: Xiaomi CGD1 Humidity + battery_level: + name: Xiaomi CGD1 Battery Level + # No ble_hub_id: exercises the generated binding real configs use. + - platform: xiaomi_cgd1 + mac_address: A4:C1:38:D1:61:7E + bindkey: c99d2313182473b38001086febf781bd + temperature: + name: BK Xiaomi CGD1 Implicit Temperature diff --git a/tests/components/xiaomi_cgdk2/common-ln.yaml b/tests/components/xiaomi_cgdk2/common-ln.yaml new file mode 100644 index 0000000000..f8ff21bd5b --- /dev/null +++ b/tests/components/xiaomi_cgdk2/common-ln.yaml @@ -0,0 +1,10 @@ +sensor: + - platform: xiaomi_cgdk2 + mac_address: A4:C1:38:D1:61:7D + bindkey: c99d2313182473b38001086febf781bd + temperature: + name: Xiaomi CGDK2 Temperature + humidity: + name: Xiaomi CGDK2 Humidity + battery_level: + name: Xiaomi CGDK2 Battery Level diff --git a/tests/components/xiaomi_cgdk2/common.yaml b/tests/components/xiaomi_cgdk2/common.yaml index dddca56222..d5040aa0be 100644 --- a/tests/components/xiaomi_cgdk2/common.yaml +++ b/tests/components/xiaomi_cgdk2/common.yaml @@ -1,12 +1,15 @@ esp32_ble_tracker: + id: ble_tracker_hub sensor: + # Explicit ble_hub_id: pins the neutral binding as a declared key. - platform: xiaomi_cgdk2 + ble_hub_id: ble_tracker_hub mac_address: A4:C1:38:D1:61:7D bindkey: c99d2313182473b38001086febf781bd temperature: - name: Xiaomi CGD1 Temperature + name: Xiaomi CGDK2 Temperature humidity: - name: Xiaomi CGD1 Humidity + name: Xiaomi CGDK2 Humidity battery_level: - name: Xiaomi CGD1 Battery Level + name: Xiaomi CGDK2 Battery Level diff --git a/tests/components/xiaomi_cgdk2/test.ln882x-ard.yaml b/tests/components/xiaomi_cgdk2/test.ln882x-ard.yaml new file mode 100644 index 0000000000..6f0fb03fd8 --- /dev/null +++ b/tests/components/xiaomi_cgdk2/test.ln882x-ard.yaml @@ -0,0 +1,3 @@ +packages: + ln882h_ble_tracker: !include ../ln882h_ble_tracker/common.yaml + xiaomi_cgdk2: !include common-ln.yaml diff --git a/tests/components/xiaomi_cgdk2/validate.bk72xx-ard.yaml b/tests/components/xiaomi_cgdk2/validate.bk72xx-ard.yaml new file mode 100644 index 0000000000..0eb2617cd7 --- /dev/null +++ b/tests/components/xiaomi_cgdk2/validate.bk72xx-ard.yaml @@ -0,0 +1,24 @@ +# Config-only: the CI base board (generic-bk7252, BLE 4.2) cannot compile the +# BLE 5.x tracker, so this fixture proves validation (schema + neutral binding) +# on a non-esp32 platform; codegen and compilation are not exercised here. +bk72xx_ble_tracker: + id: ble_tracker_hub + +sensor: + # Explicit ble_hub_id: pins the neutral binding as a declared key. + - platform: xiaomi_cgdk2 + ble_hub_id: ble_tracker_hub + mac_address: A4:C1:38:D1:61:7D + bindkey: c99d2313182473b38001086febf781bd + temperature: + name: Xiaomi CGDK2 Temperature + humidity: + name: Xiaomi CGDK2 Humidity + battery_level: + name: Xiaomi CGDK2 Battery Level + # No ble_hub_id: exercises the generated binding real configs use. + - platform: xiaomi_cgdk2 + mac_address: A4:C1:38:D1:61:7E + bindkey: c99d2313182473b38001086febf781bd + temperature: + name: BK Xiaomi CGDK2 Implicit Temperature diff --git a/tests/components/xiaomi_cgg1/common-ln.yaml b/tests/components/xiaomi_cgg1/common-ln.yaml new file mode 100644 index 0000000000..f26d31ed50 --- /dev/null +++ b/tests/components/xiaomi_cgg1/common-ln.yaml @@ -0,0 +1,10 @@ +sensor: + - platform: xiaomi_cgg1 + mac_address: A4:C1:38:D1:61:7D + bindkey: c99d2313182473b38001086febf781bd + temperature: + name: Xiaomi CGG1 Temperature + humidity: + name: Xiaomi CGG1 Humidity + battery_level: + name: Xiaomi CGG1 Battery Level diff --git a/tests/components/xiaomi_cgg1/common.yaml b/tests/components/xiaomi_cgg1/common.yaml index 170aebfbde..e4a3ef4ba7 100644 --- a/tests/components/xiaomi_cgg1/common.yaml +++ b/tests/components/xiaomi_cgg1/common.yaml @@ -1,12 +1,15 @@ esp32_ble_tracker: + id: ble_tracker_hub sensor: + # Explicit ble_hub_id: pins the neutral binding as a declared key. - platform: xiaomi_cgg1 + ble_hub_id: ble_tracker_hub mac_address: A4:C1:38:D1:61:7D bindkey: c99d2313182473b38001086febf781bd temperature: - name: Xiaomi CGD1 Temperature + name: Xiaomi CGG1 Temperature humidity: - name: Xiaomi CGD1 Humidity + name: Xiaomi CGG1 Humidity battery_level: - name: Xiaomi CGD1 Battery Level + name: Xiaomi CGG1 Battery Level diff --git a/tests/components/xiaomi_cgg1/test.ln882x-ard.yaml b/tests/components/xiaomi_cgg1/test.ln882x-ard.yaml new file mode 100644 index 0000000000..76ebbc01ed --- /dev/null +++ b/tests/components/xiaomi_cgg1/test.ln882x-ard.yaml @@ -0,0 +1,3 @@ +packages: + ln882h_ble_tracker: !include ../ln882h_ble_tracker/common.yaml + xiaomi_cgg1: !include common-ln.yaml diff --git a/tests/components/xiaomi_cgg1/validate.bk72xx-ard.yaml b/tests/components/xiaomi_cgg1/validate.bk72xx-ard.yaml new file mode 100644 index 0000000000..11420925a0 --- /dev/null +++ b/tests/components/xiaomi_cgg1/validate.bk72xx-ard.yaml @@ -0,0 +1,24 @@ +# Config-only: the CI base board (generic-bk7252, BLE 4.2) cannot compile the +# BLE 5.x tracker, so this fixture proves validation (schema + neutral binding) +# on a non-esp32 platform; codegen and compilation are not exercised here. +bk72xx_ble_tracker: + id: ble_tracker_hub + +sensor: + # Explicit ble_hub_id: pins the neutral binding as a declared key. + - platform: xiaomi_cgg1 + ble_hub_id: ble_tracker_hub + mac_address: A4:C1:38:D1:61:7D + bindkey: c99d2313182473b38001086febf781bd + temperature: + name: Xiaomi CGG1 Temperature + humidity: + name: Xiaomi CGG1 Humidity + battery_level: + name: Xiaomi CGG1 Battery Level + # No ble_hub_id: exercises the generated binding real configs use. + - platform: xiaomi_cgg1 + mac_address: A4:C1:38:D1:61:7E + bindkey: c99d2313182473b38001086febf781bd + temperature: + name: BK Xiaomi CGG1 Implicit Temperature