惟家空調控制器 設定定時關機教學
定時關機能做什麼
每天(或只有週一到週五)到了您設定的時間,控制器會自動幫您關冷氣。不需要家庭中樞,也不需要手機 App 在線。
- 可以跟關機防霉教學一起用:定時關機後照常送風把冷氣內部吹乾再關,也可以設定成定時那次直接關。
- 沒有裝關機防霉也能單獨使用。
- 如果您家裡有 Apple TV 或 HomePod 當家庭中樞,也可以直接用 iPhone「家庭」App 的「自動化」設定定時關機,手機上就能隨時改時間。
一、建立腳本檔案
- 用電腦或手機的瀏覽器,輸入空調控制器的 IP 位址或 mDNS 名稱(例如 xxxx.local),開啟控制器網頁。
- 進入「腳本管理」,在下方的檔名欄輸入 SchedOff.js。
- 按下方程式碼框右上角的「複製」,把程式碼貼到編輯框裡,按「儲存腳本」。
檔名請照抄 SchedOff.js。控制器只接受英文字母、數字、底線組成的檔名(含 .js 最多 16 個字),檔名有「-」或多的「.」會出現「檔案名不合法」。
二、設定關機時間
只要改程式碼的第 4 行,其他地方都不用動:
javascript
var H=23,M=0,D=1,A=1;- H、M:幾點幾分關機(24 小時制,台灣時間)。例:晚上 11 點 → H=23,M=0;凌晨 1 點半 → H=1,M=30
- D:1 每天;2 只有週一到週五(週六、週日不關)
- A:1 定時關機後照常防霉(建議);0 定時關機那次不送風、直接關(怕睡前有風聲時用)。沒有裝關機防霉的話,A 設多少都一樣、直接關機;設成 0 只影響定時關機那一次,平常自己關冷氣仍會照常防霉。
範例:只有平日晚上 10 點半關機、照常防霉:
javascript
var H=22,M=30,D=2,A=1;改好後按「儲存腳本」。
三、加入腳本執行管理
建立檔案後,還要加入執行,腳本才會開始運作。
- 進入「腳本執行管理」,按右上角的「+」新增腳本執行器。
- 「選擇檔案」選 SchedOff.js。
- 「事件觸發」不勾,「計時器」勾選,「執行間隔(ms)」填 1000,按「確認」。
- 確認 SchedOff.js 卡片上的開關是開啟的。
- 🔴 按「腳本執行管理」右上角的同步圖示(⬆️),把設定同步到設備,腳本才會真正開始運作。(只存在網頁、沒按同步,控制器上不會生效。)
有搭配關機防霉的話,Antimold.js 的執行器是「事件觸發」與「計時器觸發」都勾、1000,設定方式見關機防霉教學。
使用小提醒
- 一天只會自動關一次。定時關機之後您再自己開冷氣,當天不會再被關掉。
- 時間到了冷氣本來就是關著的,不會有任何動作。
- 控制器剛好在關機時間斷電或重開,5 分鐘內恢復會補關一次;超過 5 分鐘就等隔天。
- 當天已經自動關過才修改時間,新時間從隔天開始生效。
- 冷氣正在送風防霉時剛好到了關機時間,會讓防霉跑完,不會打斷。
- 想暫停:到「腳本執行管理」把 SchedOff.js 的開關關掉即可,不用刪檔。
完整程式碼(SchedOff.js)
javascript
// scheduled off v1:每天定時關冷氣(台北時間),可與 Antimold v3.3 並用
// H:M=關機時間;D=1 每天、2 只有週一到週五
// A=1 定時關機後照常防霉(需有裝防霉);0 只有這次不吹乾(平常自己關機仍會防霉)
var H=23,M=0,D=1,A=1;
var W=300; // 錯過整點(重開機等)時,W 秒內仍補關一次
var s=null,r=app.get();
try{s=r?JSON.parse(r):{}}catch(e){s=null;print("so bad state")}
// 只看計時器;讀不到 state 就不動作(不可清空,Antimold 也在用)
if(s&&!(typeof event!="undefined"&&event&&event.data)){
var now=(Date.now()/1000|0)+28800; // 台北牆鐘秒數,與 Antimold 同基準
var day=Math.floor(now/86400),sec=now%86400,t=H*3600+M*60;
if(!s.so)s.so={d:0};
if(s.so.d!==day&&sec>=t&&sec<t+W){
s.so.d=day; // 一天只做一次;之後使用者再開機不會被關
var wd=(day+4)%7; // 0=週日 6=週六
if(D===2&&(wd===0||wd===6)){
print("so weekend skip");
}else if(s.am&&s.am.ph!=="idle"){
// 防霉正在跑(冷氣已被關、正在送風):讓它自己收尾,避免打斷後記住送風
print("so antimold busy");
}else{
if(!A){
if(!s.sys)s.sys={owner:"",expectUntil:0,skipAntiMoldUntil:0};
s.sys.skipAntiMoldUntil=now+20;
}
print("so off");
app.cmnd(JSON.stringify({ac:{power:"off"}}));
}
app.set(JSON.stringify(s));
}
}
設定畫面可能因版本與設備不同而有差異。想自己寫更多自動化,請參考惟家空調控制器腳本開發指南。想交流使用經驗,歡迎加入惟家 LINE 社群;社群以使用者互助為主,非官方一對一技術支援。
