『瀚思彼岸』» 智能家居技术论坛

标题: 小米体脂秤2通过Passive BLE Monitor 集成直连HA [打印本页]

作者: riceball    时间: 2022-5-4 08:51
标题: 小米体脂秤2通过Passive BLE Monitor 集成直连HA
本帖最后由 riceball 于 2022-5-5 16:57 编辑

本解决方案可以支持多人体重自动记录(前提是每个人有明显的体重区分或阻抗区分),以及完美显示最近一次的的人体体重,体脂信息.


参阅: HA智能硬件采购避坑指要(三) 蓝牙篇



使用的前提硬件,需要至少支持BLE蓝牙4.0(蓝牙是向下兼容的,所以BLE蓝牙5也可)的适配器,一般的HA盒子都有,如果是用PC就看带WIFI不,一般WIFI都带蓝牙,没有就买一个支持的USB WIFI适配器.



请首先安装 Passive BLE Monitor 集成, 安装方法参见: 使用Passive BLE Monitor集成代替蓝牙网关直接接入HA


如果你已经勾选了Passive BLE Monitor 集成的"自动发现设备及传感器",那么小米体脂秤2开机后多等一会(保持体脂秤屏幕常亮),就应该看到在该集成(Bluetooth Low Energy Monitor)下多出一个Mi Scale V2设备,你可以重命名一个有意义的名字.


如果你希望看到详细的体脂信息,那么需要先在HACS第三方集成商场中安装 https%3A//github.com/dckiller51/bodymiscale">BodyMiScale 集成.

如果HACS中找不到就加库: 点击 HACS -> 集成 -> 自定义存储库(右上角三个点中) -> 存储库设置为 "https://github.com/dckiller51/bodymiscale" , 类别为: 集成

注意,https%3A//github.com/dckiller51/bodymiscale">BodyMiScale 集成的最新版本2.1 版本需要您安装的Home Assistant2022.4 以上版本才能支持,否则您只能安装bodymiscale 2.0以下版本,切勿升级.


https%3A//github.com/dckiller51/bodymiscale">BodyMiScale 集成的最新版本(2.1)已经支持直接在配置界面中配置:



  1. 配置 -> 设备与服务 -> 添加集成 -> 搜索 BodyMiScale

    • [attach]37300[/attach]


  2. 开始配置 BodyMiScale

    • [attach]37301[/attach]


  3. 如果有多人重复上述操作


如果是https%3A//github.com/dckiller51/bodymiscale">BodyMiScale@2.0及以下的版本必须在configuration.yaml手工配置传感器:


bodymiscale:
  your_name1:
    sensors:
      weight: sensor.ble_stabilized_weight_XXXX
      impedance: sensor.ble_impedance_XXXX
    height: 176
    born: "1990-04-10"
    gender: "male"
    model_miscale: "181B" # miscale2
  your_name2:
    sensors:
      weight: sensor.ble_stabilized_weight_XXXX
      impedance: sensor.ble_impedance_XXXX
    height: 176
    born: "1990-04-10"
    gender: "male"
    model_miscale: "181D" #  miscale1

重启后就会多出来名为: bodymiscale.your_name1bodymiscale.your_name2的实体.


然后你需要在HACS第三方集成商场中安装lovelace-body-miscale-card 界面, 来使用该实体.


先加库: 点击 HACS -> 集成 -> 自定义存储库(右上角三个点中) -> 存储库设置为 [url=https://github.com/dckiller51/lovelace-body-miscale-card]https://github.com/dckiller51/lovelace-body-miscale-card`[/url] , 类别为: Lovelace


然后再安装该界面. 最后复制仓库中的图片文件(src/images/*)到config/www/images目录下.


接着就可以在 lovelace 中进行配置了:


type: custom:body-miscale-card
entity: bodymiscale.your_name1
show_name: true
image: /local/images/miscale2.jpg
show_states: true
show_attributes: true
show_body: true
show_buttons: true
show_toolbar: true

如果有多个人需要分别记录,并且可以通过体重区分的话,当然你也可以加上阻抗值(impedance)来判断,那么可以在configuration.yaml中:


- platform: template
  sensors:
    # the first person's weight
    weight_your_name:
      friendly_name: "Weight Your Name"
      value_template: >-
        {% set weight = states('sensor.ble_stabilized_weight_XXXX') | float %}
        {% if 66.9 <= weight <= 77 %}
          {{ states("sensor.ble_stabilized_weight_XXXX") }}
        {% else %}
          {{ states("sensor.weight_your_name") }}
        {% endif %}
      unit_of_measurement: 'kg'
      icon_template: mdi:weight-kilogram
    # the first person's impedance
    impedance_your_name:
      friendly_name: "Impedance Your Name"
      value_template: >-
        {% set weight = states('sensor.ble_stabilized_weight_XXXX') | float %}
        {% if 66.9 <= weight <= 77 %}
          {{ states("sensor.ble_impedance_XXXX") }}
        {% else %}
          {{ states("sensor.impedance_your_name") }}
        {% endif %}
      unit_of_measurement: 'ohm'
      icon_template: mdimega

问题又来了,如何显示最近的历史数据. 因为当电子秤离线后或者HA重启后,就没当前数据(最近一次的)了!


用SQL Sensor获取的最近一次的历史数据,以及修改前面的模板传感器如下:


- platform: sql
  db_url: !secret db_url
  queries:
    - name: Latest Weight Your Name
      query: "SELECT state FROM states WHERE entity_id = 'sensor.weight_your_name' and state <> 'unknown' and state <> 'unavailable' ORDER BY created DESC LIMIT 1;"
      column: "state"
    - name: Latest Impedance Your Name
      query: "SELECT state FROM states WHERE entity_id = 'sensor.impedance_your_name' and state <> 'unknown' and state <> 'unavailable' ORDER BY created DESC LIMIT 1;"
      column: "state"
- platform: template
  sensors:
    weight_your_name:
      friendly_name: "Weight Your Name"
      value_template: >-
        {% set weight = states('sensor.ble_stabilized_weight_XXXX') | float(0) %}
        {% set id = 'weight_your_name' %}
          {% if 66.9 <= weight <= 77 %}
            {{ weight }}
          {% elif weight <= 0 %}
            {{ state_attr("sensor.latest_"+id, 'state') }}
          {% else %}
            {{ states("sensor."+id) }}
          {% endif %}
      unit_of_measurement: 'kg'
      icon_template: mdi:weight-kilogram
    impedance_your_name:
      friendly_name: "Impedance Your Name"
      value_template: >-
        {% set weight = states('sensor.ble_stabilized_weight_XXXX') | float(0) %}
        {% set id = 'impedance_your_name' %}
          {% if 66 <= weight <= 77 %}
            {{ states("sensor.ble_impedance_XXXX") }}
          {% elif weight <= 0 %}
            {{ state_attr("sensor.latest_"+id, 'state') }}
          {% else %}
            {{ states("sensor."+id) }}
          {% endif %}
      unit_of_measurement: 'ohm'
      icon_template: mdimega

注意:   



  1. db_url: !secret db_url 要填写自己recorder数据库的url. 详细请参阅 : SQL Sensor

    • 如果recoder 没有添加过db_url 用的原来的默认配置, 就把这个删掉不要


  2. YAML 脚本中的 大于(>) 小于(<) 符号 被错误转义了,







作者: manymuch    时间: 2022-5-4 09:59
为什么我的PassiveBLE一直看不到小米体脂秤 我的是小米体脂秤2, PassiveBLE可以看到其他的蓝牙设备, 就是小米体脂秤看不到, 直接在PassiveBLE集成里面添加体脂秤的MAC地址也看不到任何信号
作者: riceball    时间: 2022-5-4 10:27
manymuch 发表于 2022-5-4 09:59
为什么我的PassiveBLE一直看不到小米体脂秤 我的是小米体脂秤2, PassiveBLE可以看到其他的蓝牙设备, 就 ...

要多等一会儿,让秤屏幕一直亮起.

还有就是用 bluetoothctl 监视看看能不能看到, 然后可以用 ` bluetoothctl connect MAC-Addr`
作者: banquolol    时间: 2022-5-4 14:18
感谢大佬,因为hass版本低,装2.0的过程中出现了装完不在hacs中显示,改configuration也无法使用集成,装1.5报错,后来升级了hass版本,装2.1后就成功了,现在是用的esp32读的蓝牙信息。
现在还有个小问题是,卡片展开后,不像github上展示的那样在BMI等信息的左边显示小图标
作者: riceball    时间: 2022-5-4 15:06
banquolol 发表于 2022-5-4 14:18
感谢大佬,因为hass版本低,装2.0的过程中出现了装完不在hacs中显示,改configuration也无法使用集成,装1. ...

再仔细看看,你有一个复制图像的步骤看漏了吧
作者: zxyny1989    时间: 2022-5-4 21:19
膜拜,用起来。
作者: zxyny1989    时间: 2022-5-5 12:43
我添加多人那个,配置搞进去重启ha,直接挂了
作者: riceball    时间: 2022-5-5 13:00
zxyny1989 发表于 2022-5-5 12:43
我添加多人那个,配置搞进去重启ha,直接挂了

这个 `db_url: !secret db_url` 不能乱填,要填自己 recorder 的.
作者: zxyny1989    时间: 2022-5-5 13:25
riceball 发表于 2022-5-5 13:00
这个 `db_url: !secret db_url` 不能乱填,要填自己 recorder 的.

请教一下:我没改第三方数据库,用的ha原来的,这个地方要怎么搞?
作者: riceball    时间: 2022-5-5 16:56
zxyny1989 发表于 2022-5-5 13:25
请教一下:我没改第三方数据库,用的ha原来的,这个地方要怎么搞?

如果recoder 没有添加过`db_url` 用的原来的默认配置就把这个删掉
作者: zxyny1989    时间: 2022-5-5 18:20
riceball 发表于 2022-5-5 16:56
如果recoder 没有添加过`db_url` 用的原来的默认配置就把这个删掉

我是放弃了,多人体重记录那个,配置一直报错,咋改都报。
作者: riceball    时间: 2022-5-5 19:52
zxyny1989 发表于 2022-5-5 18:20
我是放弃了,多人体重记录那个,配置一直报错,咋改都报。

逐步减少法,查找错误, 先不用SQL Sensor, 用第一版,也会报错么? YAML 的 大于 小于 符号要注意修改
作者: zxyny1989    时间: 2022-5-5 21:19
riceball 发表于 2022-5-5 19:52
逐步减少法,查找错误, 先不用SQL Sensor, 用第一版,也会报错么? YAML 的 大于 小于 符号要注意修改 ...

报错了,感觉是有个sensor的问题
作者: home-io    时间: 2022-5-8 21:14
可以试一下
作者: 2543700899    时间: 2022-5-13 10:31
学习了 正好需要
作者: shavn1984    时间: 2022-5-20 16:44
多人体重已经实现,能不能在一个卡片内通过下面的自定义按钮根据input_boolean自动化切换卡片对应人的信息
作者: riceball    时间: 2022-5-20 19:21
shavn1984 发表于 2022-5-20 16:44
多人体重已经实现,能不能在一个卡片内通过下面的自定义按钮根据input_boolean自动化切换卡片对应人的信息 ...

这个不清楚,不过它内部有User 按钮,你看看如何用.
作者: home_assistant    时间: 2022-6-6 08:49
Hi riceball:

根据您以上的创建。
如图通过UI配置时会提示没有UUID或entity ID的情况?可用手动添加ID吗?

thanks!
作者: aiqienanguatou    时间: 2022-6-22 00:11
我使用了上面的只能显示一次历史称重,再称一次历史称重就不变了,不知道哪里的问题[attach]38686[/attach]
遮住的重量为75.7

作者: wuyouning    时间: 2022-7-11 00:48
除了体重体脂,还有其他数据会显示么?
作者: astang    时间: 2024-1-6 08:51
现在怎么找不到Passive BLE Monitor这个这个集成了
作者: Gasing    时间: 2025-1-8 13:06
刚刚接入,数值和zepp中稍有差异,差的不大,反正就是看个大概值而已。体重准就行




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5