Home Assistant 現在也可以透過 MightyRC 控制家電囉~

 

IoT (物聯網) 主流的訊息傳遞協定 MQTT,MightyRC 也正式支援囉! (Android v0.0.55 之後)
透過 Home Assistant 控制 MightyRC 不再是夢想。

 

這篇注定是台灣肯定是冷門中的冷門,但從技術應用的角度,這會是 MightyRC 串接到家電控制自動化平台的一大步。
所以發個文記錄一下!!!

MQTT 是個訊息傳遞的協議,他除了資料的封包定義上比傳統的HTTP要輕量些外,MQTT 還涵蓋了訊息管理的架構,以訊息佇列 (Message Queue)的方式,讓代理人 (Broker) 可以管理儲存由發送端(Publisher)所發送到特定主題 (Topic) 的訊息傳遞到訂閱這些特定主題 (Topic) 的接收端。

這邊有些資訊可以讓大家參考  Cubie 的物聯網教學 MQTT教學(一):認識MQTT
針對 MQTT 會說明的更清楚些。

因為 MightyRC 是發送訊號來控制家電,所以在整個 MQTT 的架構裡頭,MightyRC 扮演的是訂閱訊息 (Subcriber) 的角色

使用者可以在 Android 的設定畫面中把 Broker 與 Topic 相關資訊填好,就可以連接到 Broker了,而訊息的發送者,就會是一般家電自動化平台軟體 (例如台灣越來越多人使用的 Home Assistant) ,針對我們所定義的主題 (Command Topic) 發布 (Publish)控制訊息,就可以透過 MightyRC 來控制家電。而命令執行後的狀態,可以透過訂閱  (Subscribe) State Topic  來得到最新的情境狀態。

 

Home
Home Assistant 中,可以這麼設定,當大門感應器打開的時候,透過 MightyRC 把書燈、沙發燈打開

 

發佈到 Command Topic的 MightyRC 的MQTT 訊息的格式呢?

{“cmd”: [” 7c803569-beee-4f8e-a13d-58c9d0ea2c36:1″,”4cc5f747-1b68-49e6-b173-4610a418bb15:1″]}

以上面這個例子來說,MQTT 訊息發給 MightyRC,然後 MightyRC 針對

書燈的情境代碼: 7c803569-beee-4f8e-a13d-58c9d0ea2c36

沙發燈的情境代碼: 4cc5f747-1b68-49e6-b173-4610a418bb15

做打開的動作,如果要把情境關閉,就把冒號後的數字換成0就可以了。

至於情境、裝置按鈕、特殊鍵、快捷鍵的代碼要怎麼取得呢?

長壓 Android MightyRC 的按鈕, MightyRC 就會把該代碼複製到手機的剪貼簿裡。
Siri、IFTTT 整合入門 part 3: 雲端訊息控制 MightyRC 這篇有比較詳細的說明。

想要同步情境的狀態到 Home Assistant 或是其他的平台,除了這些平台要訂閱 State Topic 外,MQTT 的資料格式如下

{“7c803569-beee-4f8e-a13d-58c9d0ea2c36”:1}

7c803569-beee-4f8e-a13d-58c9d0ea2c36 是情境的代碼

冒號後的1 則代表情境已經是被開啟的狀態

針對 Home Assistant,如果要加入 MightyRC 情境開關 (ex 客廳電風扇 代碼是281a3ed8-5550-44a6-87ad-7b2c2c741835)

可以在 Home Assistant 的 configuration.yaml 中,加入

– platform: mqtt
name: “客廳電風扇”
command_topic: “MightyRC/command”
state_topic: “MightyRC/state”
state_on: “1”
state_off: “0”
value_template: “{{value_json[‘281a3ed8-5550-44a6-87ad-7b2c2c741835’]}}”
payload_on: “{\”cmd\”:[\”281a3ed8-5550-44a6-87ad-7b2c2c741835:1\”]}”
payload_off: “{\”cmd\”:[\”281a3ed8-5550-44a6-87ad-7b2c2c741835:0\”]}”

就可以搞定了~

好了,介紹就到這邊,有 Home Assistant 或是想透過 Automate 實現自己的家電自動化平台,MQTT 是很開放又好用的工具。

沒有留言

留言

你的電子郵件不會被公開