mirror of
https://github.com/esphome/esphome.git
synced 2026-08-17 10:52:56 +08:00
[ble_device_base] Migrate BLE sensor platforms to the neutral layer (batch 13: xiaomi_rtcgq02lm, xiaomi_wx08zm, xiaomi_xmwsdj04mmc) (#18183)
This commit is contained in:
@@ -1,19 +1,19 @@
|
||||
import esphome.codegen as cg
|
||||
from esphome.components import esp32_ble_tracker
|
||||
from esphome.components import ble_device_base
|
||||
import esphome.config_validation as cv
|
||||
from esphome.const import CONF_BINDKEY, CONF_ID, CONF_MAC_ADDRESS
|
||||
|
||||
AUTO_LOAD = ["xiaomi_ble"]
|
||||
AUTO_LOAD = ["ble_device_base", "xiaomi_ble"]
|
||||
CODEOWNERS = ["@jesserockz"]
|
||||
DEPENDENCIES = ["esp32_ble_tracker"]
|
||||
MULTI_CONF = True
|
||||
|
||||
xiaomi_rtcgq02lm_ns = cg.esphome_ns.namespace("xiaomi_rtcgq02lm")
|
||||
XiaomiRTCGQ02LM = xiaomi_rtcgq02lm_ns.class_(
|
||||
"XiaomiRTCGQ02LM", esp32_ble_tracker.ESPBTDeviceListener, cg.Component
|
||||
"XiaomiRTCGQ02LM", ble_device_base.ESPBTDeviceListener, cg.Component
|
||||
)
|
||||
|
||||
CONFIG_SCHEMA = (
|
||||
CONFIG_SCHEMA = cv.All(
|
||||
ble_device_base.rename_legacy_hub_id("xiaomi_rtcgq02lm"),
|
||||
cv.Schema(
|
||||
{
|
||||
cv.GenerateID(): cv.declare_id(XiaomiRTCGQ02LM),
|
||||
@@ -21,15 +21,15 @@ CONFIG_SCHEMA = (
|
||||
cv.Required(CONF_MAC_ADDRESS): cv.mac_address,
|
||||
}
|
||||
)
|
||||
.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]))
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
#include "esphome/core/helpers.h"
|
||||
#include "esphome/core/log.h"
|
||||
|
||||
#ifdef USE_ESP32
|
||||
|
||||
namespace esphome::xiaomi_rtcgq02lm {
|
||||
|
||||
static const char *const TAG = "xiaomi_rtcgq02lm";
|
||||
@@ -24,7 +22,7 @@ void XiaomiRTCGQ02LM::dump_config() {
|
||||
#endif
|
||||
}
|
||||
|
||||
bool XiaomiRTCGQ02LM::parse_device(const esp32_ble_tracker::ESPBTDevice &device) {
|
||||
bool XiaomiRTCGQ02LM::parse_device(const ble_device_base::ESPBTDevice &device) {
|
||||
if (device.address_uint64() != this->address_) {
|
||||
ESP_LOGVV(TAG, "parse_device(): unknown MAC address.");
|
||||
return false;
|
||||
@@ -79,5 +77,3 @@ bool XiaomiRTCGQ02LM::parse_device(const esp32_ble_tracker::ESPBTDevice &device)
|
||||
void XiaomiRTCGQ02LM::set_bindkey(const char *bindkey) { parse_hex(bindkey, this->bindkey_, sizeof(this->bindkey_)); }
|
||||
|
||||
} // namespace esphome::xiaomi_rtcgq02lm
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
|
||||
#include "esphome/components/ble_device_base/ble_device.h"
|
||||
#include "esphome/core/defines.h"
|
||||
#ifdef USE_BINARY_SENSOR
|
||||
#include "esphome/components/binary_sensor/binary_sensor.h"
|
||||
@@ -11,16 +11,14 @@
|
||||
#include "esphome/components/xiaomi_ble/xiaomi_ble.h"
|
||||
#include "esphome/core/component.h"
|
||||
|
||||
#ifdef USE_ESP32
|
||||
|
||||
namespace esphome::xiaomi_rtcgq02lm {
|
||||
|
||||
class XiaomiRTCGQ02LM final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
|
||||
class XiaomiRTCGQ02LM 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;
|
||||
|
||||
#ifdef USE_BINARY_SENSOR
|
||||
@@ -54,5 +52,3 @@ class XiaomiRTCGQ02LM final : public Component, public esp32_ble_tracker::ESPBTD
|
||||
};
|
||||
|
||||
} // namespace esphome::xiaomi_rtcgq02lm
|
||||
|
||||
#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,
|
||||
@@ -12,18 +12,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_wx08zm_ns = cg.esphome_ns.namespace("xiaomi_wx08zm")
|
||||
XiaomiWX08ZM = xiaomi_wx08zm_ns.class_(
|
||||
"XiaomiWX08ZM",
|
||||
binary_sensor.BinarySensor,
|
||||
esp32_ble_tracker.ESPBTDeviceListener,
|
||||
ble_device_base.ESPBTDeviceListener,
|
||||
cg.Component,
|
||||
)
|
||||
|
||||
CONFIG_SCHEMA = cv.All(
|
||||
ble_device_base.rename_legacy_hub_id("xiaomi_wx08zm"),
|
||||
binary_sensor.binary_sensor_schema(XiaomiWX08ZM)
|
||||
.extend(
|
||||
{
|
||||
@@ -43,15 +43,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))
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
#include "xiaomi_wx08zm.h"
|
||||
#include "esphome/core/log.h"
|
||||
|
||||
#ifdef USE_ESP32
|
||||
|
||||
namespace esphome::xiaomi_wx08zm {
|
||||
|
||||
static const char *const TAG = "xiaomi_wx08zm";
|
||||
@@ -14,7 +12,7 @@ void XiaomiWX08ZM::dump_config() {
|
||||
LOG_SENSOR(" ", "Battery Level", this->battery_level_);
|
||||
}
|
||||
|
||||
bool XiaomiWX08ZM::parse_device(const esp32_ble_tracker::ESPBTDevice &device) {
|
||||
bool XiaomiWX08ZM::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,5 +54,3 @@ bool XiaomiWX08ZM::parse_device(const esp32_ble_tracker::ESPBTDevice &device) {
|
||||
}
|
||||
|
||||
} // namespace esphome::xiaomi_wx08zm
|
||||
|
||||
#endif
|
||||
|
||||
@@ -3,20 +3,18 @@
|
||||
#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_wx08zm {
|
||||
|
||||
class XiaomiWX08ZM 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_tablet(sensor::Sensor *tablet) { tablet_ = tablet; }
|
||||
@@ -29,5 +27,3 @@ class XiaomiWX08ZM final : public Component,
|
||||
};
|
||||
|
||||
} // namespace esphome::xiaomi_wx08zm
|
||||
|
||||
#endif
|
||||
|
||||
@@ -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,16 +17,16 @@ from esphome.const import (
|
||||
UNIT_PERCENT,
|
||||
)
|
||||
|
||||
AUTO_LOAD = ["xiaomi_ble"]
|
||||
AUTO_LOAD = ["ble_device_base", "xiaomi_ble"]
|
||||
CODEOWNERS = ["@medusalix"]
|
||||
DEPENDENCIES = ["esp32_ble_tracker"]
|
||||
|
||||
xiaomi_xmwsdj04mmc_ns = cg.esphome_ns.namespace("xiaomi_xmwsdj04mmc")
|
||||
XiaomiXMWSDJ04MMC = xiaomi_xmwsdj04mmc_ns.class_(
|
||||
"XiaomiXMWSDJ04MMC", esp32_ble_tracker.ESPBTDeviceListener, cg.Component
|
||||
"XiaomiXMWSDJ04MMC", ble_device_base.ESPBTDeviceListener, cg.Component
|
||||
)
|
||||
|
||||
CONFIG_SCHEMA = (
|
||||
CONFIG_SCHEMA = cv.All(
|
||||
ble_device_base.rename_legacy_hub_id("xiaomi_xmwsdj04mmc"),
|
||||
cv.Schema(
|
||||
{
|
||||
cv.GenerateID(): cv.declare_id(XiaomiXMWSDJ04MMC),
|
||||
@@ -53,15 +53,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]))
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
#include "esphome/core/helpers.h"
|
||||
#include "esphome/core/log.h"
|
||||
|
||||
#ifdef USE_ESP32
|
||||
|
||||
namespace esphome::xiaomi_xmwsdj04mmc {
|
||||
|
||||
static const char *const TAG = "xiaomi_xmwsdj04mmc";
|
||||
@@ -21,7 +19,7 @@ void XiaomiXMWSDJ04MMC::dump_config() {
|
||||
LOG_SENSOR(" ", "Battery Level", this->battery_level_);
|
||||
}
|
||||
|
||||
bool XiaomiXMWSDJ04MMC::parse_device(const esp32_ble_tracker::ESPBTDevice &device) {
|
||||
bool XiaomiXMWSDJ04MMC::parse_device(const ble_device_base::ESPBTDevice &device) {
|
||||
if (device.address_uint64() != this->address_) {
|
||||
ESP_LOGVV(TAG, "parse_device(): unknown MAC address.");
|
||||
return false;
|
||||
@@ -69,5 +67,3 @@ bool XiaomiXMWSDJ04MMC::parse_device(const esp32_ble_tracker::ESPBTDevice &devic
|
||||
void XiaomiXMWSDJ04MMC::set_bindkey(const char *bindkey) { parse_hex(bindkey, this->bindkey_, sizeof(this->bindkey_)); }
|
||||
|
||||
} // namespace esphome::xiaomi_xmwsdj04mmc
|
||||
|
||||
#endif
|
||||
|
||||
@@ -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_xmwsdj04mmc {
|
||||
|
||||
class XiaomiXMWSDJ04MMC final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
|
||||
class XiaomiXMWSDJ04MMC final : public Component, public ble_device_base::ESPBTDeviceListener {
|
||||
public:
|
||||
void set_address(uint64_t address) { this->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) { this->temperature_ = temperature; }
|
||||
@@ -30,5 +28,3 @@ class XiaomiXMWSDJ04MMC final : public Component, public esp32_ble_tracker::ESPB
|
||||
};
|
||||
|
||||
} // namespace esphome::xiaomi_xmwsdj04mmc
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
xiaomi_rtcgq02lm:
|
||||
- id: motion_rtcgq02lm
|
||||
mac_address: 01:02:03:04:05:06
|
||||
bindkey: "48403ebe2d385db8d0c187f81e62cb64"
|
||||
|
||||
binary_sensor:
|
||||
- platform: xiaomi_rtcgq02lm
|
||||
id: motion_rtcgq02lm
|
||||
motion:
|
||||
name: Mi Motion Sensor 2
|
||||
light:
|
||||
name: Mi Motion Sensor 2 Light
|
||||
button:
|
||||
name: Mi Motion Sensor 2 Button
|
||||
|
||||
sensor:
|
||||
- platform: xiaomi_rtcgq02lm
|
||||
id: motion_rtcgq02lm
|
||||
battery_level:
|
||||
name: Mi Motion Sensor 2 Battery level
|
||||
@@ -1,7 +1,10 @@
|
||||
esp32_ble_tracker:
|
||||
id: ble_tracker_hub
|
||||
|
||||
# Explicit ble_hub_id: pins the neutral binding as a declared key.
|
||||
xiaomi_rtcgq02lm:
|
||||
- id: motion_rtcgq02lm
|
||||
ble_hub_id: ble_tracker_hub
|
||||
mac_address: 01:02:03:04:05:06
|
||||
bindkey: "48403ebe2d385db8d0c187f81e62cb64"
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
packages:
|
||||
ln882h_ble_tracker: !include ../ln882h_ble_tracker/common.yaml
|
||||
xiaomi_rtcgq02lm: !include common-ln.yaml
|
||||
@@ -0,0 +1,32 @@
|
||||
# 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
|
||||
|
||||
# Explicit ble_hub_id: pins the neutral binding as a declared key.
|
||||
xiaomi_rtcgq02lm:
|
||||
- id: motion_rtcgq02lm
|
||||
ble_hub_id: ble_tracker_hub
|
||||
mac_address: 01:02:03:04:05:06
|
||||
bindkey: "48403ebe2d385db8d0c187f81e62cb64"
|
||||
|
||||
# No ble_hub_id: exercises the generated binding real configs use.
|
||||
- id: motion_rtcgq02lm_implicit
|
||||
mac_address: 01:02:03:04:05:07
|
||||
bindkey: "48403ebe2d385db8d0c187f81e62cb64"
|
||||
binary_sensor:
|
||||
- platform: xiaomi_rtcgq02lm
|
||||
id: motion_rtcgq02lm
|
||||
motion:
|
||||
name: Mi Motion Sensor 2
|
||||
light:
|
||||
name: Mi Motion Sensor 2 Light
|
||||
button:
|
||||
name: Mi Motion Sensor 2 Button
|
||||
|
||||
sensor:
|
||||
- platform: xiaomi_rtcgq02lm
|
||||
id: motion_rtcgq02lm
|
||||
battery_level:
|
||||
name: Mi Motion Sensor 2 Battery level
|
||||
@@ -0,0 +1,8 @@
|
||||
binary_sensor:
|
||||
- platform: xiaomi_wx08zm
|
||||
name: WX08ZM Activation State
|
||||
mac_address: 74:a3:4a:b5:07:34
|
||||
tablet:
|
||||
name: WX08ZM Tablet Resource
|
||||
battery_level:
|
||||
name: WX08ZM 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_wx08zm
|
||||
ble_hub_id: ble_tracker_hub
|
||||
name: WX08ZM Activation State
|
||||
mac_address: 74:a3:4a:b5:07:34
|
||||
tablet:
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
packages:
|
||||
ln882h_ble_tracker: !include ../ln882h_ble_tracker/common.yaml
|
||||
xiaomi_wx08zm: !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
|
||||
|
||||
binary_sensor:
|
||||
# Explicit ble_hub_id: pins the neutral binding as a declared key.
|
||||
- platform: xiaomi_wx08zm
|
||||
ble_hub_id: ble_tracker_hub
|
||||
name: WX08ZM Activation State
|
||||
mac_address: 74:a3:4a:b5:07:34
|
||||
tablet:
|
||||
name: WX08ZM Tablet Resource
|
||||
battery_level:
|
||||
name: WX08ZM Battery Level
|
||||
# No ble_hub_id: exercises the generated binding real configs use.
|
||||
- platform: xiaomi_wx08zm
|
||||
name: BK WX08ZM Implicit Activation State
|
||||
mac_address: 74:a3:4a:b5:07:35
|
||||
@@ -0,0 +1,10 @@
|
||||
sensor:
|
||||
- platform: xiaomi_xmwsdj04mmc
|
||||
mac_address: 84:B4:DB:5D:A3:8F
|
||||
bindkey: d8ca2ed09bb5541dc8f045ca360b00ea
|
||||
temperature:
|
||||
name: Xiaomi XMWSDJ04MMC Temperature
|
||||
humidity:
|
||||
name: Xiaomi XMWSDJ04MMC Humidity
|
||||
battery_level:
|
||||
name: Xiaomi XMWSDJ04MMC Battery Level
|
||||
@@ -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_xmwsdj04mmc
|
||||
ble_hub_id: ble_tracker_hub
|
||||
mac_address: 84:B4:DB:5D:A3:8F
|
||||
bindkey: d8ca2ed09bb5541dc8f045ca360b00ea
|
||||
temperature:
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
packages:
|
||||
ln882h_ble_tracker: !include ../ln882h_ble_tracker/common.yaml
|
||||
xiaomi_xmwsdj04mmc: !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
|
||||
|
||||
sensor:
|
||||
# Explicit ble_hub_id: pins the neutral binding as a declared key.
|
||||
- platform: xiaomi_xmwsdj04mmc
|
||||
ble_hub_id: ble_tracker_hub
|
||||
mac_address: 84:B4:DB:5D:A3:8F
|
||||
bindkey: d8ca2ed09bb5541dc8f045ca360b00ea
|
||||
temperature:
|
||||
name: Xiaomi XMWSDJ04MMC Temperature
|
||||
humidity:
|
||||
name: Xiaomi XMWSDJ04MMC Humidity
|
||||
battery_level:
|
||||
name: Xiaomi XMWSDJ04MMC Battery Level
|
||||
# No ble_hub_id: exercises the generated binding real configs use.
|
||||
- platform: xiaomi_xmwsdj04mmc
|
||||
mac_address: 84:B4:DB:5D:A3:90
|
||||
bindkey: d8ca2ed09bb5541dc8f045ca360b00ea
|
||||
temperature:
|
||||
name: BK Xiaomi XMWSDJ04MMC Implicit Temperature
|
||||
Reference in New Issue
Block a user