因篇幅關係,拆成以下幾篇易於閱讀。
- 透過Home Assistant實做魚缸的監控與輔助管理之一:系統概要 (本文)
- 透過Home Assistant實做魚缸的監控與輔助管理之二:感應器與ESP32
- 透過Home Assistant實做魚缸的監控與輔助管理之三:實現輔助管理
- 透過Home Assistant實做魚缸的監控與輔助管理之四:操作介面
過去在海水缸時期使用Neptune Apex 2016來做整套魚缸的管理,像是水質監測(溫度、pH、ORP和鹽度)、燈光定時、水位監測、漏水警報、造浪控制、設備開關控制、自動滴定和自動餵食等等。Neptune Apex 2016是一套非常完整的系統,缺點是非常的貴、需要從國外自行購入以及網路上的相關資源非常有限,最後在海水缸撤缸後就送人了。現在新設的金魚缸沒有這麼複雜,於是自己透過ESP32、Home Assistant與Gosund WP12延長線來做成這一套系統。
目前已設計好的功能有
分類 | 項目 |
水溫 | 主缸水溫監視與警報 |
補水桶水溫監視 | |
水溫線異常警報 | |
主缸過去一小時溫差過大警報 | |
主缸與補水桶間溫差警報 | |
pH | pH值多點校正 |
pH值監視與警報 | |
TDS | TDS值監視與警報 |
控制器 | 離線警報 |
情境 | 維護模式 |
設備控制 | 燈具依時間或實體按鍵開關 |
補水馬達低水位時自動停止 | |
沉水馬達低水位時自動停止 | |
沉水馬達在手動停止後依設定時間自動開啟 | |
加熱棒依水溫自動開關 | |
風扇依水溫或實體按鍵開關 | |
設備意外啟動或停止警報 | |
設備失效警報 | |
補水 | 手動補水 |
自動補水與停止自動補水 | |
可補水的溫差設定 | |
補水前的溫差與水位確認 | |
其他 | 漏水警報 |
整個系統架構如下
- 用了二個ESP32接上所有感應器,包含水溫、TDS、pH和水位的監測,其中ESP32 Main這顆還掛上了一個LCD擺在魚缸邊來顯示水溫、TDS和pH值。所有數據透過MQTT發送到MQTT broker上給後續的Home Assistant使用。可惜的是因無法解決的電源干擾問題,pH模組需要獨立接上另一顆ESP32,這樣讀值才會正確,不然其實應該只需要一顆ESP32就夠了。
- Home Assistant做為系統的核心,訂閱MQTT broker上的特定主題可以獲取感應器的讀值並將這些讀值依照需求改寫成sensor。
- Home Assistant根據這些sensor的資料做出對應的自動化,比如說傳送手機警報或是自動操作設備。
- Gosund WP12是一條可以連接Wi-Fi的延長線,是米家生態圈的一員,支援MIOT協議,在Home Assistant中可以經由XiaoMi MIOT整合接入,透過Home Assistant來操作延長器上設備。
ESP32與1602AA LCD的配置
特別講一下Gosund WP12這條延長線
- 接入Home Assistant中可以看到六個插座的開關實體(switch entity)、一個USB的總開關實體(包含二個type-A與一個type-C)、一個延長線總開關實體、一個LCD燈光實體與一個即時功耗的實體,可惜的是沒有提供各別插座的功耗。
- 原本這種設備就是外連到伺服器接收指令做動作,但接入Home Assistant後我習慣都會把它們關在防火牆內,但這條延長線在連接不到伺服器時會自己重啟,會變成短暫的「不可用」狀態,這對於自動化來講是有風險的。
在Home Assistant中,目前在lovelace中的介面長的像這樣。