diff --git a/components/sensor/images/xiaomi_miscale.jpg b/components/sensor/images/xiaomi_miscale.jpg new file mode 100644 index 000000000..1173ff0ea Binary files /dev/null and b/components/sensor/images/xiaomi_miscale.jpg differ diff --git a/components/sensor/images/xiaomi_miscale2.jpg b/components/sensor/images/xiaomi_miscale2.jpg new file mode 100644 index 000000000..81f767bbe Binary files /dev/null and b/components/sensor/images/xiaomi_miscale2.jpg differ diff --git a/components/sensor/xiaomi_miscale.rst b/components/sensor/xiaomi_miscale.rst new file mode 100644 index 000000000..a4f7087db --- /dev/null +++ b/components/sensor/xiaomi_miscale.rst @@ -0,0 +1,100 @@ +Xiaomi Miscale Sensors +======================== + +.. seo:: + :description: Instructions for setting up Xiaomi Miscale bluetooth-based sensors in ESPHome. + :image: xiaomi_miscale.jpg + :keywords: Xiaomi, BLE, Bluetooth, XMTZC01HM, XMTZC04HM + +The ``xiaomi_miscale`` sensor platform lets you track the output of Xiaomi Bluetooth Low Energy devices using the :doc:`/components/esp32_ble_tracker`. This component will track, for example, the weight of the device every time the sensor sends out a BLE broadcast. Contrary to other implementations, ``xiaomi_miscale`` listens passively to advertisement packets and does not pair with the device. Hence ESPHome has no impact on battery life. + +To get the body scores using your weight, height, age and gender see the custom_components ``__ + +Supported Devices +----------------- + +XMTZC01HM, XMTZC04HM +******************** + +Miscale measures weight. + +.. figure:: images/xiaomi_miscale.jpg + :align: center + :width: 60.0% + +Configuration example: + +.. code-block:: yaml + + sensor: + - platform: xiaomi_miscale + mac_address: 'C8:47:8C:9F:7B:0A' + weight: + name: "Xiaomi Mi Scale Weight" + +Configuration example with multiple users : + +You have to replace the numbers in the lambdas to determine your weight which is between X weight and X weight. + +.. code-block:: yaml + + sensor: + - platform: xiaomi_miscale + mac_address: 'C8:47:8C:9F:7B:0A' + weight: + name: "Xiaomi Mi Scale Weight" + id: weight_miscale + on_value: + then: + - lambda: |- + if (id(weight_miscale).state >= 69 && id(weight_miscale).state <= 74.49) { + return id(weight_user1).publish_state(x);} + else if (id(weight_miscale).state >= 74.50 && id(weight_miscale).state <= 83) { + return id(weight_user2).publish_state(x);} + else if (id(weight_miscale).state >= 46 && id(weight_miscale).state <= 65) { + return id(weight_user3).publish_state(x);} + else if (id(weight_miscale).state >= 28 && id(weight_miscale).state <= 45) { + return id(weight_user4).publish_state(x);} + else if (id(weight_miscale).state >= 5 && id(weight_miscale).state <= 20) { + return id(weight_user5).publish_state(x);} + + - platform: template + name: Weight Aurélien + id: weight_user1 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Weight Siham + id: weight_user2 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Weight Théo + id: weight_user3 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Weight Sacha + id: weight_user4 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Weight Noham + id: weight_user5 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + + +See Also +-------- + +- :doc:`/components/esp32_ble_tracker` +- :doc:`/components/sensor/index` +- bodymiscale score integration for Home Assistant (bodymiscale custom component) ``__ + +- :ghedit:`Edit` diff --git a/components/sensor/xiaomi_miscale2.rst b/components/sensor/xiaomi_miscale2.rst new file mode 100644 index 000000000..ad1f40c1b --- /dev/null +++ b/components/sensor/xiaomi_miscale2.rst @@ -0,0 +1,149 @@ +Xiaomi Miscale2 Sensors +======================== + +.. seo:: + :description: Instructions for setting up Xiaomi Miscale2 bluetooth-based sensors in ESPHome. + :image: xiaomi_miscale2.jpg + :keywords: Xiaomi, BLE, Bluetooth, XMTZC02HM, XMTZC05HM + +The ``xiaomi_miscale2`` sensor platform lets you track the output of Xiaomi Bluetooth Low Energy devices using the :doc:`/components/esp32_ble_tracker`. This component will track, for example, the weight and the impedance of the device every time the sensor sends out a BLE broadcast. Contrary to other implementations, ``xiaomi_miscale2`` listens passively to advertisement packets and does not pair with the device. Hence ESPHome has no impact on battery life. + +To get the body scores using your weight, height, age and gender see the custom_components ``__ + +Supported Devices +----------------- + +XMTZC02HM, XMTZC05HM +******************** + +Miscale2 measures weight and impedance. + +.. figure:: images/xiaomi_miscale2.jpg + :align: center + :width: 60.0% + +Configuration example: + +.. code-block:: yaml + + sensor: + - platform: xiaomi_miscale2 + mac_address: '5C:CA:D3:70:D4:A2' + weight: + name: "Xiaomi Mi Scale Weight" + impedance: + name: "Xiaomi Mi Scale Impedance" + +Configuration example with multiple users : + +You have to replace the numbers in the lambdas to determine your weight which is between X weight and X weight. + +.. code-block:: yaml + + sensor: + - platform: xiaomi_miscale2 + mac_address: '5C:CA:D3:70:D4:A2' + weight: + name: "Xiaomi Mi Scale Weight" + id: weight_miscale + on_value: + then: + - lambda: |- + if (id(weight_miscale).state >= 69 && id(weight_miscale).state <= 74.49) { + return id(weight_user1).publish_state(x);} + else if (id(weight_miscale).state >= 74.50 && id(weight_miscale).state <= 83) { + return id(weight_user2).publish_state(x);} + else if (id(weight_miscale).state >= 46 && id(weight_miscale).state <= 65) { + return id(weight_user3).publish_state(x);} + else if (id(weight_miscale).state >= 28 && id(weight_miscale).state <= 45) { + return id(weight_user4).publish_state(x);} + else if (id(weight_miscale).state >= 5 && id(weight_miscale).state <= 20) { + return id(weight_user5).publish_state(x);} + + impedance: + name: "Xiaomi Mi Scale Impedance" + id: impedance_xiaomi + on_value: + then: + - lambda: |- + if (id(weight_miscale).state >= 69 && id(weight_miscale).state <= 74.49) { + return id(impedance_user1).publish_state(x);} + else if (id(weight_miscale).state >= 74.50 && id(weight_miscale).state <= 83) { + return id(impedance_user2).publish_state(x);} + else if (id(weight_miscale).state >= 46 && id(weight_miscale).state <= 65) { + return id(impedance_user3).publish_state(x);} + else if (id(weight_miscale).state >= 28 && id(weight_miscale).state <= 45) { + return id(impedance_user4).publish_state(x);} + else if (id(weight_miscale).state >= 5 && id(weight_miscale).state <= 20) { + return id(impedance_user5).publish_state(x);} + + - platform: template + name: Weight Aurélien + id: weight_user1 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Impedance Aurélien + id: impedance_user1 + unit_of_measurement: 'ohm' + icon: mdi:omega + accuracy_decimals: 0 + - platform: template + name: Weight Siham + id: weight_user2 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Impedance Siham + id: impedance_user2 + unit_of_measurement: 'ohm' + icon: mdi:omega + accuracy_decimals: 0 + - platform: template + name: Weight Théo + id: weight_user3 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Impedance Théo + id: impedance_user3 + unit_of_measurement: 'ohm' + icon: mdi:omega + accuracy_decimals: 0 + - platform: template + name: Weight Sacha + id: weight_user4 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Impedance Sacha + id: impedance_user4 + unit_of_measurement: 'ohm' + icon: mdi:omega + accuracy_decimals: 0 + - platform: template + name: Weight Noham + id: weight_user5 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Impedance Noham + id: impedance_user5 + unit_of_measurement: 'ohm' + icon: mdi:omega + accuracy_decimals: 0 + + +See Also +-------- + +- :doc:`/components/esp32_ble_tracker` +- :doc:`/components/sensor/index` +- bodymiscale score integration for Home Assistant (bodymiscale custom component) ``__ + +- :ghedit:`Edit` diff --git a/images/xiaomi_miscale.jpg b/images/xiaomi_miscale.jpg new file mode 100644 index 000000000..6f6547db9 Binary files /dev/null and b/images/xiaomi_miscale.jpg differ diff --git a/images/xiaomi_miscale2.jpg b/images/xiaomi_miscale2.jpg new file mode 100644 index 000000000..e9f8dac08 Binary files /dev/null and b/images/xiaomi_miscale2.jpg differ diff --git a/index.rst b/index.rst index 8b7fd52bb..d03b97954 100644 --- a/index.rst +++ b/index.rst @@ -172,6 +172,8 @@ Sensor Components VL53L0x, components/sensor/vl53l0x, vl53l0x.jpg WiFi Signal Strength, components/sensor/wifi_signal, network-wifi.svg Xiaomi BLE, components/sensor/xiaomi_ble, xiaomi_mijia_logo.jpg + Xiaomi Miscale, components/sensor/xiaomi_miscale, xiaomi_miscale.jpg + Xiaomi Miscale2, components/sensor/xiaomi_miscale2, xiaomi_miscale2.jpg ZyAura, components/sensor/zyaura, zgm053.jpg Custom Sensor, components/sensor/custom, language-cpp.svg