mirror of
https://github.com/esphome/esphome.git
synced 2026-08-17 19:13:18 +08:00
[ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 12: xiaomi_miscale, xiaomi_mjyd02yla, xiaomi_mue4094rt) (#18180)
This commit is contained in:
@@ -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_CLEAR_IMPEDANCE,
|
||||
@@ -15,14 +15,15 @@ from esphome.const import (
|
||||
UNIT_OHM,
|
||||
)
|
||||
|
||||
DEPENDENCIES = ["esp32_ble_tracker"]
|
||||
AUTO_LOAD = ["ble_device_base"]
|
||||
|
||||
xiaomi_miscale_ns = cg.esphome_ns.namespace("xiaomi_miscale")
|
||||
XiaomiMiscale = xiaomi_miscale_ns.class_(
|
||||
"XiaomiMiscale", esp32_ble_tracker.ESPBTDeviceListener, cg.Component
|
||||
"XiaomiMiscale", ble_device_base.ESPBTDeviceListener, cg.Component
|
||||
)
|
||||
|
||||
CONFIG_SCHEMA = (
|
||||
CONFIG_SCHEMA = cv.All(
|
||||
ble_device_base.rename_legacy_hub_id("xiaomi_miscale"),
|
||||
cv.Schema(
|
||||
{
|
||||
cv.GenerateID(): cv.declare_id(XiaomiMiscale),
|
||||
@@ -43,15 +44,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_clear_impedance(config[CONF_CLEAR_IMPEDANCE]))
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
#include "xiaomi_miscale.h"
|
||||
#include "esphome/components/esp32_ble/ble_uuid.h"
|
||||
#include "esphome/components/ble_device_base/ble_device.h"
|
||||
#include "esphome/core/log.h"
|
||||
|
||||
#ifdef USE_ESP32
|
||||
|
||||
namespace esphome::xiaomi_miscale {
|
||||
|
||||
static const char *const TAG = "xiaomi_miscale";
|
||||
@@ -14,7 +12,7 @@ void XiaomiMiscale::dump_config() {
|
||||
LOG_SENSOR(" ", "Impedance", this->impedance_);
|
||||
}
|
||||
|
||||
bool XiaomiMiscale::parse_device(const esp32_ble_tracker::ESPBTDevice &device) {
|
||||
bool XiaomiMiscale::parse_device(const ble_device_base::ESPBTDevice &device) {
|
||||
if (device.address_uint64() != this->address_) {
|
||||
ESP_LOGVV(TAG, "parse_device(): unknown MAC address.");
|
||||
return false;
|
||||
@@ -56,14 +54,14 @@ bool XiaomiMiscale::parse_device(const esp32_ble_tracker::ESPBTDevice &device) {
|
||||
return success;
|
||||
}
|
||||
|
||||
optional<ParseResult> XiaomiMiscale::parse_header_(const esp32_ble_tracker::ServiceData &service_data) {
|
||||
optional<ParseResult> XiaomiMiscale::parse_header_(const ble_device_base::ServiceData &service_data) {
|
||||
ParseResult result;
|
||||
if (service_data.uuid == esp32_ble_tracker::ESPBTUUID::from_uint16(0x181D) && service_data.data.size() == 10) {
|
||||
if (service_data.uuid == ble_device_base::ESPBTUUID::from_uint16(0x181D) && service_data.data.size() == 10) {
|
||||
result.version = 1;
|
||||
} else if (service_data.uuid == esp32_ble_tracker::ESPBTUUID::from_uint16(0x181B) && service_data.data.size() == 13) {
|
||||
} else if (service_data.uuid == ble_device_base::ESPBTUUID::from_uint16(0x181B) && service_data.data.size() == 13) {
|
||||
result.version = 2;
|
||||
} else {
|
||||
char uuid_buf[esp32_ble::UUID_STR_LEN];
|
||||
char uuid_buf[ble_device_base::UUID_STR_LEN];
|
||||
ESP_LOGVV(TAG,
|
||||
"parse_header(): Couldn't identify scale version or data size was not correct. UUID: %s, data_size: %d",
|
||||
service_data.uuid.to_str(uuid_buf), service_data.data.size());
|
||||
@@ -167,5 +165,3 @@ bool XiaomiMiscale::report_results_(const optional<ParseResult> &result, const c
|
||||
}
|
||||
|
||||
} // namespace esphome::xiaomi_miscale
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,12 +2,10 @@
|
||||
|
||||
#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 <vector>
|
||||
|
||||
#ifdef USE_ESP32
|
||||
|
||||
namespace esphome::xiaomi_miscale {
|
||||
|
||||
struct ParseResult {
|
||||
@@ -16,11 +14,11 @@ struct ParseResult {
|
||||
optional<float> impedance;
|
||||
};
|
||||
|
||||
class XiaomiMiscale final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
|
||||
class XiaomiMiscale final : public Component, public ble_device_base::ESPBTDeviceListener {
|
||||
public:
|
||||
void set_address(uint64_t address) { address_ = address; };
|
||||
|
||||
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_weight(sensor::Sensor *weight) { weight_ = weight; }
|
||||
void set_impedance(sensor::Sensor *impedance) { impedance_ = impedance; }
|
||||
@@ -32,7 +30,7 @@ class XiaomiMiscale final : public Component, public esp32_ble_tracker::ESPBTDev
|
||||
sensor::Sensor *impedance_{nullptr};
|
||||
bool clear_impedance_{false};
|
||||
|
||||
optional<ParseResult> parse_header_(const esp32_ble_tracker::ServiceData &service_data);
|
||||
optional<ParseResult> parse_header_(const ble_device_base::ServiceData &service_data);
|
||||
bool parse_message_(const std::vector<uint8_t> &message, ParseResult &result);
|
||||
bool parse_message_v1_(const std::vector<uint8_t> &message, ParseResult &result);
|
||||
bool parse_message_v2_(const std::vector<uint8_t> &message, ParseResult &result);
|
||||
@@ -40,5 +38,3 @@ class XiaomiMiscale final : public Component, public esp32_ble_tracker::ESPBTDev
|
||||
};
|
||||
|
||||
} // namespace esphome::xiaomi_miscale
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import esphome.codegen as cg
|
||||
from esphome.components import binary_sensor, esp32_ble_tracker, sensor
|
||||
from esphome.components import binary_sensor, ble_device_base, sensor
|
||||
import esphome.config_validation as cv
|
||||
from esphome.const import (
|
||||
CONF_BATTERY_LEVEL,
|
||||
@@ -20,18 +20,18 @@ from esphome.const import (
|
||||
UNIT_PERCENT,
|
||||
)
|
||||
|
||||
DEPENDENCIES = ["esp32_ble_tracker"]
|
||||
AUTO_LOAD = ["xiaomi_ble", "sensor"]
|
||||
AUTO_LOAD = ["ble_device_base", "xiaomi_ble", "sensor"]
|
||||
|
||||
xiaomi_mjyd02yla_ns = cg.esphome_ns.namespace("xiaomi_mjyd02yla")
|
||||
XiaomiMJYD02YLA = xiaomi_mjyd02yla_ns.class_(
|
||||
"XiaomiMJYD02YLA",
|
||||
binary_sensor.BinarySensor,
|
||||
cg.Component,
|
||||
esp32_ble_tracker.ESPBTDeviceListener,
|
||||
ble_device_base.ESPBTDeviceListener,
|
||||
)
|
||||
|
||||
CONFIG_SCHEMA = cv.All(
|
||||
ble_device_base.rename_legacy_hub_id("xiaomi_mjyd02yla"),
|
||||
binary_sensor.binary_sensor_schema(
|
||||
XiaomiMJYD02YLA, device_class=DEVICE_CLASS_MOTION
|
||||
)
|
||||
@@ -63,15 +63,15 @@ CONFIG_SCHEMA = cv.All(
|
||||
),
|
||||
}
|
||||
)
|
||||
.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 = await binary_sensor.new_binary_sensor(config)
|
||||
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]))
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
#include "esphome/core/helpers.h"
|
||||
#include "esphome/core/log.h"
|
||||
|
||||
#ifdef USE_ESP32
|
||||
|
||||
namespace esphome::xiaomi_mjyd02yla {
|
||||
|
||||
static const char *const TAG = "xiaomi_mjyd02yla";
|
||||
@@ -17,7 +15,7 @@ void XiaomiMJYD02YLA::dump_config() {
|
||||
LOG_SENSOR(" ", "Illuminance", this->illuminance_);
|
||||
}
|
||||
|
||||
bool XiaomiMJYD02YLA::parse_device(const esp32_ble_tracker::ESPBTDevice &device) {
|
||||
bool XiaomiMJYD02YLA::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 XiaomiMJYD02YLA::parse_device(const esp32_ble_tracker::ESPBTDevice &device)
|
||||
void XiaomiMJYD02YLA::set_bindkey(const char *bindkey) { parse_hex(bindkey, this->bindkey_, sizeof(this->bindkey_)); }
|
||||
|
||||
} // namespace esphome::xiaomi_mjyd02yla
|
||||
|
||||
#endif
|
||||
|
||||
@@ -3,21 +3,19 @@
|
||||
#include "esphome/core/component.h"
|
||||
#include "esphome/components/sensor/sensor.h"
|
||||
#include "esphome/components/binary_sensor/binary_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_mjyd02yla {
|
||||
|
||||
class XiaomiMJYD02YLA final : public Component,
|
||||
public binary_sensor::BinarySensorInitiallyOff,
|
||||
public esp32_ble_tracker::ESPBTDeviceListener {
|
||||
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_idle_time(sensor::Sensor *idle_time) { idle_time_ = idle_time; }
|
||||
@@ -35,5 +33,3 @@ class XiaomiMJYD02YLA final : public Component,
|
||||
};
|
||||
|
||||
} // namespace esphome::xiaomi_mjyd02yla
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
from esphome import core
|
||||
import esphome.codegen as cg
|
||||
from esphome.components import binary_sensor, esp32_ble_tracker
|
||||
from esphome.components import binary_sensor, ble_device_base
|
||||
import esphome.config_validation as cv
|
||||
from esphome.const import CONF_MAC_ADDRESS, CONF_TIMEOUT, DEVICE_CLASS_MOTION
|
||||
|
||||
DEPENDENCIES = ["esp32_ble_tracker"]
|
||||
AUTO_LOAD = ["xiaomi_ble"]
|
||||
AUTO_LOAD = ["ble_device_base", "xiaomi_ble"]
|
||||
|
||||
xiaomi_mue4094rt_ns = cg.esphome_ns.namespace("xiaomi_mue4094rt")
|
||||
XiaomiMUE4094RT = xiaomi_mue4094rt_ns.class_(
|
||||
"XiaomiMUE4094RT",
|
||||
binary_sensor.BinarySensor,
|
||||
cg.Component,
|
||||
esp32_ble_tracker.ESPBTDeviceListener,
|
||||
ble_device_base.ESPBTDeviceListener,
|
||||
)
|
||||
|
||||
CONFIG_SCHEMA = cv.All(
|
||||
ble_device_base.rename_legacy_hub_id("xiaomi_mue4094rt"),
|
||||
binary_sensor.binary_sensor_schema(
|
||||
XiaomiMUE4094RT, device_class=DEVICE_CLASS_MOTION
|
||||
)
|
||||
@@ -28,15 +28,15 @@ CONFIG_SCHEMA = cv.All(
|
||||
),
|
||||
}
|
||||
)
|
||||
.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 = await binary_sensor.new_binary_sensor(config)
|
||||
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_time(config[CONF_TIMEOUT]))
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
#include "xiaomi_mue4094rt.h"
|
||||
#include "esphome/core/log.h"
|
||||
|
||||
#ifdef USE_ESP32
|
||||
|
||||
namespace esphome::xiaomi_mue4094rt {
|
||||
|
||||
static const char *const TAG = "xiaomi_mue4094rt";
|
||||
@@ -12,7 +10,7 @@ void XiaomiMUE4094RT::dump_config() {
|
||||
LOG_BINARY_SENSOR(" ", "Motion", this);
|
||||
}
|
||||
|
||||
bool XiaomiMUE4094RT::parse_device(const esp32_ble_tracker::ESPBTDevice &device) {
|
||||
bool XiaomiMUE4094RT::parse_device(const ble_device_base::ESPBTDevice &device) {
|
||||
if (device.address_uint64() != this->address_) {
|
||||
ESP_LOGVV(TAG, "parse_device(): unknown MAC address.");
|
||||
return false;
|
||||
@@ -51,5 +49,3 @@ bool XiaomiMUE4094RT::parse_device(const esp32_ble_tracker::ESPBTDevice &device)
|
||||
}
|
||||
|
||||
} // namespace esphome::xiaomi_mue4094rt
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,20 +2,18 @@
|
||||
|
||||
#include "esphome/core/component.h"
|
||||
#include "esphome/components/binary_sensor/binary_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_mue4094rt {
|
||||
|
||||
class XiaomiMUE4094RT final : public Component,
|
||||
public binary_sensor::BinarySensorInitiallyOff,
|
||||
public esp32_ble_tracker::ESPBTDeviceListener {
|
||||
public ble_device_base::ESPBTDeviceListener {
|
||||
public:
|
||||
void set_address(uint64_t address) { address_ = address; }
|
||||
|
||||
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_time(uint16_t timeout) { timeout_ = timeout; }
|
||||
@@ -26,5 +24,3 @@ class XiaomiMUE4094RT final : public Component,
|
||||
};
|
||||
|
||||
} // namespace esphome::xiaomi_mue4094rt
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
sensor:
|
||||
- platform: xiaomi_miscale
|
||||
mac_address: '5C:CA:D3:70:D4:A2'
|
||||
weight:
|
||||
name: "Xiaomi Mi Scale Weight"
|
||||
impedance:
|
||||
name: "Xiaomi Mi Scale Impedance"
|
||||
@@ -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_miscale
|
||||
ble_hub_id: ble_tracker_hub
|
||||
mac_address: '5C:CA:D3:70:D4:A2'
|
||||
weight:
|
||||
name: "Xiaomi Mi Scale Weight"
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
packages:
|
||||
ln882h_ble_tracker: !include ../ln882h_ble_tracker/common.yaml
|
||||
xiaomi_miscale: !include common-ln.yaml
|
||||
@@ -0,0 +1,20 @@
|
||||
# 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_miscale
|
||||
ble_hub_id: ble_tracker_hub
|
||||
mac_address: '5C:CA:D3:70:D4:A2'
|
||||
weight:
|
||||
name: "Xiaomi Mi Scale Weight"
|
||||
impedance:
|
||||
name: "Xiaomi Mi Scale Impedance"
|
||||
# No ble_hub_id: exercises the generated binding real configs use.
|
||||
- platform: xiaomi_miscale
|
||||
mac_address: '5C:CA:D3:70:D4:A3'
|
||||
weight:
|
||||
name: "BK Xiaomi Mi Scale Implicit Weight"
|
||||
@@ -0,0 +1,11 @@
|
||||
binary_sensor:
|
||||
- platform: xiaomi_mjyd02yla
|
||||
name: MJYD02YL-A Motion
|
||||
mac_address: 50:EC:50:CD:32:02
|
||||
bindkey: 48403ebe2d385db8d0c187f81e62cb64
|
||||
idle_time:
|
||||
name: MJYD02YL-A Idle Time
|
||||
light:
|
||||
name: MJYD02YL-A Light Status
|
||||
battery_level:
|
||||
name: MJYD02YL-A Battery Level
|
||||
@@ -1,7 +1,10 @@
|
||||
esp32_ble_tracker:
|
||||
id: ble_tracker_hub
|
||||
|
||||
binary_sensor:
|
||||
# Explicit ble_hub_id: pins the neutral binding as a declared key.
|
||||
- platform: xiaomi_mjyd02yla
|
||||
ble_hub_id: ble_tracker_hub
|
||||
name: MJYD02YL-A Motion
|
||||
mac_address: 50:EC:50:CD:32:02
|
||||
bindkey: 48403ebe2d385db8d0c187f81e62cb64
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
packages:
|
||||
ln882h_ble_tracker: !include ../ln882h_ble_tracker/common.yaml
|
||||
xiaomi_mjyd02yla: !include common-ln.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
|
||||
|
||||
binary_sensor:
|
||||
# Explicit ble_hub_id: pins the neutral binding as a declared key.
|
||||
- platform: xiaomi_mjyd02yla
|
||||
ble_hub_id: ble_tracker_hub
|
||||
name: MJYD02YL-A Motion
|
||||
mac_address: 50:EC:50:CD:32:02
|
||||
bindkey: 48403ebe2d385db8d0c187f81e62cb64
|
||||
idle_time:
|
||||
name: MJYD02YL-A Idle Time
|
||||
light:
|
||||
name: MJYD02YL-A Light Status
|
||||
battery_level:
|
||||
name: MJYD02YL-A Battery Level
|
||||
# No ble_hub_id: exercises the generated binding real configs use.
|
||||
- platform: xiaomi_mjyd02yla
|
||||
name: BK MJYD02YL-A Implicit Motion
|
||||
mac_address: 50:EC:50:CD:32:03
|
||||
bindkey: 48403ebe2d385db8d0c187f81e62cb64
|
||||
@@ -0,0 +1,5 @@
|
||||
binary_sensor:
|
||||
- platform: xiaomi_mue4094rt
|
||||
name: MUE4094RT Motion
|
||||
mac_address: 7A:80:8E:19:36:BA
|
||||
timeout: 5s
|
||||
@@ -1,7 +1,10 @@
|
||||
esp32_ble_tracker:
|
||||
id: ble_tracker_hub
|
||||
|
||||
binary_sensor:
|
||||
# Explicit ble_hub_id: pins the neutral binding as a declared key.
|
||||
- platform: xiaomi_mue4094rt
|
||||
ble_hub_id: ble_tracker_hub
|
||||
name: MUE4094RT Motion
|
||||
mac_address: 7A:80:8E:19:36:BA
|
||||
timeout: 5s
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
packages:
|
||||
ln882h_ble_tracker: !include ../ln882h_ble_tracker/common.yaml
|
||||
xiaomi_mue4094rt: !include common-ln.yaml
|
||||
@@ -0,0 +1,18 @@
|
||||
# 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
|
||||
|
||||
binary_sensor:
|
||||
# Explicit ble_hub_id: pins the neutral binding as a declared key.
|
||||
- platform: xiaomi_mue4094rt
|
||||
ble_hub_id: ble_tracker_hub
|
||||
name: MUE4094RT Motion
|
||||
mac_address: 7A:80:8E:19:36:BA
|
||||
timeout: 5s
|
||||
# No ble_hub_id: exercises the generated binding real configs use.
|
||||
- platform: xiaomi_mue4094rt
|
||||
name: BK MUE4094RT Implicit Motion
|
||||
mac_address: 7A:80:8E:19:36:BB
|
||||
timeout: 5s
|
||||
Reference in New Issue
Block a user