HomeKey Esp32 + PN532 設定方式分享

前置作業
詳細資料可以參考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":""}'

大致上分享到這邊
希望能幫到有需要的朋友

1個讚