请选择 进入手机版 | 继续访问电脑版

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

 找回密码
 立即注册
查看: 10940|回复: 11

【addon】Bluetooth Scan Tracker-利用蓝牙跟踪在家情况

[复制链接]

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
发表于 2018-1-13 16:29:45 | 显示全部楼层 |阅读模式
本帖最后由 neroxps 于 2018-2-23 17:28 编辑

写在最前

这个是 《【docker】【device_tracker】自建蓝牙扫描追踪设备》 脚本的改版,之前的脚本只能用 rest_api 更新,导致覆盖 ios 程序的地理位置更新,这个是参考了《自己寫個藍牙搜尋器檢查是否進入某區域並更新到HA》mqtt方法做的。但是经过测试这方法检测是否在家还是有一些抖动的情况,例如有些时候会检测不到蓝牙。


而且蓝牙网卡覆盖范围有效距离其实不远,如果家大的话可能就不行了,我家100平米左右,一个USB蓝牙适配器勉强覆盖。我尝试使用 USB延长线延长蓝牙适配器的距离,让蓝牙适配器在整个家庭的正中央。最好的方案还是使用 ESP32 来检测扫描蓝牙,但好像暂时没发现可以监测 iPhone 的。


0A27C2C1C595BA294A5DBBAB0F9E1C61.png


使用之前

运行 hassio 的主机需要将蓝牙设备驱动,运行 hcitool dev 能够得到 hci0 之类的就证明驱动蓝牙了,脚本也会检查是否有蓝牙。


理论上支持树莓派,我也用 hassio-builder 生成了支持树莓派的 docker 镜像,但到底能不能用我手头上没有树莓派测试。

利用 Linux 蓝牙工具 hcitool name $MAC 方法来鉴别设备是否在蓝牙覆盖范围内,此方法能有效监测 Apple iPhone IPAD 设备。(不支持 BLE 设备,例如小米手环)


使用方法

0.添加  Add-On Repositories

Add-On Repositories:https://github.com/neroxps/hassio-addons

1.修改 options

{  "sleep_time":"2",
  "mqtt_address":"192.168.1.100",
  "mqtt_user":"username",
  "mqtt_password":"password",
  "mqtt_port":"1883",
  "mqtt_topic":"/ble/tracker",
  "blue_list":[
      {
        "name":"tom",
        "mac": "01:23:45:67:89:AB"
      },
      {
        "name":"jack",
        "mac": "01:23:45:67:89:AB"
      },
      {
        "name":"elspie",
        "mac": "01:23:45:67:89:AB"
      },
      {
        "name":"gawain",
        "mac": "01:23:45:67:89:AB"
      }
    ]
}

配置列表
  • sleep_time[非必须]: 扫描间隔,默认 5 秒。(例子:2)
  • mqtt_address[必须]: MQTT 地址 (例子:192.168.1.1)
  • mqtt_user[必须]: MQTT 用户名 (例子:username)
  • mqtt_password[必须]: MQTT 密码 (例子:password)
  • mqtt_port[非必须]: MQTT 服务监听端口默认:1883 (例子:1883)
  • mqtt_topic[必须]: MQTT 主题,与 Home Assistant 配置配合使用 (例子:  /ble/tracker)
  • blue_list[必须]: 设备蓝牙mac列表 (例子:见下方)
  • name[必须]: 设备在 Home Assistant 配置使用的名字 (例子:tom)
  • mac[必须]: 设备的蓝牙 MAC 地址 (例子:01:23:45:67:89:AB)


2.编写 Home Assistant 传感器配置

binary_sensor:  - platform: mqtt
    name: "tom"
    state_topic: "/ble/tracker/tom"
    qos: 0
    payload_on: "enter"
    payload_off: "leave"
    device_class: opening
  - platform: mqtt
    name: "Jack"
    state_topic: "/ble/tracker/jack"
    qos: 0
    payload_on: "enter"
    payload_off: "leave"
    device_class: opening
  - platform: mqtt
    name: "elspie"
    state_topic: "/ble/tracker/elspie"
    qos: 0
    payload_on: "enter"
    payload_off: "leave"
    device_class: opening
  - platform: mqtt
    name: "gawain"
    state_topic: "/ble/tracker/gawain"
    qos: 0
    payload_on: "enter"
    payload_off: "leave"
    device_class: opening

sensor:
  - platform: template
    sensors:
      tom:
        value_template: "{% if states.binary_sensor.tom%}
          {% if is_state('binary_sensor.tom', 'on') %}
            在家
          {% else %}
            离家
          {% endif %}
          {% else %}
            未知
          {% endif %}"

  - platform: template
    sensors:
      jack:
        value_template: "{% if states.binary_sensor.jack%}
          {% if is_state('binary_sensor.jack', 'on') %}
            在家
          {% else %}
            离家
          {% endif %}
          {% else %}
            未知
          {% endif %}"

  - platform: template
    sensors:
      elspie:
        value_template: "{% if states.binary_sensor.elspie%}
          {% if is_state('binary_sensor.elspie', 'on') %}
            在家
          {% else %}
            离家
          {% endif %}
          {% else %}
            未知
          {% endif %}"

  - platform: template
    sensors:
      gawain:
        value_template: "{% if states.binary_sensor.gawain%}
          {% if is_state('binary_sensor.gawain', 'on') %}
            在家
          {% else %}
            离家
          {% endif %}
          {% else %}
            未知
          {% endif %}"


homeassistant:
  customize:
    sensor.tom:
      friendly_name: 'Tom'
      homebridge_hidden: true
      icon: mdi:account
    sensor.jack:
      friendly_name: 'Jack'
      homebridge_hidden: true
      icon: mdi:account
    sensor.elspie:
      friendly_name: 'Elspie'
      homebridge_hidden: true
      icon: mdi:account
    sensor.gawain:
      friendly_name: 'Gawain'
      homebridge_hidden: true
      icon: mdi:account

group:
  family_member:
    view: yes
    name: "家庭成员"
    entities:
      - sensor.tom
      - sensor.jack
      - sensor.elspie
      - sensor.gawain

注意事项:
  • binary_sensor 里面的 name 必须和 options 里面填写的 blue_list.name 一致。
  • state_topic 必须和 options 里面填写的 mqtt_topic 前序一致,并且 mqtt_topic 的结尾不能带 /,正确的写法:/ble/tracker,错误的写法:/ble/tracker/


Enjoy




Nero
回复

使用道具 举报

5

主题

188

帖子

1183

积分

金牌会员

小白

Rank: 6Rank: 6

积分
1183
金钱
995
HASS币
0
发表于 2018-1-13 16:51:39 | 显示全部楼层
不觉明厉,抢沙发
回复

使用道具 举报

123

主题

4626

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16009
金钱
11298
HASS币
45
发表于 2018-1-13 16:58:32 | 显示全部楼层
厉害厉害,抢板凳
回复

使用道具 举报

32

主题

986

帖子

4233

积分

论坛元老

Rank: 8Rank: 8

积分
4233
金钱
3207
HASS币
110

教程狂人论坛风云人物

发表于 2018-1-13 20:21:29 | 显示全部楼层
牛逼牛逼,抢地板
回复

使用道具 举报

13

主题

258

帖子

2072

积分

金牌会员

Rank: 6Rank: 6

积分
2072
金钱
1814
HASS币
0
发表于 2018-1-14 14:44:37 | 显示全部楼层
求手环版啊
回复

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
 楼主| 发表于 2018-1-14 17:26:01 | 显示全部楼层

homeassistant 本来就有 Bluetooth LE 跟踪插件,其实用 bluepy 写成插件是最好的,但是我现在不会python,所以只能做成 addons了。

https://home-assistant.io/compon ... uetooth_le_tracker/
Nero
回复

使用道具 举报

0

主题

23

帖子

164

积分

注册会员

Rank: 2

积分
164
金钱
141
HASS币
0
发表于 2018-10-9 22:50:47 | 显示全部楼层
人真么少!      
回复

使用道具 举报

2

主题

113

帖子

1191

积分

金牌会员

Rank: 6Rank: 6

积分
1191
金钱
1078
HASS币
0
发表于 2018-12-27 17:13:30 | 显示全部楼层
不错,大概理解了。
回复

使用道具 举报

10

主题

163

帖子

1099

积分

金牌会员

Rank: 6Rank: 6

积分
1099
金钱
936
HASS币
0
发表于 2019-9-3 18:21:58 | 显示全部楼层
蓝牙距离很短吧,家太大怎么办
回复

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
 楼主| 发表于 2019-9-4 09:07:43 | 显示全部楼层
65999wlc 发表于 2019-9-3 18:21
蓝牙距离很短吧,家太大怎么办

老外做了个基于 esp32 多个传感器的,有兴趣Google搜索看看
Nero
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-18 13:58 , Processed in 0.917134 second(s), 39 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表