Aqara 系列門鎖進 HA 後的處理

作者:紅軍

前陣子裝了Aqara D200 一直覺得要想辦法加入HA做些應用才可以 經過 洋蔥大指導後成功將M2刷機 並順利讓門鎖狀態進入HA 於是在NR弄了一個人臉辨識的函數 今天分享給大家個人的用法

首先需要參考洋蔥大的文章進行網關刷機 詳情請參閱洋蔥大的GitHubAqara M1S M2 韌體AqaraGateway

刷完機後請先在HACS安裝 AqaraGateway rep請自行添加AqaraGateway

安裝完重開就會抓到你的網關 直接加入即可 如果沒有刷過只會顯示網關名稱 有刷過就可以抓到裝置跟實體 再來請到助手新增一個虛擬開關

Aqara 門鎖進 HA 教學截圖 01

個人是用D200內部開門 依照你自己的需求去設定

以上準備工作完成後我們就可以來到NodeRed進行設定了 Function內容如下

bash
//從HA取得門鎖Key ID及內部開門虛擬開關狀態
const ha = global.get('homeassistant').homeAssistant;
const InSide = ha.states["內部開門虛擬開關"].state;
const keyID = ha.states["門鎖Key ID實體"].state;

//人員KeyID及開門方式設定
const knownIDs = {
    "HomeKeyID": { name: "HomeKey", type: "homekey" },
    "ID1": { name: "User1", type: "face" },
    "ID2": { name: "User1", type: "pass" },
    "ID3": { name: "User2", type: "face" },
    "ID4": { name: "User2", type: "pass" },
    "ID5": { name: "User3", type: "face" },
    "ID6": { name: "User3", type: "pass" }
};

//歡迎詞
const welcomeMessages = [
    "歡迎回家,name!",
    "辛苦了,name!歡迎回家!"
];

//亂數語音模式
const voices = [
    "zh-TW-HsiaoChenNeural",
    "zh-CN-XiaoxiaoNeural"
];

if (InSide === "on") {
    return null;
}

//確認開門方式
const id = knownIDs[keyID];
const name = id ? id.name : "未知人員";
const type = id ? id.type : "";
let lineMsg = "";
switch (type) {
    case "homekey":
        lineMsg = "用HomeKey開門";
        break;
    case "face":
        lineMsg = "用人臉辨識開門";
        break;
    case "finger":
        lineMsg = "用指紋辨識開門";
        break;
    case "pass":
        lineMsg = "用密碼開門";
        break;
    case "nfc":
        lineMsg = "用NFC卡片開門";
        break;
    default:
        lineMsg = "注意未知人員開門";
        break;
}

//Line訊息及語音播放處理
const getRandomItem = (array) => array[Math.floor(Math.random() * array.length)];
const randomMessage = getRandomItem(welcomeMessages).replace("name", knownIDs[keyID]?.name || "");
const randomVoice = getRandomItem(voices);

return {
    payload_line: { message: `${name}${lineMsg}` },
    payload_tts: {
        message: randomMessage,
        cache: true,
        options: {
            volume: "+100%",
            voice: randomVoice,
            pitch: "+0Hz",
            rate: "+0%"
        }
    }
};

因我自己TTS是用的是edge 如果你要用自己的請修改成你的方式 或者參考這篇去安裝設定edge tts Edge TTS Node-Red 亂數語音+亂數訊息分享

內部開門虛擬開關 請填寫剛剛在助手新增的虛擬開關ID 門鎖Key ID實體請填寫你門鎖在HA的實體ID

人員KeyID 請在門鎖狀態這邊確認 每個人都有不同的ID

Aqara 門鎖進 HA 教學截圖 02

開門方式用type區分 homekey,face,finger,pass,nfc 依照你登錄門鎖的時候去區分type

function大致上就這些需要注意跟自行修改

整體flow大概這樣設定

Aqara 門鎖進 HA 教學截圖 03

因有個資就不po完整的flow了

以下為各節點設定截圖 門狀態

Aqara 門鎖進 HA 教學截圖 04

switch 設定

Aqara 門鎖進 HA 教學截圖 05

發送Line通知

Aqara 門鎖進 HA 教學截圖 06

HomePod 音量設定

Aqara 門鎖進 HA 教學截圖 07

HomePod TTS設定

Aqara 門鎖進 HA 教學截圖 08

D200內部開門on off

以上為本次分享 有問題可在群內詢問

沒刷幾 沒辦法進HA就沒辦法知道是誰透過什麼方式開門 HK只有簡單的HomeKey也不能知道是誰開門

設定畫面可能因版本與設備不同而有差異。想交流使用經驗,歡迎加入惟家 LINE 社群;社群以使用者互助為主,非官方一對一技術支援。

Aqara 系列門鎖進 HA 後的處理 | 惟家 JustPlus