透過Tasker控制LIFX
最近從Amazon入手了一顆LIFX A19,主要是為了可以解決房間早上照不進太陽害我非常難起床的問題,因此我希望想要做的事情是:
- 在早晨隨著日出時間開啟並且緩慢改變亮度以及色溫,模擬日出的感覺。
- 在出門(手機沒有連上家裡Wi-Fi)之後透過行動網路傳送訊息給LIFX關燈。
- 在手機連上家裡Wi-Fi,而且時間是白天的時候自動開燈(回家就開燈的意思)。
第一項可以透過LIFX官方的App設定schedule來達成。只要先設定一個schedule在日出前任何時候先將色溫改成2500K(其他設定都保持不改變,即使燈是關的也沒關係),再設定一個schedule在日出時將燈開啟,色溫設定為3500K(日出後1小時的色溫)、亮度設定為100%、Fade Duration為60分鐘,這樣子LIFX就會在日出後慢慢地從暗開到最亮,並且模擬太陽的色溫變化了。
第2、3項則需要透過一些Automation的App來達成。在Android上我的首選當然是Tasker,但LIFX並沒有做跟Tasker接的plugin,只有IFTTT有這樣的功能,因此一開始我是選擇先試看看IFTTT。但IFTTT相當不穩定,有些applet完全沒辦法觸發,一氣之前還是想辦法找Tasker可以控制LIFX的方法。一開始找的方法是透過LIFX提供的HTTP API文件中提到利用HTTP POST方法開關燈,結果Tasker雖然可以做HTTP POST task,但沒辦法在其中帶header,所以無法滿足LIFX HTTP API的需求。簡單的解決方法是利用RESTask這個Tasker Plugin讓Tasker可以送出包含header的HTTP POST訊息。(2021/07/05 Updated: 忘記是多久以前Tasker的HTTP Request已經可以支援帶header了,所以現在可以直接利用Tasker內建的HTML Request對LIFX下指令了喔。)
但因為我實在是很不想再另外裝App,最後終於找到了一篇reddit討論串剛好有人也有做一樣的事情,他使用的方法是用JavaScript指令來觸發LIFX的HTTP API。因此在Tasker中可以做一個JavaScriptlet task,貼上以下這段Code:
這段Code中,想要對LIFX做什麼State上的調整,可以參考HTTP API文件中關於State的範例,然後把想要改變的東西寫在data這個變數中。另外還需要做的是向LIFX申請一個Personal access tokens,把這段Code中的YOUR_TOKEN換成你申請到的token,這樣就可以控制你所擁有的全部的LIFX燈泡了。如果你需要多顆燈泡個別調整的話,則要把url這的變數中的all改成LIFX的selector,但因為我沒有研究過到底要怎麼取得每一顆燈泡的selector id(看起來也是需要用HTTP GET去取得),有興趣的話就要麻煩大家自己看了(我懶了XD,反正也才一顆燈)。
留言
張貼留言