從自幹 IoT 架構轉 Home Assistant
前言
以前開發的架構是這樣的
- Nvidia Jetson nano 跑 Python 寫的 Edge App 專門接收 MQTT、打 API 等遠端調整值的工作 (根本大材小用)
- Golang 開發的 Server 用來控制 Mobile App 的操控與發送 MQTT 通知 Edge App 有值更新
- Mobile App 開發雙平台之手機 app
一個人要開發這麼多東西,除了迭代超慢外,維護起來根本好痛苦,再加上需求越來越多樣化,已經不是一開始的農場灑水而已。
契機
先說說為什麼一開始要自己動手做,其實是想玩玩 Arduino 以及順便學習 Golang、Python,所以已知這些東西一定有現成的,但秉持著想自己做出來的想法,就踏入了不歸路。
某一天心血來潮想要繼續開發專案,但又覺得好懶於是跟我的好朋友 Gemini 聊天,他說可以用一款開源的專案來達成我所有的目的,而且更強大 支援第三方設備 我現在專案的痛點就是沒有辦法無痛的使用第三方所販售的 IoT 相關設備,只能靠我自己做出類似的 Arduino 感測器。
於是我花了 0.5 秒思考,就放棄了堅持自己開發的念頭,決定踏入開源 Home Assistant 的懷抱。
錢錢錢
除了軟體是開源,其餘又是一筆花費
過往是把 Server 放雲,為了怕山上網路不穩在 Edge 有做個 Cache 不會一斷網就無法運作,但這樣面臨如果要改參數也無法透過內網來改,所以必須買一台伺服器放在山上直接當 HomeAssistant 的 Server。
說了這麼多,我直接列出建置環境初期的花費與購買的東西:
| 類別 | 設備名稱 | 規格/型號 | 購買金額 (NTD) |
|---|---|---|---|
| 主機運算 | HP EliteDesk 800 G5 DM | 準系統 | 2,350 |
| Intel® Core™ i7-8700 處理器 | 6核12緒 | 2,540 | |
| 16G DDR4 SODIMM RAM * 2 | 32G 記憶體 | 3,820 | |
| 1TB SSD | 儲存硬碟 | 3,xxx | |
| 通訊控制 | 數位訊號輸入輸出 (Modbus TCP) | 5 Input / 5 Output | 1,041 |
| 8 Port 繼電器 (Modbus TCP) | 開關控制模組 | 1,221 | |
| 4Port 類比訊號輸入 (RS485) | 感測訊號採集 | 937 | |
| USB to RS485 | 實體層通訊轉換 | 163 | |
| 感測器 | 溫度感測器 * 4 | PT100 | 1,033 |
| 電力與網路 | 明緯 XDR-120-48 電源 | 48V 電力供應 | 1,150 |
| 明緯 EDR-150-24 電源 | 24V 電力供應 | 521 | |
| 8 Port 導軌式 POE Switch | 工業級網路交換器 | 1,185 | |
| 線材耗材 | RS485 RVSP 遮蔽型絞線 | 4芯 0.35mm / 100M | 976 |
| 120Ω * 10 電阻 | 1/4 W | 20 |
以上除了主機、CPU、RAM 是二手外,其餘都是買新品
開工
大腦 HP 800G5
買的時候因為 HP 800G5 的物流很慢,其他收的二手產品都已經快過賣家保固真的是很緊張,好險最後零件們都是可以運作的。



開始準備工具 
以下是裝機的相關圖




Software
裝好後,我在電腦安裝了 PVE 這套虛擬化管理系統,因為我不想讓我的電腦只跑 HomeAssistant,所以先上強大的虛擬化軟體。

接著在裡面先安裝 Cloudflare Tunnel 這樣可以直接透過網址連上,然後安裝 HAOS (Home Assistant 的 OS),我是採用 PVE 的社群 Helper Script 一件安裝。

PVE 的 Helper Script 真的是有夠讚,就很像 Docker Compose 不需要太繁瑣的流程就能安裝完。

拆 Jetson nano
我們必須感謝 Jetson nano 這兩年的辛勞,幾乎非常穩定的運作,除了中間我腦殘在 Google Cloud 上不小心砍掉幾個 functions 導致服務中斷。

一個 Jetson nano 居然只被我拿來接 4 Port Relay 實在超浪費😂
設備寫入資訊 & 拉線
這個環節主要是在改 RS485 的以下資訊
- 設備有網路孔的寫入 Statics IP
- 沒有網路孔的,定義設備 Slave ID,因為 RS485 是用廣播的,所以設備地址不能重複

弄到超級亂哈哈哈哈,還拿我媽的 PC 來用,這步驟其實還算蠻快的,只是設備不是像家用設備有插頭可以直接接電,麻煩的地方是在電源。
接著開始在需要的地方拉電力線跟網路線,網路線都是自己壓接 RJ-45 水晶頭。

裝機
農場端
首先在原本 Jetson nano 附近的地方裝上 DIN 35 導軌,並且依序安裝上以下:
- 48V 電源
- POE SWITCH
- 8 Port Relay

這邊主要是要控制農場相關的,但目前不曉得為什麼我的這台 POE Switch 無法供電給 Relay 所以 Relay 目前還是用 DC 接著電源。
這邊主要是會接上電磁閥控制農場灑水相關的設備
鍋爐端
山上目前沒有用電熱水器,因為木材很多現階段都是用柴燒熱水,所以在鍋爐有安裝溫度感測器,到達一定溫度時會將熱水抽到電熱水器內保溫,原本爐內就可以燒新的熱水。

為了不讓 RS485 有干擾,我還在總線末端接上了電阻,雖然我的距離好像不一定要裝,但還是正式一點好了!

結語
透過 HomeAssistant 的 Mobile App 快速又順暢,並且有數據紀錄可以查看很棒!完全不後悔放棄自幹,只能說對 HomeAssistant 相見恨晚!
目前持續採買相關設備,挑選邏輯大概是這樣
- 農場用:買 RS485 工業用協定
- 家內智慧用:買 Zigbee or Thread 物連網協定
持續進行中的 feature 如下,研究完畢後未來再來寫分享:
- 將現有的監視器系統接入 Frigate 並且連動 HomeAssistant 來做自動化。
- 接入 mLTS 然後把 HomeAssistant Domain 綁定 Access。
- 使用土壤濕度感測器,把農場灑水變動態控制。
- 室內接入智慧家居。
- Frigate 插上 TPU 加強 AI 運算。