:::

雜談:Home Assistant從開發板遷移到虛擬機器 / Talk: Migrating Home Assistant From a Development Board to a Virtual Machine

2025-0122-210140.png

我原本拿來架設Home Assistant的OrangePie掛點了。藉這個機會,我將整個Home Assistant改在Proxmox VE架設。這裡記錄一下整個過程。


Orange Pi 3 LTS 開發板 / Orange Pi 3 LTS Development Board

2025-0122-163554.png

一開始我是在Orange Pi 3 LTS上,用Docker架設Home Assistant。Orange Pi 3 LTS是走ARM架構的全志1.8Hz A53 CPU ,記憶體2GB。IO接口非常豐富,具備標準的HDMI、網路孔、藍芽、三個USB Type A接孔。還可以用USB Type C供電,不過需要15W才能推得動。

2025-0122-165202.png

作業系統則是要自行下載映像檔並燒錄到記憶卡中。我用的作業系統是Ubuntu鏡像,記憶卡是十銓的128GB。

2025-0122-163712.png

http://www.orangepi.cn/orangepiwiki/index.php/Orange_Pi_3_LTS 

詳細規格可以參考Wiki-Orange Pi的記錄。

當初選擇Orange Pi 3 LTS的原因有很多。一般人說到開發板,大多會傾向使用樹莓派Raspberry Pi。但當時晶片大缺貨,Raspberry Pi的價格居高不下,而且IO接口跟性能也跟我預期的有點落差。相較之下,Orange Pi 3 LTS在1.8Ghz CPU跟2GB RAM的配置上,就有不少優勢。而且它的HDMI也是標準尺寸,充電孔也是使用Type C,這些都是我偏好選擇Orange Pi 3 LTS的理由。

Home Assistant的方案選擇

2025-0122-194241.png

https://www.home-assistant.io/installation/#advanced-installation-methods 

在Home Assistant的部署方式上,跟很多人選擇使用HA OS不同,我使用Docker來架設Home Assistant。Docker版本的Home Assistant跟HA OS相比,缺少方便的Add-ons整合。現在大部分Home Assistant的教學都會用到HA OS的Add-ons,但在Docker版本裡面就不適用。

2025-0122-194408.png

相較之下,Docker版本的Home Assistant能給我更高的掌握程度。Add-ons的擴充功能其實大多都可以用手動的方式安裝,但需要管理者耐心閱讀文件、查詢log記錄,以及搜尋網路上大家遭遇的問題。此外,我可以主動控制Home Assistant的版本,也可以在伺服器上部署一些非商店的Docker應用程式,讓我的Home Assistant執行我需要的監控和動作。

2025-0122-195019.png

https://www.facebook.com/groups/151166072456061/posts/1306402700265720/?__cft__[0]=AZVU5GMLm8QuyfLnKd8WPfR5KMJai194_pdT_WIVz_bPNbDpmUZH9a4NS5xAa42AIy5oZTyE9DELAE5r66BQkVsDxde-uDjm5f4OJfR3eXc5XTfmbXB1syRd2EWV19U2AkUNmqeEp2Jl2-c4icukDIvkYxFy5Q_DOewORF8hf9JEJC5M9sc8HrgCHU2sYJdaFXg&__tn__=%2CO%2CP-R

每次看Home Assistant社團有人抱怨版本被強制升級後某些功能就用不了的時候,我就會特別慶幸自己選擇高度可控制的Docker版本。只是內網使用的Home Assistant,外部人士幾乎無法連上使用。運作穩定的話,沒必要一直急著更新吧。

Orange Pi 3 LTS使用心得

尷尬的是,在使用三年的這段期間,Orange Pi 3 LTS其實很難說得上是穩定。有時候莫名其妙就會斷線,有時候是送出的指令沒有反應。大多情況下,關掉電源再讓它重新啟動,就可以恢復正常狀況。

2025-0122-201645.png

後來我發現它的風扇似乎無法順利運作,造成整個開發板過熱而當機。我還花了一筆錢來更換風扇。即使如此,Orange Pi終於在最近連重啟都起不來了。

20250122_192658.jpg

從Orange Pi 3 LTS開機的訊息來看,似乎是因為MicroSD終於壽終正寢了。可能是因為Home Assistant需要頻繁寫入記錄,所以對記憶卡的耗損特別嚴重吧。以往開機的時候都會先做磁碟檢查,花上好一段時間才能順利啟動,這次看來就真的不行了。 2025-0122-195408.png

不過我試著用讀卡機開啟看看,看來還是能夠順利讀取。嗯...所以是Orange Pi 3 LTS的讀卡機壞掉了嗎?

不管怎麼說,我就趁這個機會,把Home Assistant從Orange Pi 3 LTS移動到Proxmox VE虛擬機器上吧。


硬體的遷移 / Hardware Migration

20250122_195619.jpg

在遷移Home Assistant的軟體系統之前,我得要確保Home Assistant的相關硬體要能夠正常運作。除了網路之外,我的Home Assistant還需要使用藍牙控制SwitchBot,以及要用Zigbee Dongle控制Zigbee設備。

2025-0122-200004.png

Zigbee Dongle的部分我使用的是cc2652p晶片的連接器,使用USB連接。只要確認USB的ID,並在Docker設定裡面讓Zigbee2MQTT能夠存取,這樣就能確保軟體跟硬體能夠順利連接。相關的教學我寫在「使用Docker版本的Zigbee2MQTT控制Zigbee裝置」。

2025-0122-200236.png

如果我們要讓Proxmox VE的VM虛擬機器能夠順利讀取到USB,那麼只要在Proxmox VE設定加上USB設備的對應,虛擬機器裡面就能順利取用實體的USB。

2025-0122-200426.png

我們可以用「lsusb」來檢查機器有沒有抓到對應的設備。這是Linux的基本技巧,不過問ChatGPT它也會跟你說就是了,不難。

總之,硬體的遷移其實比想象中的還要簡單。藍牙跟Zigbee的連接器在接上Proxmox VE主機後,設定給虛擬機器讀取,虛擬機器也就很順利地抓到這些USB裝置,然後就能掛載給Docker使用了。


在Proxmox VE的虛擬機器 / Virtual Machine in Proxmox VE

2025-0122-202135.png

硬體確認沒問題之後,我就開始在Proxmox VE建立給Home Assistant使用的環境了。這次我選擇使用的是Kubuntu 24.04 LTS。選擇桌面版的原因是容易管理。儘管有人會認為桌面版會增加不必要的負擔,但如果資源沒有那麼緊迫的話,多一個桌面版其實會讓Linux的設定與管理變得容易許多。

我給Home Assistant的硬體資源是1核CPU、8GB RAM,硬碟大小是64GB。目前實際使用了15GB空間。

2025-0122-204359.png

使用Proxmox VE虛擬機器的好處就是能夠整機備份,並且將備份檔案放到NAS或其他地方保存。

2025-0122-204529.png

Home Assistant本身其實也有備份功能,不過由於我中間升級過Home Assistant的版本,導致舊的備份沒辦法直接用在新的Home Assistant版本中。這也可能是Docker版本Home Assistant的侷限,總之備份檔案似乎很難直接恢復。

2025-0122-204623.png

幾經研究後,發現關鍵的檔案其實是在config底下的.storage資料夾內。這裡面記錄了我設定的各個儀表板跟助手(helpers),因此後來我把它納入git的版本控制中,未來就能直接用git復原整個Home Assistant的設定。

2025-0122-204940.png

原本我就有寫好讓Docker內的Home Assistant跟宿主機 (現在是Proxmox VE底下的虛擬機器)溝通的機制。我用它備份執行git add、commit跟push的指令,這樣就能直接在Home Assistant面板上進行一鍵備份。

2025-0122-205426.png

目前運作了一個禮拜,看起來好像還算正常。不過我之前用Proxmox VE直通USB的時候,資料量一大,整個系統就很容易出問題。Home Assistant的使用量相對小很多,應該比較沒差吧?

2025-0122-205950.png

總之,只能祈禱Home Assistant能夠正常運作了。這下子終於可以擺脫那個動手開關燈的日子啦,真開心!