hassio-addons/mi-scale
2021-01-11 09:17:52 +08:00
..
dockerscripts 0.1.13 2020-11-24 10:14:07 +00:00
src Update Xiaomi_Scale.py 2021-01-11 09:17:52 +08:00
.DS_Store change message to Chinese 2021-01-07 17:21:36 +08:00
CHANGELOG.md 0.1.16 2020-11-26 10:45:35 +00:00
config.json Update config.json 2021-01-07 21:43:11 +08:00
Dockerfile 0.1.16 2020-11-26 10:45:35 +00:00
icon.png add-on repo 2020-07-06 14:08:56 +01:00
logo.png add-on repo 2020-07-06 14:08:56 +01:00
README.md 0.1.14 2020-11-24 12:09:34 +00:00

Xiaomi Mi Scale Add On for Home Assistant

Add-On for HomeAssistant to read weight measurements from Xiaomi Body Scales.

BREAKING CHANGE:

Please note there was a breaking change in 0.1.8. The MQTT message json attributes are now in lower snake_case to be compliant with Home-Assistant Attributes. This means Home-Assistant sensor configuration needs to be adjusted. For example value_template: "{{ value_json['Weight'] }}" Needs to be replaced with value_template: "{{ value_json['weight'] }}" (note the lowercase w in weight)

Supported Scales:

Name Model Picture
Mi Smart Scale 2                                                                                               XMTZCO1HM, XMTZC04HM Mi Scale_2
Mi Body Composition Scale XMTZC02HM Mi Scale
Mi Body Composition Scale 2 XMTZC05HM Mi Body Composition Scale 2

Setup

  1. Retrieve the scale's MAC Address from the Xiaomi Mi Fit App:

MAC Address

  1. Open Home Assistant and navigate to add-on store. Click on the 3 dots (top right) and select Repositories
  2. Enter https://github.com/lolouk44/hassio-addons in the box and click on Add
  3. You should now see Lolouk44 Add-Ons at the bottom list:
  4. Click on Xiaomi Mi Scale then click on Install
  5. Edit the Configuration
Option Type Required Description
HCI_DEV string No Bluetooth hci device to use. Defaults to hci0
MISCALE_MAC string Yes Mac address of your scale
MQTT_PREFIX string No MQTT Topic Prefix. Defaults to miscale
MQTT_HOST string Yes MQTT Server (defaults to 127.0.0.1)
MQTT_USERNAME string No Username for MQTT server (comment out if not required)
MQTT_PASSWORD string No Password for MQTT (comment out if not required)
MQTT_PORT int No Defaults to 1883
TIME_INTERVAL int No Time in sec between each query to the scale, to allow other applications to use the Bluetooth module. Defaults to 30
MQTT_DISCOVERY bool No MQTT Discovery for Home Assistant Defaults to true
MQTT_DISCOVERY_PREFIX string No MQTT Discovery Prefix for Home Assistant. Defaults to homeassistant

Auto-gender selection/config -- This is used to create the calculations such as BMI, Water/Bone Mass etc... Up to 3 users possible as long as weights do not overlap!

Here is the logic used to assign a measured weight to a user:

if [measured value in kg] is greater than USER1_GT, assign it to USER1
else if [measured value in kg] is less than USER2_LT, assign it to USER2
else assign it to USER3 (e.g. USER2_LT < [measured value in kg] < USER1_GT)
Option Type Required Description
USER1_GT int Yes If the weight (in kg) is greater than this number, we'll assume that we're weighing User #1
USER1_SEX string Yes male / female
USER1_NAME string Yes Name of the user
USER1_HEIGHT int Yes Height (in cm) of the user
USER1_DOB string Yes DOB (in yyyy-mm-dd format)
USER2_LT int No If the weight (in kg) is less than this number, we'll assume that we're weighing User #2. Defaults to USER1_GT Value
USER2_SEX string No male / female. Defaults to female
USER2_NAME string No Name of the user. Defaults to Serena
USER2_HEIGHT int No Height (in cm) of the user. Defaults to 95
USER2_DOB string No DOB (in yyyy-mm-dd format). Defaults to 1990-01-01
USER3_SEX string No male / female. Defaults to female
USER3_NAME string No Name of the user. Defaults to Missy
USER3_HEIGHT int No Height (in cm) of the user. Defaults to 150
USER3_DOB string No DOB (in yyyy-mm-dd format). Defaults to 1990-01-01
  1. Start the add-on

Home-Assistant Setup:

Under the sensor block, enter as many blocks as users configured in your environment variables:

  - platform: mqtt
    name: "Example Name Weight"
    state_topic: "miscale/USER_NAME/weight"
    value_template: "{{ value_json['weight'] }}"
    unit_of_measurement: "kg"
    json_attributes_topic: "miscale/USER_NAME/weight"
    icon: mdi:scale-bathroom

  - platform: mqtt
    name: "Example Name BMI"
    state_topic: "miscale/USER_NAME/weight"
    value_template: "{{ value_json['bmi'] }}"
    icon: mdi:human-pregnant
    unit_of_measurement: "kg/m2"

Mi Scale

Mi Scale

Acknowledgements:

Thanks to @syssi (https://gist.github.com/syssi/4108a54877406dc231d95514e538bde9) and @prototux (https://github.com/wiecosystem/Bluetooth) for their initial code

Special thanks to @ned-kelly for his help turning a "simple" python script into a fully fledged docker container

Thanks to @bpaulin, @AiiR42 for their PRs and collaboration