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 HA 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.
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)
Dans OpenScale allez dans le Menu Hamburger, Paramètres et Bluetooth.
Installation de l’addons.
Je vous laisse regarder le tuto pour ajouter un addons non officiel.
La source à ajouter est GitHub - lolouk44/hassio-addons: Xiaomi Mi Scale Add On for Home Assistant
Puis rechercher l’addons nomé Xiaomi Mi Scale.
Configuration de l’addons.
Une fois installé, se rendre dans l’addons 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).
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'
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.
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
oufemale
- NAME: je pense que c’est OK .
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é.
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.
Ajouter ceci : (remplacer user1 par votre ou vos users).
### 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 :
Interface Lovelace
Retourner dans File Editor pour ajouter des sensors soit dans configuration.yaml soit sensors.yaml en fonction de votre configuration.
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
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
type: vertical-stack
cards:
- type: entities
entities:
- entity: sensor.anthony_poids_date_locale
name: Dernière pesée
- entity: sensor.anthony_poids
name: Poids
- entity: sensor.anthony_poids_imc
name: IMC
- entity: sensor.anthony_poids_gv
name: ' Graisse viscérale'
- entity: sensor.anthony_poids_mb
name: Besoin calorique
title: Poids de Anthony
show_header_toggle: false
state_color: false
- type: horizontal-stack
cards:
- type: sensor
entity: sensor.anthony_weight
graph: line
name: Poids
hours_to_show: 720
- type: sensor
entity: sensor.anthony_poids_imc
graph: line
name: IMC
hours_to_show: 720
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.
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
Vous avez maintenant une carte plus interactive.
Un grand merci à @Clemalex pour sa participation sur les cartes Lovelace.
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.