第 1 章:入门
为什么要构建智能加热器控制器?
我最近开始使用Python、Docker和Terma MOA Blue加热器创建一个智能加热控制器 🎜>低功耗蓝牙 (BLE)。
问题
目前没有本地方式在家庭助理(HA)和我的加热器之间进行通信。
目标
我需要精确控制我的季节性租赁房产的加热器,以便:
- 优化能源消耗—防止客人在退房时将温度设置得太高或打开加热器。
- 远程管理设置—无需亲自访问房产即可避免昂贵的取暖费。
- 启用自动化—将来与 HA 集成,以实现更好的调度和监控。
第一章,我将引导您完成整个过程 - 从设置 Raspberry Pi 和 Docker 到编写用于直接蓝牙控制的 Python 脚本。
关于 Terma MOA 蓝色加热器
Terma MOA Blue 是一款支持蓝牙的加热元件,专为电散热器和毛巾加热器而设计。
主要特点:
- 多种模式:
- 手动(室温)
- 手册(加热元件温度)
- 时间表和计时器
- 温度控制:
- 支持
- 0.1°C 步长的精确调节。
- 低功耗蓝牙 (BLE):
- 允许通过移动应用程序或自定义集成进行远程控制。
Python/Docker 设置中来获得更大的灵活性。
特别感谢家庭助理社区
我要大力赞扬家庭助理社区,他们奠定了基础并分享了有关使用
BLE 连接这些加热器的见解。
他们的讨论有助于阐明蓝牙特性的结构,并启发了该项目中实施的许多技术。
项目概况
我们将介绍:
- 使用 Docker 设置 Raspberry Pi。
- 使用BLE编写Python脚本连接到加热器。
- 编码和解码温度数据和加热器模式。
- 将应用程序打包在Docker中以方便部署。
- 规划未来的功能,例如多加热器支持和自动化。
设置树莓派
我决定使用Raspberry Pi作为该项目的中央控制器。我的设置方法如下:
- Flash Raspberry Pi 操作系统: 下载并安装最新的 Raspberry Pi 操作系统映像。
- 启用 SSH 和 Wi-Fi: 在刷新期间配置 SSH 访问和 Wi-Fi 凭据以启用远程开发。
- 安装 Docker: Docker 使部署和测试变得更加容易。
命令:
sudo apt update sudo apt install -y docker.io sudo usermod -aG docker $USER
- 测试 Docker 安装:
docker --version docker run hello-world
这将验证 Docker 是否已安装并正常运行。
设置 Git 和远程访问
为了简化代码更新,我设置了 SSH 密钥 和 Git 以从我的电脑进行远程访问。
关键步骤:
- 生成 SSH 密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com"
- 将公钥添加到 GitHub。
- 克隆存储库:
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中文网其他相关文章!

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

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

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

列表sandnumpyArraysInpyThonHavedIfferentMemoryfootprints:listSaremoreFlexibleButlessMemory-效率,而alenumpyArraySareSareOptimizedFornumericalData.1)listsStorReereReereReereReereFerenceStoObjects,withoverHeadeBheadaroundAroundaroundaround64bytaround64bitson64-bitsysysysyssyssyssyssyssyssysssys2)

toensurepythonscriptsbehavecorrectlyacrycrossdevelvermations,登台和生产,USETHESTERTATE:1)Environment varriablesforsimplesettings,2)configurationFilesForefilesForcomPlexSetups,3)dynamiCofforAdaptapity.eachmethodofferSuniquebeneiquebeneiquebeneniqueBenefitsaniqueBenefitsandrefitsandRequiresandRequireSandRequireSca

Python列表切片的基本语法是list[start:stop:step]。1.start是包含的第一个元素索引,2.stop是排除的第一个元素索引,3.step决定元素之间的步长。切片不仅用于提取数据,还可以修改和反转列表。

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/删除,2)储存的二聚体和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

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


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3汉化版
中文版,非常好用

Dreamweaver CS6
视觉化网页开发工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

WebStorm Mac版
好用的JavaScript开发工具