Intégrer les balances Xiaomi dans Home Assistant

par 20 Oct, 2020Add-ons, Articles, Bluetooth, HACS, Interfaces, MQTT, Protocoles0 commentaires

Article Sous Licence CC 4.0

Nous allons voir comment ajouter les balances Xiaomi dans Home Assistant et suivre nos informations corporelles. Nous allons utiliser un add-on qui permet de récupérer dans Home Assistant jusqu’à 3 personnes. La différenciation des personnes se fait sur grâce à la définition de 3 fourchettes de poids. Autant vous avertir tout de suite, si vous et votre moitié faites à peu près le même poids, seul l’un de vous pourra l’utiliser afin de suivre sa courbe de poids malheureusement.

Niveau requis

  • Débutant / Intermédiaire / Avancé

Matériels nécessaires / Matériels utilisés / Prérequis

  • Mi Smart Scale 2 (XMTZCO1HM, XMTZC04HM),
  • Mi Body Composition Scale (XMTZC02HM),
  • Mi Body Composition Scale 2 (XMTZC05HM).

Récupérer l’adresse MAC de votre balance.

Mi Fit.

Lancer votre application Mi Fit (Android,iOS), profil puis dans Mes appareils cliquer sur votre balance.

Récupérer Adresse MAC via Xiaomi MiFit

OpenScale.

Dans OpenScale allez dans le Menu HamburgerParamètres et Bluetooth.

Récupérer Adresse MC Balance Xiaomi via OpenScale

OpenScale est une application gratuite qui vous permet de suivre toutes les informations de votre balance sans les envoyer dans le cloud. Il est stipulé aussi qu’aucunes données ne seront envoyées hors de leur serveur. Elle est téléchargeable sur Fdroid ou le Google Play Store .
Si vous souhaitez tout de même utiliser la connexion Google Fit, c’est quand même possible (tout est sur le GitHub )

Installation de l’add-on.

Je vous laisse regarder l’article pour ajouter un extension non officiel. La source à ajouter est https://github.com/lolouk44/hassio-addons, puis rechercher l’add-on nommé Xiaomi Mi Scale.

Add-on Xiaomi Mi Scale HACS

Configuration de l’add-on.

Une fois installé, se rendre dans l’add-on puis dans configuration.
Voici ma configuration: (Sur RPi avec HA Supervised sous Raspbian. Doit marcher aussi avec HassOS et RPi avec HA supervised sous Ubuntu).

Partie MQTT serveur.

  • HCI_DEV: port de votre dongle bluetooth
  • MISCALE_MAC: adresse MAC de votre balance
  • MQTT_HOST: adresse de votre broker MQTT
  • MQTT_PORT: port de communication du serveur MQTT (par défaut: 1883)
  • TIME_INTERVAL: Intervalle de récupération des informations en secondes

Laissez le reste par défaut si vous ne savez pas ce que c’est.

Partie utilisateurs.

Il peut gérer 3 personnes maximum.


HCI_DEV: hci0
MISCALE_MAC: '0C:95:41:AC:AF:B8'
MQTT_PREFIX: miscale
MQTT_HOST: 127.0.0.1
MQTT_USERNAME: mcflymqtt
MQTT_PASSWORD: mcflymqttpassword
MQTT_PORT: 1883
TIME_INTERVAL: 30
MQTT_DISCOVERY: true
MQTT_DISCOVERY_PREFIX: homeassistant
USER1_GT: 85
USER1_SEX: male
USER1_NAME: Anthony
USER1_HEIGHT: 192
USER1_DOB: '1985-10-02'
USER2_LT: 50
USER2_SEX: female
USER2_NAME: Agathe
USER2_HEIGHT: 85
USER2_DOB: '2018-06-28'
USER3_SEX: female
USER3_NAME: Claire
USER3_HEIGHT: 163
USER3_DOB: '1981-10-03'
Le fonctionnement:
Si le poids est supérieur a XXKg alors c’est tel personne, si en dessous de XXKg alors c’est tel autre personne et si entre les deux alors celle la troisième personnes.

USER1_GT: 85
USER1_SEX: male
USER1_NAME: Anthony
USER1_HEIGHT: 192
USER1_DOB: '1985-10-02'
  • GT: Pèse plus de,
  • LT: Pèse moins de,
  • HEIGHT: taille en cm,
  • DOB: Date de naissance, AAAA-MM-JJ
  • SEX: male ou female
  • NAME: je pense que c’est OK :wink:.
Une fois votre configuration remplie, faites SAVE puis START.

Dans l’onglet info vérifier via l’onglet Log si tout s’est bien passé.

Xiaomi Mi Scale Log
Une fois l’addons démarré, aller dans File Editor pour ajouter des sensors soit dans configuration.yaml soit sensors.yaml en fonction de votre configuration.

### Déclarations pour l'addons (1 par user)
## Remplacer *user1* par le nom donné dans la configuration du plugins
  - platform: mqtt
    name: "user1 Poids"
    state_topic: "miscale/user1/weight"
    value_template: "{{ value_json['weight'] }}"
    unit_of_measurement: "kg"
    json_attributes_topic: "miscale/user1/weight"
    icon: mdi:scale-bathroom

  - platform: mqtt
    name: "user1 BMI"
    state_topic: "miscale/user1/weight"
    value_template: "{{ value_json['bmi'] }}"
    icon: mdi:human-pregnant
    unit_of_measurement: "kg/m2"
Redémarrer votre Home Assistant.
Voici les entités possibles :
Xiaomi Scale Entite BMI
Xiaomi Scale Entite Poid

Interface Lovelace

Retourner dans File Editor pour ajouter des sensors soit dans configuration.yaml soit sensors.yaml en fonction de votre configuration 1.
Ajouter le code qui suit par utilisateur suivi (Remplacer user1 par le ou les vôtre).


### Template pour l'affichage des attributs
#### 1 par user
#IMC
  - platform: template
    sensors:
      user1_poids_imc:
        friendly_name: 'Mon IMC'
        value_template: "{{ state_attr('sensor.user1_poids', 'bmi') }}" #ici, on indique que la valeur de cette entité correspond à la valeur de l'attribut 'bmi' de l'entité 'sensor.mon_poids'
        attribute_templates:
          unit_of_measurement: "kg/m²"
          icon: 'mdi:human-pregnant'
          
#MB
  - platform: template
    sensors:
      user1_poids_mb:
        friendly_name: 'Mon Métabolisme de Base'
        value_template: "{{ state_attr('sensor.user1_poids', 'basal_metabolism') }}" #ici, on indique que la valeur de cette entité correspond à la valeur de l'attribut 'basal_metabolism' de l'entité 'sensor.mon_poids'
        attribute_templates:
          unit_of_measurement: "kcal/j"
          icon: 'mdi:food'
          
#graisse viscérale
  - platform: template
    sensors:
      user1_poids_gv:
        friendly_name: 'Ma Graisse Viscérale'
        value_template: "{{ state_attr('sensor.user1_poids', 'visceral_fat') }}" #ici, on indique que la valeur de cette entité correspond à la valeur de l'attribut 'visceral_fat' de l'entité 'sensor.mon_poids'
        attribute_templates:
          icon: 'mdi:water-percent'

#date
  - platform: template
    sensors:
      user1_poids_date_locale: 
        # ici, on transforme la valeur de l'attribut 'timestamp' de l'entité 'sensor.user1_poids' afin de la rendre plus agréable à lire
        # '2020-10-17-11:00:11' devient '17/10/2020 11:00'
        friendly_name: 'Date locale'
        value_template: >-
          {% set annee =  state_attr('sensor.user1_poids', 'timestamp').split('-')[0] %}
          {% set mois =  state_attr('sensor.user1_poids', 'timestamp').split('-')[1] %}
          {% set jour =  state_attr('sensor.user1_poids', 'timestamp').split('-')[2] %}
          {% set heure =  state_attr('sensor.user1_poids', 'timestamp').split('-')[3] %}
          {% set date_formatee = annee + "-" + mois + "-" + jour + "T" + heure %}
          {{as_timestamp(date_formatee) | int | timestamp_custom('%d/%m/%Y %H:%M', true)}}
        attribute_templates:
          icon: 'mdi:calendar-clock'
Une fois cela effectué, allez dans Aperçus puis ajouter une carte manuel.

Interface simple. (sans utilisation de custom card)

Voici deux configurations (il y en a plein d’autres. N’hésitez pas à partager la votre avec le code)mettre un liens vers contribution

Xiaomi Mi Scale Lovelace Defaut

type: entities
entities:
  - entity: sensor.user1_poids_date_locale
    name: Dernière pesée
  - entity: sensor.user1_poids
    name: Poids
  - entity: sensor.user1_poids_imc
    name: IMC
  - entity: sensor.user1_poids_gv
    name: ' Graisse viscérale'
  - entity: sensor.user1_poids_mb
    name: Besoin calorique
title: Poids de user1
show_header_toggle: false
state_color: false
footer:
  type: graph
  entity: sensor.user1_weight
  hours_to_show: 720
  detail: 1

Interface plus. (utilisation de custom card)

Vous avez besoin de Swipe card GitHub,HA Installation via HACS.

Rechercher Swipe card.

Une fois installée, il n’est pas nécessaire de redémarrer Home Assistant (comme toutes les cartes que vous installées par HACS).

Elle devrait apparaître dans la liste des carte lors de la configuration de votre Lovelace.

Sélectionnez la, puis passez en éditeur YAML et copier le code ci-dessous.

Vous avez maintenant une carte plus interactive.

Un grand merci à @Clemalex pour sa participation sur les cartes Lovelace.

HACS Frontend Swipe Card
Exemple Swipe Card

type: 'custom:swipe-card'
parameters:
  spaceBetween: 8
  scrollbar:
    hide: false
    draggable: true
    snapOnRelease: true
cards:
  - type: entities
    entities:
      - entity: sensor.user1_poids_date_locale
        name: Dernière pesée
      - entity: sensor.user1_poids
        name: Poids
      - entity: sensor.user1_poids_imc
        name: IMC
      - entity: sensor.user1_poids_gv
        name: Graisse viscérale
      - entity: sensor.user1_poids_mb
        name: Besoin calorique
    title: Poids de user1
  - type: entities
    entities:
      - entity: sensor.user2_poids_date_locale
        name: Dernière pesée
      - entity: sensor.user2_poids
        name: Poids
      - entity: sensor.user2_poids_imc
        name: IMC
      - entity: sensor.user2_poids_gv
        name: ' Graisse viscérale'
      - entity: sensor.user2_poids_mb
        name: Besoin calorique
    title: Poids de user2
  - type: entities
    entities:
      - entity: sensor.user3_poids_date_locale
        name: Dernière pesée
      - entity: sensor.user3_poids
        name: Poids
      - entity: sensor.user3_poids_imc
        name: IMC
      - entity: sensor.user3_poids_gv
        name: ' Graisse viscérale'
      - entity: sensor.user3_poids_mb
        name: Besoin calorique
    title: Poids de user3
show_header_toggle: false
state_color: false

Trucs & Astuces.

Si vous utilisez Raspbian comme OS pour le RPi, BluePy n’est pas installé par défaut (a confirmer je ne me rappelle plus) alors que sous Ubutnu oui.

Dans ce cas connectez vous en SSH puis taper les commandes suivantes.
Sur python3


sudo apt-get install python3-pip libglib2.0-dev
sudo pip3 install bluepy

Conclusion.

Vous avez maintenant le suivi de toutes les informations corporelle de votre famille.

Une question, un problème

Annexes

Sources

Suivi des modifications

  • 02/02/2021 : Passage en article officiel (:hacf_tuto: ) @Clemalex
  • 03/12/2020 : Mise à jour pour V2 @McFly
  • 20/10/2020 : Création @McFly

Un mot sur McFly

Un peu GEEK ayant découvert Home Assistant très récemment, je me suis essayé à plusieurs systèmes de domotique avant de trouver le bon. J'aime essayer de domotiser tout ce que je peux pour me faciliter la vie. Je ne suis pas codeur, ni programmeur ou toute autre chose liée à ce domaine. Je cherche seulement à transformer pour moi ce que je trouve sur internet.

Share This