Блог

Xiaomi Mi Scale 2 очень все сырое ))) в home assistant, Хасбиан в докере скоро он RIP

Автор проекта https://github.com/lolouk44/xiaomi_mi_scale

Для тех у кого не получилось сделать по ссылке от автора

Инструкция очень сырая, Алексей @AlexeyAlexey в чате HA попросил выложить хоть что-то, поэтому это такой набросок как у меня работает, а ну и в течении почти месяца уже сбоев не было, все данные прилетают, образ в докере в принципе особо и не нужен там работает только крон, остальные файлы внешние

Вообще все что ниже можно сделать иначе и создать свой образ или кастом компонент, или запустить через крон, но я надеюсь что автор проекта доведет до ума и не придется что то изменять в будущем

Всё что ниже будет о версии Хасбиан для докера, не для Хасио, но так как скоро Хасбиан RIP от создателей, я буду переходить на Хасио и всё что тут написано будет обновлено (если не забуду)

Докер композ версия 3

Работает у меня на полноценной архитектуре проц i5, образ под amd64 как будет на малинке не знаю, если для малинки то после двоеточия нужно будет изменить на latest или более подробно смотреть тут https://hub.docker.com/r/lolouk44/xiaomi-mi-scale

Вкратце что нужно будет сделать, 3-шага:

1) создать конейнер и создать файл mi-scale.env (в который прописать мак адрес весов)

2) питона файл скачать Xiaomi_Scale.py и скопировать в папку докера

3) запустить контейнер и прописать в Ha в раздел sensor весы (графана и инфлюкс по желанию)

всё, cron-опроса весов 5 минут внутри конейнера

mi-scale: image: lolouk44/xiaomi-mi-scale:amd64 restart: always network_mode: host privileged: true volumes: - /home/anton/smarthome/mi-scale/Xiaomi_Scale.py:/opt/miscale/Xiaomi_Scale.py env_file:./mi-scale/mi-scale.env

файл mi-scale.env (пример ниже) атрибуты ниже изменить под себя (прописывать без файла env напрямую в докер компоуз в случае весов нельзя, будет выдавать ошибку, так что лучше сделать через файл env и там прописать атрибуты)

питона файл самый главный Xiaomi_Scale.py (код в нем чучуть изменен, объединил с разных источников) скачать

чтобы узнать макадрес весов нужно ввести в консоли:

sudo hcitool lescan, после мак адреса весов будет-MIBS это и есть ваши весы копируем его мак

весы можно сделать для нескольких пользователей чтобы для каждого свои графики строил, более подробно на сайте создателя

https://hub.docker.com/r/lolouk44/xiaomi-mi-scale

мой пример mi-scale.env

MISCALE_MAC=F6:58:21:75:EF:99 MQTT_HOST=192.168.1.189 MQTT_PREFIX=miScale MQTT_PORT=1883 MQTT_TIMEOUT=60 USER1_GT=70 USER1_SEX=male USER1_NAME=Anton USER1_HEIGHT=178 USER1_DOB=1983-08-10 USER2_LT=60 USER2_SEX=female USER2_NAME=Ioana USER2_HEIGHT=169 USER2_DOB=1990-01-01 USER3_SEX=female USER3_NAME=Unknown USER3_HEIGHT=120 USER3_DOB=1990-01-01

структура что где лежит
папка в докере
файл Xiaomi_Scale.py кинуть в эту папку

там внутри конейнера автор сделал скрипт который запускает раз в 5 минут считывание данных с весов, поэтому после того как вы взвесились через 5 минут данные придут по mqtt в HA

можно протестировать приходят данные по mqtt или нет через mqtt explorer

код для конфига HA прописать в раздел sensor (под себя только изсправле названия

- platform: mqtt name: "Anton Weight" state_topic: "miScale/Anton/weight" value_template: "{{ value_json['Вес'] }}" unit_of_measurement: "kg" json_attributes_topic: "miScale/Anton/weight" icon: mdi:weight-kilogram - platform: mqtt name: "Anton BMI" state_topic: "miScale/Anton/weight" value_template: "{{ value_json['ИМТ'] }}" unit_of_measurement: "%" icon: mdi:human-pregnant - platform: mqtt name: "Anton fat" state_topic: "miScale/Anton/weight" value_template: "{{ value_json['Жир'] }}" unit_of_measurement: "%" icon: mdi:human-pregnant - platform: mqtt name: "Anton visceral fat" state_topic: "miScale/Anton/weight" value_template: "{{ value_json['Висцеральный жир'] }}" unit_of_measurement: "%" icon: mdi:human-pregnant - platform: mqtt name: "Anton water" state_topic: "miScale/Anton/weight" value_template: "{{ value_json.Вода }}" unit_of_measurement: "%" icon: mdi:water-percent - platform: mqtt name: "Anton protein" state_topic: "miScale/Anton/weight" value_template: "{{ value_json.Белок }}" unit_of_measurement: "%" icon: mdi:human-pregnant - platform: mqtt name: "Anton muscles" state_topic: "miScale/Anton/weight" value_template: "{{ value_json['Мышцы'] }}" unit_of_measurement: "%" icon: mdi:human-pregnant - platform: mqtt name: "Anton bone mass" state_topic: "miScale/Anton/weight" value_template: "{{ value_json['Костная масса'] }}" unit_of_measurement: "kg" icon: mdi:human-pregnant - platform: mqtt name: "Anton basal metabolism" state_topic: "miScale/Anton/weight" value_template: "{{ value_json['Основной обмен'] }}" icon: mdi:human-pregnant - platform: mqtt name: "Anton Lean Body Mass" state_topic: "miScale/Anton/weight" value_template: "{{ value_json['Масса без жира'] }}" unit_of_measurement: "kg" icon: mdi:human-pregnant

файл customize

#весы sensor.anton_weight: friendly_name: Вес sensor.anton_bmi: friendly_name: ИМТ sensor.anton_fat: friendly_name: Жир sensor.anton_water: friendly_name: Вода sensor.anton_protein: friendly_name: Белок sensor.anton_muscles: friendly_name: Мышцы sensor.anton_bone_mass: friendly_name: Костная масса sensor.anton_visceral_fat: friendly_name: Висцеральный жир sensor.anton_lean_body_mass: friendly_name: Масса без жира sensor.anton_basal_metabolism: friendly_name: Основной обмен

Карточка для весов, код ниже

Карточка для весов

entities: - entity: sensor.anton_weight - entity: sensor.anton_bmi - entity: sensor.anton_fat - entity: sensor.anton_visceral_fat - entity: sensor.anton_water - entity: sensor.anton_protein - entity: sensor.anton_muscles - entity: sensor.anton_bone_mass - entity: sensor.anton_lean_body_mass - entity: sensor.anton_basal_metabolism show_header_toggle: false title: Xiaomi Mi Smart Scale 2 type: entities

Ну и добавить весы это в ха не так сложно, но надо данные хранить в истории нормально и чтобы она не тормозило для этого ставим influxdb и grafana

В итоге поулчаем такой вид

в графане
в HA

Создание контейнеров для Hasbiana

для influxdb для хасбиана докера нужно будет только создать конфиг файл отдельной командой иначе не стартанет!

Команда на создание конфиг файла для influxdb после создание конфиг файла, перенести этот файл в папку докера influxdb

docker run --rm influxdb influxd config > influxdb.conf

А ну и потом прописать сенсоры которые нужно писать в influxdb и выводить в графану

Код в HA для influxdb




Огромное спасибо 

https://sprut.ai/client/user/profile/701">Антону Самсонову (samsonovs)!

Антон не только запилил статью, но и помог потом допилить, чтобы оно всё взлетело.
Очень долго ждал, чтобы кто-то поделился Mi Scale интеграцией


На днях найду время и допишу сюда подводные камни, о которые спотыкался, пока не заработало.

https://sprut.ai/static/media/cache/00/17/60/5/2020424/46836/1000x_image.png?1574275340" alt="1000x_image.png?1574275340" />

братан запили такую же хрень для весов picooc!))

Спасибо за стратью! Вы пишете что у вас x64, а не малина со встроенным bluetooth, как аппаратно реализовано bluetooth подклчение?

У меня macmini 2012 года там встроенный блютуз, MacOS снес, накатил Ubuntu, с хасбиана в докере переехал на Hassio в докере, весы пока также в докере, не переделывал, работаю нормально.

Прикрутил 1 версию, спасибо!



Никак не получается увидеть параметры с весов. Они вроде и есть, но в подменю. Что может быть? MQTT хост такой же как адрес малинки указан, в конфигурейшн руками вбил тоже.

https://sprut.ai/static/media/cache/00/66/16/5/5515079/69408/1000x_image.jpg?1604213411" alt="1000x_image.jpg?1604213411" />https://sprut.ai/static/media/cache/00/66/16/5/5515079/69409/1000x_image.jpg?1604213428" alt="1000x_image.jpg?1604213428" />

https://sprut.ai/static/media/cache/00/66/16/5/5515079/69410/1000x_image.jpg?1604213445" alt="1000x_image.jpg?1604213445" />https://sprut.ai/static/media/cache/00/66/16/5/5515079/69411/1000x_image.jpg?1604213457" alt="1000x_image.jpg?1604213457" />

Есть уже более простой и стабильный вариант. через esphome/

https://esphome.io/components/sensor/xiaomi_miscale.html">https://esphome.io/components/...


Вернуться назад
Вернуться назад