diff --git a/components/sensor/images/xiaomi_miscale.jpg b/components/sensor/images/xiaomi_miscale.jpg index 1173ff0ea..128583c9d 100644 Binary files a/components/sensor/images/xiaomi_miscale.jpg 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 deleted file mode 100644 index 91fd5b19a..000000000 Binary files a/components/sensor/images/xiaomi_miscale2.jpg and /dev/null differ diff --git a/components/sensor/xiaomi_miscale.rst b/components/sensor/xiaomi_miscale.rst index bf95eb9c8..fc57c5bf2 100644 --- a/components/sensor/xiaomi_miscale.rst +++ b/components/sensor/xiaomi_miscale.rst @@ -4,7 +4,7 @@ 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 + :keywords: Xiaomi, Miscale, BLE, Bluetooth, XMTZC01HM, XMTZC04HM, XMTZC02HM, XMTZC05HM 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. @@ -13,26 +13,42 @@ To get the body scores using your weight, height, age and gender see the custom_ Supported Devices ----------------- -XMTZC01HM, XMTZC04HM -******************** +XMTZC01HM, XMTZC04HM, XMTZC02HM, XMTZC05HM +****************************************** -Miscale measures weight. +Miscale (left) measures weight only. Miscale2 (right) measures weight and impedance. .. 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' + 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 : +Configuration variables: +------------------------ + +- **mac_address** (**Required**, MAC Address): The MAC address of the scale. +- **weight** (*Optional*): The information for the weight sensor. + + - **name** (**Required**, string): The name for the weight sensor. + - All other options from :ref:`Sensor `. + +- **impedance** (*Optional*): The information for the impedance sensor. **Only available on MiScale2** + + - **name** (**Required**, string): The name for the impedance sensor. + - All other options from :ref:`Sensor `. + + +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. @@ -40,23 +56,28 @@ You have to replace the numbers in the lambdas to determine your weight which is sensor: - platform: xiaomi_miscale - mac_address: 'C8:47:8C:9F:7B:0A' + 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) { + 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);} - platform: template name: Weight Aurélien @@ -64,6 +85,12 @@ You have to replace the numbers in the lambdas to determine your weight which is 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 @@ -71,23 +98,11 @@ You have to replace the numbers in the lambdas to determine your weight which is 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 + name: Impedance Siham + id: impedance_user2 + unit_of_measurement: 'ohm' + icon: mdi:omega + accuracy_decimals: 0 See Also diff --git a/components/sensor/xiaomi_miscale2.rst b/components/sensor/xiaomi_miscale2.rst index f0e58feb2..525df43cf 100644 --- a/components/sensor/xiaomi_miscale2.rst +++ b/components/sensor/xiaomi_miscale2.rst @@ -1,150 +1,4 @@ -Xiaomi Miscale2 Sensors -======================== +Xiaomi Miscale2 combined into Xiaomi Miscale +============================================ -.. 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) ``__ -- bodymiscale Lovelace Card ``__ - -- :ghedit:`Edit` +:doc:`/components/sensor/xiaomi_miscale` diff --git a/images/xiaomi_miscale1&2.jpg b/images/xiaomi_miscale1&2.jpg new file mode 100644 index 000000000..52414148d Binary files /dev/null and b/images/xiaomi_miscale1&2.jpg differ diff --git a/index.rst b/index.rst index 92a319537..31594196a 100644 --- a/index.rst +++ b/index.rst @@ -349,8 +349,7 @@ Weight .. imgtable:: HX711, components/sensor/hx711, hx711.jpg, Load cell amplifier - Xiaomi Miscale, components/sensor/xiaomi_miscale, xiaomi_miscale.jpg - Xiaomi Miscale2, components/sensor/xiaomi_miscale2, xiaomi_miscale2.jpg + Xiaomi Miscale, components/sensor/xiaomi_miscale, xiaomi_miscale1&2.jpg Looking for a sensor that outputs its values as an analog voltage? Have a look at the