前置作業
詳細資料可以參考HomeKey-ESP32
晶片焊接方式
晶片該怎麼接請參閱晶片接腳參考
依照你購買的晶片參考腳位去接
我試過ESP32S ESP32-C3 Super mini都可以正常使用
圖為PN532+ESP32-C3 super mini
安裝Python
Python安裝方式參考你的作業系統
Windows python 安裝參考
Mac python 安裝參考
安裝esptool
esptool
下載需要的bin檔案
依照你的晶片下載相對應的merged.bin檔案
下載連結
我是放在跟esptools同個目錄 你也可以依照你的需求去修改
HA安裝 Mosquito broker ,Mqtt Explorer
Mqtt Explorer
以上為前置作業完成後就可以開始燒錄了
燒錄晶片
參考官方設定資料因為我們是第一次燒錄所以使用
python esptool.py write_flash 0x0 <firmware_merged.bin>
這行指令去進行第一次的燒錄
因為我的環境是Mac 所以會跟Windows有些不同
依照你的環境去對應
先切換到你放esptool的資料夾 當然你知道怎麼下路徑也可以不用切換
確保 esptool 還有 merged.bin在同個目錄下
就可以開始燒錄
因我mac裝的是python3 所以使用pthon3 esptool.py write_flash 0x0 esp32c3-firmware_merged.bin 去燒錄
等待燒錄完成
燒錄完成後拿出手機wifi搜尋 HomeSpan-Setup
連上後會自動跳轉到設定環境wifi的地方 輸入你家的2.4G WIFI ssed跟密碼
如果沒有跳轉請開瀏覽器 自行輸入http://192.168.4.1/hotspot-detect.html
設定完成後會跳到下一頁面 這邊不需要設定直接 SAVE Settings即可
設完後就可以從Router查詢晶片ip 並登入
先點選Misc
Device Name可以修改成你喜歡的名稱
OTA Password 更新用的密碼你也可以改成自己喜歡的
HomeKey Card Finish可以選擇你要的HomeKey卡片顏色
其他的設定可以不用動
改完後拉到最下面點 Submit 儲存設定 等待重開
重開完成就可以拿出手機去增加HomeKey了
HomeKit 8碼為 466-37-726
到這邊加入完成後就可以不管它了
轉到MQTT Config 頁面
Address 為 HA IP
Username Password 照 Mosquito broker設定的帳密去輸入
HK Auth Topic 是等下會用到的
其他的設定不需要修改
設定完成後即可儲存
然後就可以在Mqtt裡面發現
基本設定到這邊就完成了
再來是摸了一段時間後發現該怎麼應用
打開MQTT Explorer
Name 可以不修改 或改成你自己喜歡的
Host 輸入HA IP
Username Password 輸入 你在mosquito broker裡面設定的帳密
可以儲存然後再點CONNECT連上
進來後可以看到左邊的homekey_mqtt 以及 topic 兩個選項
展開後可以在homekey_mqtt看到連線狀態
topic 裡面可以看到homkey
要判斷卡片進來的資料可以拿一張卡片刷一下PN532就會出現
或者剛剛加入HomeKey的手機刷
可以看到用RFID卡或者HomeKey功能的手機進來auth資料會不同
從這邊就可以去針對進來的topic資料去做應用了
創建一個yaml去針對進來的topic資料去產出幾個sensor
mqtt:
sensor:
- name: "HomeKey Endpoint ID"
state_topic: "topic/homekey/auth"
value_template: "{{ value_json.endpointId }}"
- name: "HomeKey Homekey"
state_topic: "topic/homekey/auth"
value_template: "{{ value_json.homekey }}"
- name: "HomeKey Issuer ID"
state_topic: "topic/homekey/auth"
value_template: "{{ value_json.issuerId }}"
- name: "RFID ATQA"
state_topic: "topic/homekey/auth"
value_template: "{{ value_json.atqa }}"
- name: "RFID SAK"
state_topic: "topic/homekey/auth"
value_template: "{{ value_json.sak }}"
- name: "RFID UID"
state_topic: "topic/homekey/auth"
value_template: "{{ value_json.uid }}"
如果你沒有修改 HK Auth Topic 直接複製貼上即可
如果有修改 state_topic: “topic/homekey/auth” 請改成一樣的
修改好以後就可以檢查沒有問題就可以重開生效
再來就可以用 sensor.rfid_uid 以及 sensor.homekey_issuer_id 來做其他的應用
另外有發現同一張卡或者是同一個iphone刷的話id不會變更導致無法判斷第二次刷
弄了一個自動化 刷完2秒清除資料 這樣同一個卡片也可以在2秒後重複刷
timer:
rfid_reset:
duration: '00:00:02'
automation:
- alias: "Start RFID Reset Timer"
trigger:
platform: state
entity_id:
- sensor.rfid_uid
- sensor.homekey_issuer_id
action:
- service: timer.start
target:
entity_id: timer.rfid_reset
- alias: "Clear RFID UID and Issuer ID"
trigger:
platform: event
event_type: timer.finished
event_data:
entity_id: timer.rfid_reset
action:
- service: mqtt.publish
data:
topic: "topic/homekey/auth"
payload: '{"uid":"","issuerId":""}'
大致上分享到這邊
希望能幫到有需要的朋友