ESPresense 藍牙室內定位設定
作者:紅軍
知道ESPresense已經一段時間一直沒有去研究要怎麼玩 今天沒事閑來就摸索了一下 看了很多資料每個人的設定方式都不太相同 導致整個頭暈腦脹 後來終於摸索出了一個可行的方式 現在將自己摸索出來的方式分享給大家 希望能幫助到想要玩ESPresense的朋友
前置作業
先準備一顆具有藍芽的esp晶片(我習慣用esp32s,所以後面都是以esp32s當範例) HA安裝MQTT Explorerhttps://community.home-assistant.io/t/mqtt-explorer-addon/465758正式開始
先前往ESPresense官網開始燒錄espresense firmwarehttps://espresense.com/firmware
等待安裝完成後設定wifi連線

在這邊遇到過第一個坑 轉很久 實際上已經連線完成 如果轉超過2分鐘可以檢查router是否已經連線取得ip 是的話直接F5刷新 重新connect設備有時候會跟一開始一樣只有兩個或者是三個選項關掉再重新連 出現四個選項才是正常

設定espresense 選擇visit device 此時會開啟espresense的設定頁面 這邊我們先做第一次的初次設定先將這顆espresenst加入HA裏面

依序輸入房間名稱 MQTT資料 儲存後重開設備

重開後即可在MQTT裡面就可以看到設備已經抓到

選擇Logs&console
此時就可以看到附近的藍芽設備慢慢的被掃進來
設定 Mqtt Explorer
依序輸入MQTT Server資料設好儲存連線 會列出你的所有mqtt的連線資料選擇 espresense

在rooms就能看到剛剛設定的資料
抓取要連線的手機資訊 有很多方式可以抓手機的資料這邊我只列出其中一種個人覺得簡單的方式 因我只有iphone所以我只用iphone舉例 連到espresense的設備綁定頁http://espresense.ip/ui(注意是espresense的ip)

在name中輸入設備名稱 因我們只是要取得設備的資訊而已等下會另外處理所以隨便輸入另外一個即可 後續會把這個資料砍掉 設好以後確認 espresense會開啟藍芽配對模式 此時打開手機的藍牙搜尋espresense
配對完後即會馬上斷開這是正常的不用擔心 回到MQTT Explorer

此時可以看到剛剛連接的設備可以在settings這邊看到 確認name是否跟你剛剛設定的一樣 將irk:xxxxxxxxxxxx複製下來此資料後續需要用到 複製下來後即可以將此設定資料刪除了
5.最後的設定 依照官方資料須將下列資料加入 configuration.yaml 裏面 也可放在你習慣的yaml裏面
sensor:
# One entry for each beacon you want to track
- platform: mqtt_room
device_id: "iTrack:xxxxxxxxxxxx"
name: 'ESP Keys'
state_topic: 'espresense/devices/iTrack:xxxxxxxxxxxx'
timeout: 10
away_timeout: 120
- platform: mqtt_room
device_id: "iBeacon:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-3-58241"
name: 'ESP Chipolo'
state_topic: 'espresense/devices/iBeacon:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-3-58241'
timeout: 10
away_timeout: 120此時將剛剛複製下來的irk資料填入

返回espresense 設定頁面

將irk資料填入此欄位 只需要輸入irk:後面的32碼即可 如果有兩個以上設備每個irk code之間用空格隔開 中間不要加入任何符號 設定好後儲存檢查沒有問題重開HA以及espresense
重開後即可在實體找到剛剛設定的設備
以上為這次的分享 希望能幫助到有需要的人
後記
第二顆開始只要照著1. 2.設定好esp晶片接入HA 再將第一顆 scanning 的資料複製過去即可
apple watch irk取得方式 依照官方資料https://espresense.com/beacons/apple

在取得password時請注意只要找到
<key>Remote IRK</key>
<data>
xxxxxxxxxxxxxxxxxxxx
</data>將Remote IRK data裡面的資料複製出來 在輸入官方的欄位去產出32碼的irk key即可
至於要怎麼調整範圍就給各位自己去摸索了
2023.7.29 新增資料 將sensor改為device_tracker可以加入Person
automation:
- alias: "手機轉換為裝置"
description: ""
trigger:
- platform: state
entity_id:
- sensor.your_espresense_device_id
condition: []
action:
- service: device_tracker.see
data:
dev_id: your_device_id
location_name: >
{% if trigger.to_state.state in ['bor_room', 'living_room'] %}
home
{% elif trigger.to_state.state == 'not_home' %}
not_home
{% else %}
unknown_room
{% endif %}
mode: single
max: 10sensor.your_espresense_device_id 替換成你自己的 device_id: 自己定義要顯示的名稱 location_name: > {% if trigger.to_state.state in [‘bor_room’, ‘living_room’] %} 這段請改房間名稱與你的相符即可 將上段code加入 ESPresense設定或者加在automation.yaml都可以
自己弄的3D列印外殼
有出現什麼訊息?
你的那顆espresense的ip不是 espresense.ip
檢查你家網路是否有問題
設定畫面可能因版本與設備不同而有差異。想交流使用經驗,歡迎加入惟家 LINE 社群;社群以使用者互助為主,非官方一對一技術支援。
