從自幹 IoT 架構轉 Home Assistant

8 min

前言

以前開發的架構是這樣的

  • 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 * 232G 記憶體3,820
1TB SSD儲存硬碟3,xxx
通訊控制數位訊號輸入輸出 (Modbus TCP)5 Input / 5 Output1,041
8 Port 繼電器 (Modbus TCP)開關控制模組1,221
4Port 類比訊號輸入 (RS485)感測訊號採集937
USB to RS485實體層通訊轉換163
感測器溫度感測器 * 4PT1001,033
電力與網路明緯 XDR-120-48 電源48V 電力供應1,150
明緯 EDR-150-24 電源24V 電力供應521
8 Port 導軌式 POE Switch工業級網路交換器1,185
線材耗材RS485 RVSP 遮蔽型絞線4芯 0.35mm / 100M976
120Ω * 10 電阻1/4 W20

以上除了主機CPURAM 是二手外,其餘都是買新品


開工

大腦 HP 800G5

買的時候因為 HP 800G5 的物流很慢,其他收的二手產品都已經快過賣家保固真的是很緊張,好險最後零件們都是可以運作的。

開始準備工具 HP 全部工具

以下是裝機的相關圖

Software

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

PVE Login Page
PVE Login Page

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

Install HAOS
Install HAOS

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

HAOS
HAOS

拆 Jetson nano

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

Jetson Nano
Jetson Nano

一個 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 有干擾,我還在總線末端接上了電阻,雖然我的距離好像不一定要裝,但還是正式一點好了!

RS485 末端電阻
RS485 末端電阻

結語

透過 HomeAssistant 的 Mobile App 快速又順暢,並且有數據紀錄可以查看很棒!完全不後悔放棄自幹,只能說對 HomeAssistant 相見恨晚!

目前持續採買相關設備,挑選邏輯大概是這樣

  • 農場用:買 RS485 工業用協定
  • 家內智慧用:買 Zigbee or Thread 物連網協定

持續進行中的 feature 如下,研究完畢後未來再來寫分享:

  1. 將現有的監視器系統接入 Frigate 並且連動 HomeAssistant 來做自動化。
  2. 接入 mLTS 然後把 HomeAssistant Domain 綁定 Access。
  3. 使用土壤濕度感測器,把農場灑水變動態控制。
  4. 室內接入智慧家居。
  5. Frigate 插上 TPU 加強 AI 運算。

Comments

Loading comments...