찾다
백엔드 개발파이썬 튜토리얼Python, Docker 및 Bluetooth를 사용하여 스마트 히터 컨트롤러 구축 #2

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

2장: Python을 사용하여 Bluetooth 제어 크래킹

소개

1장에서는 Raspberry Pi, Docker를 이용하여 Terma MOA Blue 히터를 제어할 수 있는 기반을 마련하고, 파이썬.

이제 더 자세히 알아볼 시간입니다.

  • BLE의 작동 방식 및 이를 사용하여 히터와 통신하는 방법
  • bluetoothctl을 사용하여 블루투스 연결 디버깅.
  • 온도 및 모드 설정을 위한 데이터 인코딩 및 디코딩
  • 모든 것을 하나로 묶어주는 Python 스크립트

저전력 블루투스(BLE) – 간략한 개요

테르마 MOA 블루 히터는 저전력 블루투스(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를 표시합니다.

중요 사항:

  1. 다른 장치를 먼저 잊어버리세요:
  2. 히터가 다른 기기(예: 전화 앱)와 이미 페어링된 경우 계속하기 전에 해당 기기에서 페어링을 해제해야 합니다.
  3. 히터는 한 번에 하나의 활성 페어링만 유지할 수 있습니다.

  4. 실패 후 재연결:

    • 히터가 성공적으로 연결되었지만 나중에 다시 연결하지 못한 경우 다음 단계를 따르세요.
    pair <device_address>
    </device_address>
  • 그런 다음 위의 단계에 따라 다시 페어링하세요.
  1. Python 스크립트를 사용하려면 초기 연결이 필요합니다:
    • 첫 번째 연결은 bluetoothctl을 통해 수동으로 설정해야 합니다.
    • 페어링되면 Python 스크립트가 히터와 상호 작용할 수 있습니다.
    • 그러나 나중에 히터를 다른 장치와 페어링하는 경우(연결이 끊어짐) 스크립트를 다시 실행하기 전에 Raspberry Pi에서 수동으로 제거하고 다시 연결해야 합니다. .

히터의 데이터 형식 크래킹

온도 인코딩

히터는 0.1°C 정밀도를 사용하여 온도를 2바이트(리틀 엔디안)로 인코딩합니다.

예:

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: 검증된 발열체 모드(16진수: 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>255</strong> 대신 <strong>256 스케일링</strong>을 사용했습니다.
</li>
<li>
<strong>리틀 엔디안 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 및 Bluetooth를 사용하여 스마트 히터 컨트롤러 구축 #2의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
파이썬 : 게임, Guis 등파이썬 : 게임, Guis 등Apr 13, 2025 am 12:14 AM

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python vs. C : 응용 및 사용 사례가 비교되었습니다Python vs. C : 응용 및 사용 사례가 비교되었습니다Apr 12, 2025 am 12:01 AM

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간의 파이썬 계획 : 현실적인 접근2 시간의 파이썬 계획 : 현실적인 접근Apr 11, 2025 am 12:04 AM

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

파이썬 : 기본 응용 프로그램 탐색파이썬 : 기본 응용 프로그램 탐색Apr 10, 2025 am 09:41 AM

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 ​​같은 작업에 적합합니다.

2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?Apr 09, 2025 pm 04:33 PM

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까?Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까?Apr 02, 2025 am 07:12 AM

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기