搜尋
首頁後端開發Python教學使用 Python、Docker 和藍牙建立智慧加熱器控制器 #1

Building a Smart Heater Controller with Python, Docker, and Bluetooth #1

第 1 章:入門

為什麼要建構智慧加熱器控制器?

我最近開始使用PythonDocker和Terma MOA Blue加熱器建立一個智慧型加熱控制器 🎜>低功耗藍牙(BLE)

問題

目前

沒有本地方式家庭助理(HA)和我的加熱器之間進行通訊。

目標

我需要精確控制我的

季節性租賃房產的加熱器,以便:

  • 最佳化能源消耗—防止客人退房時將溫度設定得太高或開啟加熱器。
  • 遠端管理設定—無需親自造訪房產即可避免昂貴的暖氣費。
  • 啟用自動化—將來與 HA 集成,以實現更好的調度和監控。
這篇文章是系列文章的

第一章,我將引導您完成整個過程 - 從設定 Raspberry Pi 和 Docker 到編寫用於直接藍牙控制的 Python 腳本。


關於 Terma MOA 藍色加熱器

Terma MOA Blue 是一款支援藍牙的加熱元件,專為電散熱器和毛巾加熱器而設計。

主要特點:

  • 多種模式:
    • 手動(室溫)
    • 手冊(加熱元件溫度)
    • 時間表和計時器
  • 溫度控制:
      支援
    • 0.1°C 步長的精確調節。
  • 低功耗藍牙 (BLE):
      允許透過行動應用程式或自訂整合進行遠端控制。
雖然這些加熱器與製造商的行動應用程式無縫協作,但我希望透過將它們直接整合到自訂

Python/Docker 設定中來獲得更大的靈活性。


特別感謝家庭助理社區

我要大力讚揚家庭助理社區,他們奠定了基礎並分享了有關使用

BLE 連接這些加熱器的見解。

他們的討論有助於闡明

藍牙特性的結構,並啟發了該專案中實施的許多技術。


項目概況

我們將介紹:

  1. 使用 Docker 設定 Raspberry Pi
  2. 使用BLE編寫Python腳本連接到加熱器。
  3. 編碼和解碼溫度資料和加熱器模式。
  4. 將應用程式打包在Docker中以方便部署。
  5. 規劃未來的功能,例如多加熱器支援自動化

設定樹莓派

我決定使用Raspberry Pi作為該專案的中央控制器。我的設定方法如下:

  1. Flash Raspberry Pi 作業系統: 下載並安裝最新的 Raspberry Pi 作業系統映像。
  2. 啟用 SSH 和 Wi-Fi: 在刷新期間設定 SSH 存取和 Wi-Fi 憑證以啟用遠端開發。
  3. 安裝 Docker: Docker 讓部署和測試變得更加容易。

指令:

sudo apt update
sudo apt install -y docker.io
sudo usermod -aG docker $USER
  1. 測試 Docker 安裝:
docker --version
docker run hello-world

這將驗證 Docker 是否已安裝並正常運作。


設定 Git 和遠端存取

為了簡化程式碼更新,我設定了 SSH 金鑰Git 以從我的電腦進行遠端存取。

關鍵步驟:

  1. 產生 SSH 金鑰對:
ssh-keygen -t ed25519 -C "your_email@example.com"
  1. 將公鑰加入 GitHub。
  2. 克隆儲存庫:
git clone git@github.com:<username>/<repo>.git
</repo></username>

儲存庫連結

您可以在我的GitHub 儲存庫中查看完整的原始程式碼:

? GitHub - ha-hudsonread-heater-control

隨意分叉它、提出改進建議或報告任何問題!


透過藍牙控制加熱器

Terma MOA Blue 加熱器透過 低功耗藍牙 (BLE) 進行通信,因此我使用 Python 中的 Bleak 庫 來處理連接。

迄今為止實現的主要功能:

  • 讀寫溫度:使用基於UUID的特徵。
  • 模式控制:關閉手動(室溫)手動(加熱元件溫度)之間切換。
  • 動態更新:控制溫度而不影響模式。

目前狀態和後續步驟

現在,控制器可以:

  • 連接到加熱器。
  • 讀取目前溫度目標溫度
  • 獨立切換模式調節溫度

後續步驟:

  • 增加對多個加熱器的支援。
  • 透過與家庭助理或類似平台整合啟用自動化

跟隨

請繼續關注第 2 章,我將深入研究 Python 代碼,解釋 BLE 編碼和解碼的工作原理,並分享調試藍牙連接的見解。

我們還將為有興趣深入了解 BLE 調試的任何人介紹使用 bluetoothctl手動配對和連接命令

別忘了 ⭐️ GitHub 儲存庫,並在評論中告訴我您接下來希望看到添加哪些功能!

以上是使用 Python、Docker 和藍牙建立智慧加熱器控制器 #1的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
您如何切成python列表?您如何切成python列表?May 02, 2025 am 12:14 AM

SlicingaPythonlistisdoneusingthesyntaxlist[start:stop:step].Here'showitworks:1)Startistheindexofthefirstelementtoinclude.2)Stopistheindexofthefirstelementtoexclude.3)Stepistheincrementbetweenelements.It'susefulforextractingportionsoflistsandcanuseneg

在Numpy陣列上可以執行哪些常見操作?在Numpy陣列上可以執行哪些常見操作?May 02, 2025 am 12:09 AM

numpyallowsforvariousoperationsonArrays:1)basicarithmeticlikeaddition,減法,乘法和division; 2)evationAperationssuchasmatrixmultiplication; 3)element-wiseOperations wiseOperationswithOutexpliitloops; 4)

Python的數據分析中如何使用陣列?Python的數據分析中如何使用陣列?May 02, 2025 am 12:09 AM

Arresinpython,尤其是Throughnumpyandpandas,weessentialFordataAnalysis,offeringSpeedAndeffied.1)NumpyArseNable efflaysenable efficefliceHandlingAtaSetSetSetSetSetSetSetSetSetSetSetsetSetSetSetSetsopplexoperationslikemovingaverages.2)

列表的內存足跡與python數組的內存足跡相比如何?列表的內存足跡與python數組的內存足跡相比如何?May 02, 2025 am 12:08 AM

列表sandnumpyArraysInpythonHavedIfferentMemoryfootprints:listSaremoreFlexibleButlessMemory-效率,而alenumpyArraySareSareOptimizedFornumericalData.1)listsStorReereReereReereReereFerenceStoObjects,with withOverHeadeBheadaroundAroundaround64byty64-bitsysysysysysysysysyssyssyssyssysssyssys2)

部署可執行的Python腳本時,如何處理特定環境的配置?部署可執行的Python腳本時,如何處理特定環境的配置?May 02, 2025 am 12:07 AM

toensurepythonscriptsbehavecorrectlyacrycrosdevelvermations,分期和生產,USETHESTERTATE:1)Environment varriablesForsimplesettings,2)configurationfilesfilesForcomPlexSetups,3)dynamiCofforComplexSetups,dynamiqualloadingForaptaptibality.eachmethodoffersuniquebeneiquebeneqeniquebenefitsandrefitsandrequiresandrequiresandrequiresca

您如何切成python陣列?您如何切成python陣列?May 01, 2025 am 12:18 AM

Python列表切片的基本語法是list[start:stop:step]。 1.start是包含的第一個元素索引,2.stop是排除的第一個元素索引,3.step決定元素之間的步長。切片不僅用於提取數據,還可以修改和反轉列表。

在什麼情況下,列表的表現比數組表現更好?在什麼情況下,列表的表現比數組表現更好?May 01, 2025 am 12:06 AM

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/刪除,2)儲存的二聚體和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

如何將Python數組轉換為Python列表?如何將Python數組轉換為Python列表?May 01, 2025 am 12:05 AM

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,請考慮performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),