第二章:用Python破解藍牙控制
介紹
在第1 章中,我們使用Raspberry Pi、Docker 和Docker 建立了控制Terma MOA BlueTer 加熱器的基礎
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中文網其他相關文章!

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

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分詞工具來處理文�...


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

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

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具