第二章:用Python破解蓝牙控制
介绍
在第 1 章中,我们使用 Raspberry Pi、Docker 和 Docker 建立了控制 Terma MOA Blue 加热器的基础
Python。
- 现在是时候深入研究:
- BLE 的工作原理
- 以及我们如何使用它与加热器进行通信。 使用 bluetoothctl 调试蓝牙连接
- 。 编码和解码数据
- 用于温度和模式设置。 将所有内容整合在一起的 Python 脚本
低功耗蓝牙 (BLE) – 快速概述 Terma MOA Blue 加热器使用 低功耗蓝牙 (BLE) 进行通信。 BLE 设备公开GATT 特征,其作用类似于数据点,您可以从读取或
写入。
关键概念:- UUID:
- 标识特定数据点(例如温度或模式)的唯一 ID。 特性:
- BLE 属性保存实际数据。 描述符:
- 有关特征的附加元数据。 写入与读取操作:某些特性仅支持读取(例如当前温度),而其他特性则允许 写入
使用 bluetoothctl 调试蓝牙连接 在使用 Python 自动化该过程之前,我们使用
bluetoothctl进行手动测试和调试。
第 1 步:扫描设备bluetoothctl scan on
查找名为
“Terma Wireless”- 的设备。
- 确保加热器处于配对模式:按下并 按住温度按钮 5 秒钟
- 直到指示灯闪烁。这将激活配对模式。 识别最近的设备:具有RSSI 值最低(例如RSSI:-50)的设备可能是最近的加热器。较低(负值较大)的 RSSI 值表示信号较弱,因此请关注 最强信号
第 2 步:与加热器配对
pair <device_address> </device_address>
出现提示时,输入 PIN 码
123456.
第 3 步:信任和联系trust <device_address> connect <device_address> </device_address></device_address>
第 4 步:读取特征
bluetoothctl scan on
这会显示可用于读取和写入数据的UUID。
重要提示:
- 首先忘记其他设备:
- 如果加热器已与其他设备(例如手机应用程序)配对,您需要在继续之前与该设备取消配对。
加热器一次只能维持一个活跃配对。
-
失败后重新连接:
- 如果加热器连接成功但后来无法重新连接,请使用以下步骤:
pair <device_address> </device_address>
- 然后使用上述步骤重新配对。
-
Python 脚本需要初始连接:
- 第一个连接必须通过bluetoothctl手动建立。
- 配对后,Python 脚本将能够与加热器交互。
- 但是,如果您稍后将加热器与其他设备配对(断开连接),则需要在再次运行脚本之前从 Raspberry Pi 手动删除并重新连接 .
破解加热器的数据格式
温度编码
加热器将温度编码为两个字节(小端),0.1°C 精度。
示例:
trust <device_address> connect <device_address> </device_address></device_address>
Python 解码:
info <device_address> </device_address>
Python 编码:
remove <device_address> </device_address>
模式编码
操作模式存储为单字节,具体值:
- 0: 关闭
- 5:手册(室温)
- 6: 手册(加热元件温度)
- 33: 已验证的加热元件模式(十六进制:0x21)
Python 解码:
Hex: 012d → Decoded: 30.1°C
Python 编码:
def decode_temperature(data): current_temp = ((data[1] <hr> <h2> 主要经验教训 </h2> <ol> <li> <p><strong>蓝牙配对挑战:</strong> </p> <ul> <li>手动配对通常需要启用配对模式并重新输入 PIN。 </li> <li>信任设备对于避免断开连接至关重要。 </li> </ul> </li> <li> <p><strong>编码错误:</strong> </p> <ul> <li>最初尝试使用 <strong>256 缩放</strong> 而不是 <strong>255</strong> 进行温度编码。 </li> <li>纠正<strong>little-endian 0.1°C 缩放</strong>解决了解码错误。 </li> </ul> </li> <li> <p><strong>模式处理问题:</strong> </p> <ul> <li>BLE 模式没有详细记录,我们必须对这些值进行逆向工程。 </li> <li>测试已确认<strong>33 (0x21)</strong>适用于<strong>手动加热元件温度</strong>模式。 </li> </ul> </li> </ol> <hr> <h2> 接下来是什么? </h2> <p>在下一章中,我将:</p>
- 扩展脚本以支持多个加热器。
- 引入Docker集成以更轻松地部署。
- 开始与家庭助理探索自动化设置。
反馈和建议?
查看 GitHub 存储库:
? GitHub - ha-hudsonread-heater-control
请在下面的评论中告诉我您的想法和建议!
以上是使用 Python、Docker 和蓝牙构建智能加热器控制器 #2的详细内容。更多信息请关注PHP中文网其他相关文章!

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

Python3.6环境下加载Pickle文件报错:ModuleNotFoundError:Nomodulenamed...

如何解决jieba分词在景区评论分析中的问题?当我们在进行景区评论分析时,往往会使用jieba分词工具来处理文�...

如何使用正则表达式匹配到第一个闭合标签就停止?在处理HTML或其他标记语言时,常常需要使用正则表达式来�...


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

禅工作室 13.0.1
功能强大的PHP集成开发环境

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

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),