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

 找回密码
 立即注册
查看: 28285|回复: 50

[经验分享] 使用藍牙ibeacon基站來精準定位

  [复制链接]

27

主题

387

帖子

3269

积分

元老级技术达人

积分
3269
金钱
2862
HASS币
40

教程狂人

发表于 2017-12-19 13:12:39 | 显示全部楼层 |阅读模式
本帖最后由 windgo 于 2017-12-20 10:36 编辑

相信大家在使用定位功能時都會有一個問題
就是沒辦法精準人在哪一個位置,只能知道是在某個座標附近
例如GPS或WIFI是沒辦法定位人是在大門口或是某一個房間的
很多自動化功能因為定位問題而無法完美的使用

以上的問題,由Apple推出了ibeacon藍牙定位技術後解決了
使用一個藍牙4.0支援BLE功能的裝置,開啟低功耗藍牙廣播功能
當手機內的Owntracks app接受到這個廣播資料(uuid)時
只要Owntracks app內的region名稱和HA內的zone名稱相同
app便會發出一個enter/leave zone的訊息給HA主機
HA就會跟著觸發enter/leave zone事件
這樣就能知道你精確的位置在哪裡了
可以實現人到門口自動開門車子到車庫自動開車門,紀錄車子最後停車位置等功能

如果你想要追蹤某人是否進入一個zone,只要一個藍牙基站即可
更多的基站只是覆蓋率更大而已
讓我們看看怎麼做到吧!

事先準備:
1.安裝MQTT服務,設定好帳號密碼
2.安裝Home-assistant
3.一隻沒用的android手機或平板,需要支援藍牙4.0 BLE功能當作藍牙基站,安裝Beacon Simulator app
   或是淘寶上找ibeacon基站(需附可修改uuid的app)
   如果有樹莓派也可修改成支援藍牙廣播功能(文章最後附上參考連結)
4.一隻iphone或android手機,安裝最新版本Owntracks app

執行步驟:
1.安裝MQTT服務,並設定好帳號密碼。步驟可參考下面連結,論壇搜尋mqtt也很多文章
https://bbs.hassbian.com/forum.p ... =366&highlight=mqtt

2.Home-assistant需要設定的檔案與內容如下(我們定義一個door的zone,座標lat和long請填入你想要的位置)


修改configuration.yaml

zone:
  - name: door
    latitude: xx.xxxxxx
    longitude: xxx.xxxxxx
    radius: 1
    icon: mdi:account-multiple

mqtt:
  broker: your_mqtt_ip
  port: 1883
  username: your_mqtt_username
  password: your_mqtt_password

#下面的W是要跟手機裝的Owntracks app內的使用者TrackerID相同
#HA才會跟手機同步觸發enter/leave zone

device_tracker:
  - platform: owntracks
    max_gps_accuracy: 200
    waypoints: true
    waypoint_whitelist:
      - W

修改customize.yaml(uuid請與你的藍牙基站內名稱相同,major和minor可以修改成你要的數字)

#track_ios: false表示不透過Home-assistant IOS版app來追蹤ibeacon基站

#passive: true 表示這個zone只看ibeacon觸發enter/leave zone,不看gps數值觸發

zone.door:
  track_ios: false
  passive: true
  beacon:
    uuid: cc39b070-25ed-4831-b2e3-2de7481a0dce
    major: 111
    minor: 222

3.將android裝置安裝Beacon Simulator
https://play.google.com/store/ap ... lea.beaconsimulator
打開app

點選右下角的+
手動填入HA內的相同uuid或是點選app中間的GENERATE UUID產生一組新的uuid(記得與上面HA的uuid要改成一樣)
這邊的uuid也可以拿去你其他的ibeacon基站用
其他欄位填入以下資料
(Major代表某層樓 Minor代表某間店,如果想用更多基站覆蓋整個家,可以把不同基站都設成一樣的uuid/major/minor)
(Tx Power:-70代表手機收到多強的訊號才表示接近設備,-xx的xx數字越大的話距離越遠就會觸發enter/leave zone)
IMG_2661.jpg
Uuid : cc39b070-25ed-4831-b2e3-2de7481a0dce
Major : 111
Minor : 222
Tx Power : -70

下面還有Broadcast setting,請填入以下數值(這邊才是真正的廣播強度跟頻率)

Transmission Power : High ~ -56dbm
Frequency Mode : Low lateency ~ 10 Hz

設定好後,點選右上角的勾勾

並啟用這個ibeacon基站廣播
unnamed (1).jpg
如果你使用iphone,可以安裝iBeacon Logger來測試是否可正常收到基站廣播封包
android手機可以一樣使用Beacon Simulator app來scanner封包

4.手機打開Owntracks
右上角先確認是move mode或signification mode
接著點選右下角的Regions
點選右上角的 +
填入以下資料(Name必須跟HA內的zone名稱相同)
#在Name前面加一個-,例如-door,代表Owntracks會偵測更多次才會判斷已連不到基站而觸發leave zone,HA會忽略-
#將radius設為0代表這是for ibeacon使用
#設成 -1代表Owntracks觸發enter/leave zone的時候,會更新一次最新的座標device_tracker.beacon_door給HA
#這可以拿來偵測車子的最後座標使用,丟一個基站在車上,手機上的Owntracks偵測到基站,更新一次座標
#當人離開車子了,再更新一次座標。當要找車子時,就可以從app看到車子的最後座標

Name : door
Share : 開啟
radius : 0
Lat : your_door_Lat
Long : your_door_Long
UUID : cc39b070-25ed-4831-b2e3-2de7481a0dce
Major : 111
Minor : 222

IMG_2659.jpg
設定完成後點選Regions儲存
接著左上角點選i進入設定
中間的CONNECTION點選進去
IMG_2655.jpg



注意TrackerID要跟HA設定的一樣
Mode : Private
TrackerID : W
點選一次 Publish Settings
DeviceID : 不用改,用預設的就好
Hostname : 可以外部存取的主機IP或網域
Port : 1813
Procotol : 4 右邊的TLS功能請關閉
Authentication : 啟用
Username : your_mqtt_username
Password : your_mqtt_password
Secret : 空白即可

設定完成後點選左上角Status Info儲存
IMG_2656.jpg
重啟Owntracks app,再次確認設定都正確
重啟Home-assistant,檢查是否有出現了
device_tracker.beacon_door     <--這是在Owntracks裡面設定的Regions,可以拿來追蹤車子最後座標
device_tracker.mqtt_xxxxxxxx <--這是在Owntracks裡面的DeviceID,可以追蹤人的座標
                                                     如果我進入ibeacon基站1公尺內,state就會變為door

都設定好,拿著手機開啟Owntracks,檢查當接近ibeacon基站時,是否Region會變成紅色圖示


IMG_2667.jpg
檢查HA的device_tracker.mqtt_xxxxxxxx 的state會變為door
然後離開ibeacon基站時,圖示是否會變回藍色 device_tracker.mqtt_xxxxxxxx 的state會變為 home

IMG_2658.jpg
這樣就表示你成功了,可以開始設計屬於自己的自動化囉!

這邊再補充一個思路
因為我住電梯大樓 必須要先到地下室二樓停車再搭電梯到八樓
其中會因為沒有網路使Owntracks觸發 enter/leave zone事件而使得自動化失效
所以我想反過來 身上帶著ibeacon基站 在家門口放一個手機執行Owntrack app追蹤enter/leave zone事件
這樣就不會因為我手機沒網路而導致觸發失敗
這還沒驗證過 等我收到ibeacon基站再做進一步測試

參考資料:
使用樹莓派自製ibeacon基站
HA官方blog-iBeacons: Making presence detection work better (part I)
HA官方blog-iBeacons: Making presence detection work better (part II)
HA MQTT Brokers
HA OwnTracks
OwnTracks ibeacon
OwnTracks ibeacon for car parking











评分

参与人数 4金钱 +54 收起 理由
dawn98 + 7 支持!!!这是首个室内定位的教程,感谢分.
jyz_0501 + 7 应该是本论坛首个室内定位的教程,智能化终.
27hh + 20 应该是本论坛首个室内定位的教程,大力支持.
+ 20 感谢楼主的详细教程!

查看全部评分

回复

使用道具 举报

32

主题

986

帖子

4233

积分

论坛元老

Rank: 8Rank: 8

积分
4233
金钱
3207
HASS币
110

教程狂人论坛风云人物

发表于 2017-12-19 13:21:22 | 显示全部楼层
感谢分享!基站只需要一台就够吗?还是需要确定几个位置就要装几个基站?能否上几张图呢?
回复

使用道具 举报

123

主题

4664

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16442
金钱
11693
HASS币
45
发表于 2017-12-19 13:23:55 | 显示全部楼层
非常详细的帖子,感谢楼主分享!
回复

使用道具 举报

0

主题

86

帖子

367

积分

论坛积极会员

积分
367
金钱
281
HASS币
0
发表于 2017-12-19 13:25:13 | 显示全部楼层
这个好强大,好好学习下先
回复

使用道具 举报

0

主题

86

帖子

367

积分

论坛积极会员

积分
367
金钱
281
HASS币
0
发表于 2017-12-19 13:44:19 | 显示全部楼层
查了下相关资料 好像是要实现精确的定位还是需要部署多个基站联动的,但这方面的开源软件似乎不多。
回复

使用道具 举报

27

主题

387

帖子

3269

积分

元老级技术达人

积分
3269
金钱
2862
HASS币
40

教程狂人

 楼主| 发表于 2017-12-19 13:46:57 | 显示全部楼层
27hh 发表于 2017-12-19 13:21
感谢分享!基站只需要一台就够吗?还是需要确定几个位置就要装几个基站?能否上几张图呢? ...

一個zone追蹤只要一個ibeacon基站即可
可以使用多個同樣uuid major minor設定的基站來加強覆蓋
圖已經補上囉
回复

使用道具 举报

27

主题

387

帖子

3269

积分

元老级技术达人

积分
3269
金钱
2862
HASS币
40

教程狂人

 楼主| 发表于 2017-12-19 13:50:42 | 显示全部楼层
colyn 发表于 2017-12-19 13:44
查了下相关资料 好像是要实现精确的定位还是需要部署多个基站联动的,但这方面的开源软件似乎不多。 ...

只要用一個基站丟門口
就可以在人(手機)到達門口時自動開燈或開門
再丟一個到車上
人離開車後,要開車時只要打開APP就能知道車子的最後位置
主要是ibeacon很省電
我用手機模擬基站跑,關掉其他通訊
手機自己預估可以跑個幾天
不過我還沒真的跑那麼久 不知道是不是真的
淘寶上也有賣ibeacon基站,挺便宜的
不過我買了還沒到手 如果不錯再分享給大家

评分

参与人数 1金钱 +1 收起 理由
jyz_0501 + 1 谢谢分享!

查看全部评分

回复

使用道具 举报

0

主题

86

帖子

367

积分

论坛积极会员

积分
367
金钱
281
HASS币
0
发表于 2017-12-19 13:55:15 | 显示全部楼层
windgo 发表于 2017-12-19 13:50
只要用一個基站丟門口
就可以在人(手機)到達門口時自動開燈或開門
再丟一個到車上

嗯,这样说就更容易理解了,确实是很不错的方案,可以好好研究下。期待后续分享~
回复

使用道具 举报

175

主题

2967

帖子

7608

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7608
金钱
4616
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2017-12-19 14:05:22 | 显示全部楼层
来凑个前排~~囧帅不能判我恶意灌水!!!

评分

参与人数 1金钱 +1 收起 理由
27hh + 1 善意灌水~

查看全部评分

回复

使用道具 举报

0

主题

107

帖子

605

积分

高级会员

Rank: 4

积分
605
金钱
498
HASS币
0
发表于 2017-12-19 17:33:24 | 显示全部楼层
这个确实很不错
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-23 03:56 , Processed in 0.223611 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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