Heim Backend-Entwicklung Python-Tutorial Erstellen einer intelligenten Heizungssteuerung mit Python, Docker und Bluetooth #2

Erstellen einer intelligenten Heizungssteuerung mit Python, Docker und Bluetooth #2

Dec 30, 2024 pm 03:26 PM

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

Kapitel 2: Bluetooth-Steuerung mit Python knacken

Einführung

In Kapitel 1 legen wir die Grundlage für die Steuerung von Terma MOA Blue-Heizgeräten mit einem Raspberry Pi, Docker und Python.

Jetzt ist es an der Zeit, tiefer einzutauchen:

  • Wie BLE funktioniert und wie wir es zur Kommunikation mit den Heizgeräten genutzt haben.
  • Debuggen von Bluetooth-Verbindungen mit bluetoothctl.
  • Daten kodieren und dekodieren für Temperatur- und Moduseinstellungen.
  • Das Python-Skript, das alles zusammenbringt.

Bluetooth Low Energy (BLE) – Kurzübersicht

Die Terma MOA Blue-Heizgeräte nutzen Bluetooth Low Energy (BLE) für die Kommunikation. BLE-Geräte stellen GATT-Merkmale bereit, die sich wie Datenpunkte verhalten, die Sie auslesen oder beschreiben können.

Schlüsselkonzepte:

  • UUIDs: Eindeutige IDs, die bestimmte Datenpunkte wie Temperatur oder Modus identifizieren.
  • Eigenschaften: BLE-Eigenschaften, die die tatsächlichen Daten enthalten.
  • Deskriptoren: Zusätzliche Metadaten zu Merkmalen.
  • Schreib- vs. Lesevorgänge: Einige Merkmale unterstützen nur Lesevorgänge (z. B. aktuelle Temperatur), während andere Schreibvorgänge zulassen (z. B. Einstellen der Temperatur).

Debuggen von Bluetooth-Verbindungen mit Bluetoothctl

Bevor wir den Prozess mit Python automatisierten, verwendeten wir bluetoothctl für manuelles Testen und Debuggen.

Schritt 1: Nach Geräten suchen

bluetoothctl
scan on
Nach dem Login kopieren
Nach dem Login kopieren

Suchen Sie nach Geräten mit dem Namen „Terma Wireless“.

  • Stellen Sie sicher, dass sich das Heizgerät im Kopplungsmodus befindet:Drücken Sie die Temperaturtaste und halten Sie sie 5 Sekunden lang gedrückt bis das Licht blinkt. Dadurch wird der Pairing-Modus aktiviert.
  • Identifizieren Sie das nächstgelegene Gerät: Das Gerät mit dem niedrigsten RSSI-Wert (z. B. RSSI: -50) ist wahrscheinlich die nächste Heizung. Niedrigere (negativere) RSSI-Werte weisen auf schwächere Signale hin. Konzentrieren Sie sich daher auf das stärkste Signal.

Schritt 2: Mit der Heizung koppeln

pair <DEVICE_ADDRESS>
Nach dem Login kopieren
Nach dem Login kopieren

Geben Sie bei Aufforderung den PIN-Code 123456 ein.

Schritt 3: Vertrauen und verbinden

trust <DEVICE_ADDRESS>
connect <DEVICE_ADDRESS>
Nach dem Login kopieren
Nach dem Login kopieren

Schritt 4: Merkmale lesen

Sobald die Verbindung hergestellt ist, verwenden Sie:

bluetoothctl
scan on
Nach dem Login kopieren
Nach dem Login kopieren

Hier werden die verfügbaren UUIDs zum Lesen und Schreiben von Daten angezeigt.

Wichtige Hinweise:

  1. Vergessen Sie zuerst andere Geräte:
  2. Wenn das Heizgerät bereits mit einem anderen Gerät (z. B. einer Telefon-App) gekoppelt ist, müssen Sie es von diesem Gerät entkoppeln, bevor Sie fortfahren können.
  3. Heizungen können jeweils nur eine aktive Kopplung aufrechterhalten.

  4. Wiederverbindung nach Fehlern:

    • Wenn die Heizung erfolgreich angeschlossen wurde, die Verbindung später jedoch nicht wiederhergestellt werden konnte, führen Sie die folgenden Schritte aus:
    pair <DEVICE_ADDRESS>
    
    Nach dem Login kopieren
    Nach dem Login kopieren
  • Dann erneutes Koppeln mit den oben genannten Schritten.
  1. Für Python-Skript ist eine erste Verbindung erforderlich:
    • Die erste Verbindung muss manuell über Bluetoothctl hergestellt werden.
    • Nach der Kopplung kann das Python-Skript mit der Heizung interagieren.
    • Wenn Sie das Heizgerät jedoch später mit einem anderen Gerät koppeln (die Verbindung unterbrechen), müssen Sie es manuell vom Raspberry Pi entfernen und erneut verbinden, bevor Sie das Skript erneut ausführen .

Das Datenformat des Heizgeräts knacken

Temperaturkodierung

Die Heizungen kodieren Temperaturen als zwei Bytes (Little-Endian) mit einer 0,1°C-Genauigkeit.

Beispiel:

trust <DEVICE_ADDRESS>
connect <DEVICE_ADDRESS>
Nach dem Login kopieren
Nach dem Login kopieren

Python-Dekodierung:

info <DEVICE_ADDRESS>
Nach dem Login kopieren

Python-Codierung:

 remove <DEVICE_ADDRESS>
Nach dem Login kopieren

Moduskodierung

Betriebsmodi werden als einzelne Bytes mit bestimmten Werten gespeichert:

  • 0: Aus
  • 5: Manuell (Raumtemperatur)
  • 6: Manuell (Heizelementtemperatur)
  • 33: Verifizierter Heizelementmodus (Hex: 0x21)

Python-Dekodierung:

Hex: 012d → Decoded: 30.1°C
Nach dem Login kopieren

Python-Codierung:

def decode_temperature(data):
    current_temp = ((data[1] << 8) | data[0]) / 10
    target_temp = ((data[3] << 8) | data[2]) / 10
    return round(current_temp, 1), round(target_temp, 1)
Nach dem Login kopieren

Wichtige Erkenntnisse

  1. Herausforderungen beim Bluetooth-Pairing:

    • Manuelles Pairing erfordert oft die Aktivierung des Pairing-Modus und die erneute Eingabe der PIN.
    • Das Vertrauen in das Gerät war von entscheidender Bedeutung, um Verbindungsabbrüche zu vermeiden.
  2. Kodierungsfehler:

    • Erste Versuche verwendeten 256-Skalierung anstelle von 255 für die Temperaturkodierung.
    • Durch die Korrektur der Little-Endian-0,1°C-Skalierung wurden Decodierungsfehler behoben.
  3. Probleme bei der Modushandhabung:

    • BLE-Modi waren nicht gut dokumentiert und wir mussten die Werte rückentwickeln.
    • Test bestätigt 33 (0x21) funktionierte im Modus Manuelle Heizelementtemperatur.

Was kommt als nächstes?

Im nächsten Kapitel werde ich:

  • Erweitern Sie das Skript, um mehrere Heizungen zu unterstützen.
  • Führen Sie die Docker-Integration für eine einfachere Bereitstellung ein.
  • Erkunden Sie Automatisierungseinstellungen mit Home Assistant.

Feedback und Vorschläge?

Sehen Sie sich das GitHub-Repo an:

? GitHub – ha-hudsonread-heater-control

Teilen Sie mir Ihre Gedanken und Vorschläge in den Kommentaren unten mit!

Das obige ist der detaillierte Inhalt vonErstellen einer intelligenten Heizungssteuerung mit Python, Docker und Bluetooth #2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1670
14
PHP-Tutorial
1276
29
C#-Tutorial
1256
24
Python vs. C: Lernkurven und Benutzerfreundlichkeit Python vs. C: Lernkurven und Benutzerfreundlichkeit Apr 19, 2025 am 12:20 AM

Python ist leichter zu lernen und zu verwenden, während C leistungsfähiger, aber komplexer ist. 1. Python -Syntax ist prägnant und für Anfänger geeignet. Durch die dynamische Tippen und die automatische Speicherverwaltung können Sie die Verwendung einfach zu verwenden, kann jedoch zur Laufzeitfehler führen. 2.C bietet Steuerung und erweiterte Funktionen auf niedrigem Niveau, geeignet für Hochleistungsanwendungen, hat jedoch einen hohen Lernschwellenwert und erfordert manuellem Speicher und Typensicherheitsmanagement.

Python und Zeit: Machen Sie das Beste aus Ihrer Studienzeit Python und Zeit: Machen Sie das Beste aus Ihrer Studienzeit Apr 14, 2025 am 12:02 AM

Um die Effizienz des Lernens von Python in einer begrenzten Zeit zu maximieren, können Sie Pythons DateTime-, Zeit- und Zeitplanmodule verwenden. 1. Das DateTime -Modul wird verwendet, um die Lernzeit aufzuzeichnen und zu planen. 2. Das Zeitmodul hilft, die Studie zu setzen und Zeit zu ruhen. 3. Das Zeitplanmodul arrangiert automatisch wöchentliche Lernaufgaben.

Python vs. C: Erforschung von Leistung und Effizienz erforschen Python vs. C: Erforschung von Leistung und Effizienz erforschen Apr 18, 2025 am 12:20 AM

Python ist in der Entwicklungseffizienz besser als C, aber C ist in der Ausführungsleistung höher. 1. Pythons prägnante Syntax und reiche Bibliotheken verbessern die Entwicklungseffizienz. 2. Die Kompilierungsmerkmale von Compilation und die Hardwarekontrolle verbessern die Ausführungsleistung. Bei einer Auswahl müssen Sie die Entwicklungsgeschwindigkeit und die Ausführungseffizienz basierend auf den Projektanforderungen abwägen.

Python lernen: Ist 2 Stunden tägliches Studium ausreichend? Python lernen: Ist 2 Stunden tägliches Studium ausreichend? Apr 18, 2025 am 12:22 AM

Ist es genug, um Python für zwei Stunden am Tag zu lernen? Es hängt von Ihren Zielen und Lernmethoden ab. 1) Entwickeln Sie einen klaren Lernplan, 2) Wählen Sie geeignete Lernressourcen und -methoden aus, 3) praktizieren und prüfen und konsolidieren Sie praktische Praxis und Überprüfung und konsolidieren Sie und Sie können die Grundkenntnisse und die erweiterten Funktionen von Python während dieser Zeit nach und nach beherrschen.

Python vs. C: Verständnis der wichtigsten Unterschiede Python vs. C: Verständnis der wichtigsten Unterschiede Apr 21, 2025 am 12:18 AM

Python und C haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1) Python ist aufgrund seiner prägnanten Syntax und der dynamischen Typisierung für die schnelle Entwicklung und Datenverarbeitung geeignet. 2) C ist aufgrund seiner statischen Tipp- und manuellen Speicherverwaltung für hohe Leistung und Systemprogrammierung geeignet.

Welches ist Teil der Python Standard Library: Listen oder Arrays? Welches ist Teil der Python Standard Library: Listen oder Arrays? Apr 27, 2025 am 12:03 AM

PythonlistsarePartThestandardlibrary, whilearraysarenot.listarebuilt-in, vielseitig und UNDUSEDFORSPORINGECollections, während dieArrayRay-thearrayModulei und loses und loses und losesaluseduetolimitedFunctionality.

Python: Automatisierung, Skript- und Aufgabenverwaltung Python: Automatisierung, Skript- und Aufgabenverwaltung Apr 16, 2025 am 12:14 AM

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

Python für die Webentwicklung: Schlüsselanwendungen Python für die Webentwicklung: Schlüsselanwendungen Apr 18, 2025 am 12:20 AM

Zu den wichtigsten Anwendungen von Python in der Webentwicklung gehören die Verwendung von Django- und Flask -Frameworks, API -Entwicklung, Datenanalyse und Visualisierung, maschinelles Lernen und KI sowie Leistungsoptimierung. 1. Django und Flask Framework: Django eignet sich für die schnelle Entwicklung komplexer Anwendungen, und Flask eignet sich für kleine oder hochmobile Projekte. 2. API -Entwicklung: Verwenden Sie Flask oder Djangorestframework, um RESTFUFFUPI zu erstellen. 3. Datenanalyse und Visualisierung: Verwenden Sie Python, um Daten zu verarbeiten und über die Webschnittstelle anzuzeigen. 4. Maschinelles Lernen und KI: Python wird verwendet, um intelligente Webanwendungen zu erstellen. 5. Leistungsoptimierung: optimiert durch asynchrones Programmieren, Caching und Code

See all articles