使用Home Assistant 搭配 Tasmota 裝置,建置家庭智慧型遙控器!-使用NodeMCU完成遙控器



    一開始參考了一些號稱可以拿來當作智慧型遙控器使用的產品,但是他們大多來路不明,如果使用者想要進一步的使用如 Google Assistant 之類的服務,使用者還必須容忍它們使用 wifi、連線到外部的服務,和來路不明的伺服器連線好來完成工作,而且不知道這些產品的會蒐集什麼樣的資料、能夠存活到什麼時候。
所以找到了 Tasmota 這個專案,他支援了很多基於 esp8266 系列的產品,總之台灣沒看到幾個。還不如自己買 8266 的晶片配零件來組裝。

我購買了 nodemcu 來進行安裝,因為 esp 晶片還要自己處理 Serial 的問題,所以乾脆買人家裝好的板子來用,不知道如何挑選可以參考這篇文章



    Tasmota 一開始是一個專案,主要是將 sonoff 的產品內的韌體替換成開源系統的專案,使用者可以藉此擺脫 sonoff 的伺服器,直接在區域連線控制。目前已經支援對 ESP8266 及其後續的系列的晶片的韌體。使用者只要購買了基於 esp8266 晶片的產品,並且 tasmota 官方有支援該型號就可以刷囉。

    而 Home Assistant 則是一個家庭 IOT 管理的中樞,可以管理各種支援的 IOT 裝置,還可以跟Google Assistant 還有 Homekit 連結。

MQTT 是 IOT 界常用的傳輸協定,他非常的輕量化,是  IOT  界常用的協定,這邊就不贅述了。


硬體需求:
Raspberry pi 4 x1
    micro SD x1
nodemcu x1
    IRsend:
        2N3904 x1
        TSAL6400 x1
    IRreceive:
        KY-022 x1
麵包版
連接線 數量隨喜
    
接線參考

之後會再補上我的接線圖




首先,先前往下載 tasmotizer,接著下載 tasmta-ir 的韌體。
接著開啟 tasmotizer,先插上裝置,選擇適當的 port  (不知道可以去裝置管理員尋找)



選擇剛剛下載的映像檔,勾選 self-restoring device,接著將裝置拔除,按著板子上的 FLASH、插上線,點選 tasmotize!


(想要使用 send config 請另外研究,個人沒有成功過)


接著請使用有 wifi 的裝置,連線到有 tasmota 前綴的裝置上
如果不知道 IP 是多少,可以去看 wifi 的 DNS 是甚麼。

在該網頁中輸入 wifi 的資訊,點選 save




前往 Configuration>Configure Module>Generic (18)>save




接下來必須準備安裝 home assistant  (下稱 HA) 了,先前往下載 raspberry pi imger,然後從 other specific-purpose 中選擇 home assistant OS,寫入到記憶卡中之後,插到 raspberry 主機中、開機。即可到 homeassistant.local:8123 中檢視,稍待約20分鐘機器完成配置之後就可以進入畫面了,完成前置設定之後就可以進入系統畫面了。


HA 要跟 tasmota (下稱TA)通訊,需要使用 mqtt 協定,整個網路中需要一個負責處理 mqtt 的中繼伺服器,稱之為 mqtt broker 因此需要在 HA 中安裝 mqtt broker
先在附加元件處安裝:Mosquitto broker
別忘了啟動他,接著可以到 設定/裝置與服務/mqtt 點選設定/重新設定MQTT,可以在裡面看到使用者名稱以及密碼。這就是稍後TA在連線到borker時會用到的帳號密碼,也可以自己設定帳密,總之記得在這裡就好。

接下來轉向 tasmota,configuration>Configure Other MQTT enable
回到上一頁,選擇 Configure MQTT
    Host:HA的IP
    Port:兩邊一樣就可以
    Client:剛剛紀錄的帳號
    Password:剛剛紀錄的密碼
    Topic:設定一個喜歡的主題關鍵字
存檔後,移向首頁



點選 Information,看看 MQTT Full Topic 是什麼,稍後傳送命令時會需要使用
這裡是 cmnd/IR/





接下來需要在 HA 裡面設定一個按鈕,好讓你可以遙控:需要先準備好要遙控的資料,這時候就需要將接收器組裝起來了,接收器接收到時就會在 console log 的頁面顯示出來 (因為前面已經設定好 IRreceive 的腳位了)  這是接收器收到電風扇遙控的紀錄。

只要從中擷取出需要的部分作為 MQTT 傳送時的 payload 就好。在這裡就是

{"Protocol":"NEC","Bits":32,"Data":"0xFF00FF","DataLSB":"0xFF00FF","Repeat":0}


 接下來,打開 configuration 檔案進行編輯,如果不知道可以參照這篇來進行。

輸入了這些文字,隨後在開發者工具內選擇重新載入所有的 YAML 設定,馬上就可以看到新的按鈕出現在主頁了!

當然還有各種不同的種類的開關可以使用,有按鈕、開關、風扇、門鎖之類的都可以在這邊搜尋,按鈕的還有更詳細的設定可以修改,可以隨自己的需求新增。

mqtt:
  button:
    - command_topic: "cmnd/IR/irsend"
      payload_press: '{"Protocol":"NEC","Bits":32,"Data":"0xFF00FF","DataLSB":"0xFF00FF","Repeat":0}'
      name: "3F小房間電扇"









之後要來研究如何讓他透過 Google assistant 來控制了。
目前連線都沒有加密,這也是之後想研究的題目。




參考:
https://tasmota.github.io/install/
https://tasmota.github.io/docs/IR-Remote/

留言

熱門文章