作者:陶德坤,EMQX Cloud 開發者。
作為後端開發人員,我經常需要同時執行多個 JetBrains IDE(整合開發環境),因此我經常面臨膝上型電腦過熱的問題。 我嘗試了各種冷卻方法,從傳統的風扇到更先進的半導體冷卻系統,但它們都引入了噪音和功耗等新問題。
因此,我設計了乙個智慧型水冷解決方案:通過引入外部水冷系統,利用微控制器 ESP32、MQTT 伺服器 EMQX Cloud Serverless 和容器化部署平台 FlyIO實時監測和控制水溫。 以下是該解決方案的詳細說明,我們希望該解決方案能夠激勵其他物聯網開發人員:
作者 DIY IoT 智慧型液體冷卻系統。
技術選型
我希望該系統不僅功能強大,而且可靠高效,以確保水溫監測系統的穩定執行。 以下是我選擇的技術堆疊:
esp32:在眾多選項中,ESP32 微控制器因其整合的 Wi-Fi 和藍芽功能而因其高價效比而脫穎而出。 該晶元以可控的成本為物聯網專案提供強大的效能支援,而不會犧牲功能。
DS18B20水溫感測器:對於溫度監測,DS18B20是我的首選,因為它提供了準確的數字溫度讀數和出色的防水性。 感測器與 ESP32 協同工作,確保水溫監測系統的準確性和穩定性。
emqx cloud serverless mqtt broker:在眾多訊息中介軟體中,EMQX Cloud 因其高效能、可靠性以及 Serverless MQTT 服務處理大量併發連線和訊息路由的能力而受到青睞,這對於確保裝置之間的順暢通訊至關重要。
Python 和 Flask:之所以選擇 Python,是因為它具有表現力和豐富的庫功能,而 Flask 輕量級且高度靈活,足以適應快速開發和部署,這對於快速原型設計至關重要。
fly.io:fly.IO 的全球分布式邊緣託管服務為將容器轉換為微型虛擬機器提供了乙個獨特的平台。 這不僅加快了應用程式的部署速度,還大大減少了資料傳輸的延遲,為使用者提供了近乎實時的體驗。
專案實施
專案的實施階段是將想法轉化為實際解決方案的過程。 在這個過程中,第一步是保證 EMQX Cloud Serverless 的正確配置,然後是硬體的整合,後端服務的開發,最後是系統的部署和測試。
Serverless MQTT 伺服器配置
EMQX Cloud Serverless 提供免費配額,完全覆蓋我們用例所需的成本,這也是我選擇 EMQX Cloud Serverless 部署的主要原因之一。 此外,它預設支援傳輸層安全性(TLS),為我們的資料傳輸提供了強大的加密保障,確保了資料在傳輸過程中的機密性、完整性和身份驗證,降低了資料洩露或篡改的風險。
以下是配置 EMQX Cloud Serverless 的步驟:
建立無伺服器 MQTT 代理:
登入 EMQX Cloud 控制台,導航到"create deployment"頁。
選擇"serverless"部署型別,並根據需要配置部署。 例如,區域、支出限制等。
完成配置後,點選"create"按鈕自動建立無伺服器 MQTT 伺服器。
新增身份驗證資訊:
MQTT 伺服器建立成功後,配置認證資訊,確保只有授權客戶端才能連線到伺服器。
MQTTX連線測試:
*並安裝 MQTTX 客戶端(MQTTX:乙個功能齊全的 MQTT 客戶端工具),然後使用之前配置的身份驗證資訊測試與 MQTT 伺服器的連線,以確保一切正常。
通過以上步驟,我成功配置了 EMQX Cloud Serverless MQTT Broker,為我們的專案提供了乙個安全、可靠、高價效比的訊息中介軟體。 它不僅簡化了物聯網基礎設施的管理和擴充套件,而且還通過確保資料的安全傳輸和 TLS 支援,為專案提供了良好的基礎。
硬體整合
在專案中,我們使用 ESP32 微控制器和DS18B20水溫感測器來監控水溫並將資料傳送到雲端。 通過這種整合,我們實現了乙個可以實時、高效、安全地監測和傳輸水溫資料的系統,同時提供對水冷系統的智慧型監控。
Wi-Fi 連線配置:首先,ESP32 配置為通過 Wi-Fi 連線到網際網絡。 這是通過在 ** 中設定 Wi-Fi 的 SSID 和密碼來完成的。
感測器初始化:我們通過 GPIO 32 將DS18B20水溫感測器連線到 ESP25,並在 ** 中初始化感測器以設定溫度讀數的解像度。
安全MQTT通訊:使用 MQTT 協議,通過 EMQX Cloud Serverless 安全地傳輸資料。 我們配置了MQTT伺服器的詳細資訊,並使用SSL TLS加密來保護資料傳輸。
溫度資料讀取和傳送:系統每分鐘讀取一次水溫,將讀數格式化為JSON,並通過MQTT協議發布到雲端。
使用 Python 和 Flask 開發後端服務
在這個專案中,我們使用 Python 和 Flask 構建了乙個後端服務,用於處理來自 ESP32 的溫度資料並將其顯示在網頁上。 整個後端旨在高效處理資料,提供實時反饋,並且易於維護。 通過這種方式,我們構建了乙個後端服務,既可以實時處理來自物聯網裝置的資料,又可以提供使用者友好的介面。 這不僅加強了專案的實用性,也為今後的擴充套件和優化提供了良好的基礎。
配置和 MQTT 整合:我們的 Flask 應用程式配置了 MQTT 設定,並使用 Flask MQTT 庫直接與 MQTT 通訊。 當收到來自 EMQX ESP32 Telemetry 主題的訊息時,後端會通過特定的功能對資料進行處理和儲存。
資料庫管理:使用 SQLite 資料庫儲存溫度資料,通過 Flask 的應用程式上下文管理資料庫連線,並確保安全儲存和訪問資料。
Web 介面和 API:後端提供簡單的 Web 介面和 API 端點。 主頁鏈結到顯示溫度圖的頁面,而資料 API 終結點返回最近一段時間的溫度資料。
系統部署
專案的部署階段至關重要,我們通過 docker 和 fly 來做到這一點IO 的配置將 Flask 應用程式容器化,並在 Fly 上託管它io。此過程不僅可以在雲中部署 Flask 應用程式,還可以確保快速、安全、高效地交付服務。 帶蒼蠅借助 IO 平台,應用程式可以根據需要輕鬆擴充套件,並享受穩定的執行環境。
Docker 容器化首先,讓我們使用 Python 3 編寫乙個 Dockerfile8 作為基礎映像,並將應用**複製到容器的應用工作目錄。 然後,通過 pip 安裝必要的依賴,例如 flask 和 flask-mqtt,並公開埠 8080。 cmd [ 在容器啟動時自動執行"python", "app.py"] 執行 Flask 應用。
fly.io配置:在飛行中在 toml 檔案中,我們定義了應用程式的執行方式,包括應用程式名稱、主要部署區域(例如新加坡)、構建和掛載點設定。
掛載點:設定掛載點儲存資料庫檔案,保證容器重新部署時資料的永續性。
HTTP 服務配置:將內部埠設定為 8080,強制執行 https、啟動和停止策略,並設定最小執行的機器數量。
健康檢查:您可以通過定期訪問ping路由來檢查應用的執行狀態,以保證服務的穩定性。
部署應用
創造fly.io應用:通過 fly 使用 flyctl apps create 命令IO 的 CLI 工具,用於建立新應用。
部署應用:在 fly 中執行 flyctl deploy 命令在 IO 上自動構建和部署 Docker 容器映像。
驗證部署:部署完成後,訪問 flyIO 提供的應用程式的 URL,用於驗證 Flask 應用程式是否成功執行。
專案成果:
實時溫度監測系統
利用 ESP32 微控制器和 DS18B20 水溫感測器的強大功能,我們設計並實現了乙個可以實時監控和調節水冷系統溫度的系統。 現在,我的膝上型電腦不再因高溫而過熱,它能夠可靠地執行,我可以隨時享受平靜舒適的工作環境,無論是在咖啡館的露台上還是在家裡的辦公桌上。
穩定的資料傳輸
通過 EMQX Cloud Serverless,我們實現了從 ESP32 到雲端的資料傳輸的安全性和可靠性。 EMQX Cloud Serverless 是一款高效能的 MQTT **,具有低延遲,用於溫度資料的實時攝取和處理。 這確保了系統快速反應並保持高效執行。
功能豐富的 Web 介面
Python 和 Flask 的強大組合為我們提供了乙個乾淨直觀的 Web 介面,允許使用者輕鬆檢視實時溫度資料和歷史溫度曲線。 這不僅改善了使用者體驗,而且使溫度監控更加直觀且易於管理。
全球分布式雲部署
帶蒼蠅作為 IO 的全球分布式服務,我們的 Flask 應用程式在雲中高效執行。 這種部署方式不僅保證了應用的高可用性和穩定性,而且大大降低了資料傳輸的延遲,為使用者提供了近乎實時的體驗。
總結與展望
從最初的膝上型電腦過熱問題到實時水溫監測系統的構建,這個專案充分展示了現代物聯網技術如何幫助我們解決生活中的實際問題。
通過整合 ESP32、DS18B20水溫感測器、EMQX Cloud Serverless MQTT 伺服器、Python、Flask 和 FlyIO雲平台,我們成功開發出乙個既實用又高效的系統。 這個系統不僅提高了我的工作效率,還為類似的問題提供了創新的解決方案。
對這個專案感興趣或想深入了解技術細節的讀者可以在 GitHub 上的 EMQX MQTT 客戶端示例中找到完整和更多的實現細節。 這個資源庫不僅是學習和實踐的寶庫,還可以激發您對物聯網和雲計算的新想法和創造力。