前陣子裝了Aqara D200
一直覺得要想辦法加入HA做些應用才可以
經過 洋蔥大指導後成功將M2刷機
並順利讓門鎖狀態進入HA
於是在NR弄了一個人臉辨識的函數
今天分享給大家個人的用法
首先需要參考洋蔥大的文章進行網關刷機
詳情請參閱洋蔥大的GitHub
Aqara M1S M2 韌體
AqaraGateway
刷完機後請先在HACS安裝 AqaraGateway
rep請自行添加AqaraGateway
安裝完重開就會抓到你的網關 直接加入即可
如果沒有刷過只會顯示網關名稱
有刷過就可以抓到裝置跟實體
再來請到助手新增一個虛擬開關
個人是用D200內部開門 依照你自己的需求去設定
以上準備工作完成後我們就可以來到NodeRed進行設定了
Function內容如下
//從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
開門方式用type區分 homekey,face,finger,pass,nfc
依照你登錄門鎖的時候去區分type
function大致上就這些需要注意跟自行修改
整體flow大概這樣設定
因有個資就不po完整的flow了
以下為各節點設定截圖
門狀態
switch 設定
發送Line通知
HomePod 音量設定
HomePod TTS設定
D200內部開門on off
以上為本次分享
有問題可在群內詢問