Bluetooth-Low-Energy-Temperatur- und Luftfeuchtigkeitslogger Govee H5074, H5075, H5100, H5101, H5104, H5105, H5174, H5177 und H5179 sowie intelligente Fleischthermometer Govee H5181, H5182 und H5183
Jedes dieser Geräte kostet derzeit bei Amazon weniger als 15 US-Dollar und nutzt BLE für die Kommunikation. Sie müssen also kein Herstellerkonto einrichten, um die Daten zu verfolgen.
GoveeBTTempLogger wurde ursprünglich mit Microsoft Visual Studio 2017 erstellt und war auf einen ARM-Prozessor unter Linux ausgerichtet. Ich verwende einen Raspberry Pi 4 als meinen Linux-Host. Ich habe überprüft, dass derselbe Code auf einem Raspberry Pi ZeroW, Raspberry Pi Zero2W, Raspberry Pi 3b und einem Raspberry Pi 5 funktioniert.
GoveeBTTempLogger erstellt eine Protokolldatei, sofern mit der Option -l oder --log angegeben, für jedes der Geräte, von denen es gesendete Daten empfängt, und verwendet dabei ein einfaches tabulatorgetrenntes Format, das mit dem Laden in Microsoft Excel kompatibel ist. Jede Zeile in der Protokolldatei enthält Datum (aufgezeichnet in UTC), Temperatur, relative Luftfeuchtigkeit und Batterieprozentsatz. Das Benennungsformat der Protokolldatei umfasst den eindeutigen Govee-Gerätenamen, das aktuelle Jahr und den aktuellen Monat. Monatlich wird eine neue Protokolldatei erstellt.
Option --index hinzugefügt, um eine HTML-Indexdatei basierend auf den vorhandenen Protokolldateien zu erstellen. Diese Option erstellt eine Indexdatei und wird beendet, ohne dass der Bluetooth-Code ausgeführt wird. Es kann ausgeführt werden, ohne eine laufende Instanz des Programms zu beeinträchtigen, das Bluetooth-Werbung abhört. Beispielbefehl zum Erstellen eines Index:
sudo /usr/local/bin/goveebttemplogger --log /var/log/goveebttemplogger/ --index index.html
Konvertierung zu Bluetooth mit BlueZ über DBus! DBus ist die zugelassene Methode der Bluetooth-Kommunikation. Es scheint mehr CPU zu verbrauchen als der reine HCI-Code. Als ich versuchte, dies auf einem Computer zu erstellen, auf dem Raspbian GNU/Linux 10 (Buster) läuft, baute das System auf, aber die BlueZ DBus-Routinen zum Auffinden des Bluetooth-Adapters schlugen fehl. Aus diesem Grund habe ich die alten HCI-Befehle im Code belassen und auf die Ausführung von HCI zurückgegriffen, wenn DBus ausfällt.
Ich habe eine Option --HCI hinzugefügt, damit der Benutzer die Ausführung der HCI-Befehle erzwingen kann, anstatt die DBus-Schnittstelle zu verwenden.
Beim Ausführen von DBus gibt es keine Möglichkeit, im passiven Scanmodus zu arbeiten. Die Option --passive wird ignoriert.
Beim Ausführen des HCI-Modus wird die mit der Option --only erstellte Whitelist an die Bluetooth-Hardware gesendet und nur diese Geräte werden von der Hardware an die Software gesendet. Im DBus-Modus scheint Whitelisting nicht verfügbar zu sein. Im DBus-Modus filtere ich die Ausgabe basierend auf der Whitelist.
Der Code wurde aus Gründen der Übersichtlichkeit leicht neu angeordnet und der gesamte HCI-Zugriffscode in #ifdef-Blöcke verschoben. Die Datei CMakeLists.txt definiert _BLUEZ_HCI_, um den Code in der Anwendung zu behalten. Durch Entfernen oder Auskommentieren der Zeile add_compile_definitions( BLUEZ_HCI ) wird die Kompilierung ohne die Bluetooth-HCI-Bibliotheken durchgeführt. Ich sollte auch in der Lage sein, die Dateien att-types.h, uuid.c und uuid.h zu ignorieren. Ich beherrsche CMake bereits, um dies zu tun.
Der HCI-Code nutzt die libbluetooth-Funktionalität von BlueZ unter Linux, um das Standard-Bluetooth-Gerät zu öffnen und auf Niedrigenergie-Anzeigen von Govee-Thermometern zu warten.
Das Postinst-Debian-Installationsskript wurde aktualisiert, um einen Benutzer goveebttemplogger hinzuzufügen und entsprechende Änderungen an den Berechtigungen für die Standardverzeichnisse vorzunehmen. Die Dienstdatei wurde geändert, um die Ausführung des Programms als Benutzer goveebttemplogger anzugeben. Dies ist möglich, da für den Zugriff auf BlueZ über DBus kein Root-Zugriff erforderlich ist.
Die SVG-Ausgabefunktion wurde hinzugefügt, um SVG-Diagramme direkt aus internen Daten in einem angegebenen Verzeichnis zu erstellen. Dadurch dauert der Start des Programms länger, da es beim Start versucht, alle alten protokollierten Daten in eine interne Speicherstruktur einzulesen. Sobald das Programm in den normalen Betriebszustand übergegangen ist, schreibt es alle fünf Minuten vier SVG-Dateien pro Gerät in das angegebene Verzeichnis.
Hier ist ein Beispieldateiname: gvh-E35ECC215C0F-day.svg
Die aktuellste Temperatur und Luftfeuchtigkeit werden in der vertikalen Skala links angezeigt. Die Temperaturskala wird auf der linken Seite des Diagramms angezeigt, die Feuchtigkeitsskala auf der rechten Seite. Die aktuellsten Zeitdaten werden oben rechts angezeigt, mit einem Titel oben links im Diagramm.
Es können minimale und maximale Temperatur- und Luftfeuchtigkeitsdaten in der Granularität des Diagramms angezeigt werden. Dies ist am nützlichsten bei Jahresdiagrammen, bei denen die Granularität einen Tag beträgt. Hier ist die entsprechende Jahresgrafik zur vorherigen Tagesgrafik: gvh-E35ECC215C0F-year.svg
Die Luftfeuchtigkeit und die Luftfeuchtigkeitsskala auf der rechten Seite werden automatisch weggelassen, wenn die aktuellen Daten eine Luftfeuchtigkeit von Null melden. Das Fleischthermometer meldet seine aktuelle Temperatur und die eingestellte Alarmtemperatur, jedoch keine Feuchtigkeitsmessung.
Eine einfache Textdatei, die Bluetooth-Adressen Titeln zuordnet, wird aus dem Dateinamen gvh-titlemap.txt im SVG-Ausgabeverzeichnis gelesen. Jede Zeile in der Datei sollte aus der Bluetooth-Adresse (im Hexadezimalformat mit ( :
) zwischen Oktetten), Leerzeichen und dem Titel bestehen. Ein Beispiel finden Sie unter gvh-titlemap.txt. Wenn keine Titelzuordnung vorhanden ist, wird die Bluetooth-Adresse für den Diagrammtitel verwendet.
Wenn die Option --svg nicht zur Befehlszeile hinzugefügt wird, sollte das Programm weiterhin genauso funktionieren wie zuvor.
libbluetooth-dev
libdbus-1-dev
Dies scheint das Debian-Paket besser mit der richtigen installierten Größe, Abhängigkeiten und MD5-Summendetails zu erstellen. Ich bin immer noch dabei, CMake zu lernen, daher wird es möglicherweise für eine Weile regelmäßige Updates geben.
sudo apt install build-essential cmake git libbluetooth-dev libdbus-1-dev
git clone https://github.com/wcbonner/GoveeBTTempLogger.git
cmake -S GoveeBTTempLogger -B GoveeBTTempLogger/build
cmake --build GoveeBTTempLogger/build
pushd GoveeBTTempLogger/build && cpack . && popd
Das Installationspaket erstellt eine Systemd-Einheit goveebttemplogger.service
, die GoveeBTTempLogger automatisch startet. Der Dienst kann über den Befehl systemctl edit goveebttemplogger.service
konfiguriert werden. Standardmäßig werden Protokolle nach /var/log/goveebttemplogger
und SVG-Dateien nach /var/www/html/goveebttemplogger
geschrieben.
Die Postinst-Installationsroutine erstellt einen Benutzer und drei Verzeichnisse. Außerdem werden dadurch die Berechtigungen für diese Verzeichnisse geändert, sodass sie dem neu erstellten Benutzer gehören und von ihm geschrieben werden können.
adduser --system --ingroup www-data goveebttemplogger
mkdir --verbose --mode 0755 --parents /var/log/goveebttemplogger /var/cache/goveebttemplogger /var/www/html/goveebttemplogger
chown --changes --recursive goveebttemplogger:www-data /var/log/goveebttemplogger /var/cache/goveebttemplogger /var/www/html/goveebttemplogger
chmod --changes --recursive 0644 /var/log/goveebttemplogger/* /var/cache/goveebttemplogger/* /var/www/html/goveebttemplogger/*
sudo setcap 'cap_net_raw,cap_net_admin+eip' /usr/local/bin/goveebttemplogger
Der Systemd-Unit-Dateiabschnitt ExecStart
zum Starten des Dienstes wurde aus Gründen der Übersichtlichkeit in mehrere Zeilen unterteilt.
[Service]
Type=simple
Restart=always
RestartSec=30
User=goveebttemplogger
Group=www-data
ExecStart=/usr/local/bin/goveebttemplogger
--verbose 0
--log /var/log/goveebttemplogger
--time 60
--svg /var/www/html/goveebttemplogger --battery 8 --minmax 8
--cache /var/cache/goveebttemplogger
KillSignal=SIGINT
Um beispielsweise SVG-Dateien zu deaktivieren, die Ausführlichkeit zu erhöhen und das Verzeichnis zu ändern, in das die Protokolldateien geschrieben werden, verwenden Sie sudo systemctl edit --full goveebttemplogger.service
und geben Sie die folgende Datei in den Editor ein:
[Service]
Type=simple
Restart=always
RestartSec=5
ExecStartPre=/bin/mkdir -p /var/log/gvh
ExecStart=/usr/local/bin/goveebttemplogger
--verbose 1
--log /var/log/gvh
--time 60
--download
KillSignal=SIGINT
Verwenden Sie dann sudo systemctl restart goveebttemplogger
um GoveeBTTempLogger neu zu starten.
Die ersten beiden Befehle unten richten die erforderliche Umgebung für Visual Studio 2022 zum Erstellen des Projekts ein. Der dritte Befehl fügte die erforderlichen Bibliotheken zum Erstellen von Bluetooth-Projekten hinzu.
sudo apt-get update
sudo apt install g++ gdb make ninja-build rsync zip -y
sudo apt install bluetooth bluez libbluetooth-dev -y
Das Protokolldateiformat ist seit langem als einfache tabulatorgetrennte Textdatei mit einer festgelegten Anzahl von Spalten stabil: Datum (UTC), Temperatur (C), Luftfeuchtigkeit, Batterie.
Mit der zusätzlichen Unterstützung für mehrere Temperaturmesswerte des Fleischthermometers habe ich das Format leicht geändert, sodass es mit den meisten Programmen, die vorhandene Protokolle lesen, abwärtskompatibel sein sollte. Nach den vorhandenen Spalten „Datum“, „Temperatur“, „Luftfeuchtigkeit“ und „Batterie“ habe ich optionale Spalten „Modell“, „Temperatur“, „Temperatur“ und „Temperatur“ hinzugefügt
Ich habe den Standardnamen der Protokolldatei so geändert, dass er mit gvh-
statt mit gvh507x_
beginnt. Der Code liest weiterhin die alten Protokolldateien und benennt die Protokolldatei des aktuellen Monats in das neue Format um. Ich habe den Linux-Shell-Befehl for f in gvh507x_*.txt; do sudo mv "${f}" "${f//gvh507x_/gvh-}"; done
im Protokolldateiverzeichnis for f in gvh507x_*.txt; do sudo mv "${f}" "${f//gvh507x_/gvh-}"; done
, um alle alten Dateien auf meinem Computer in das neue Format umzubenennen.
Die Einheiten 5074, 5075, 5174 und 5177 senden alle die UUID 88EC. Leider gibt der 5074 die UUID nicht in der gleichen Anzeige wie die Temperaturen an.
Die H5181-, 5182- und 5183-Geräte senden in jeder ihrer Broadcast-Nachrichten die UUID 5182 bzw. 5183, einschließlich der Temperaturen.
(Flags) 06 (UUID) 5182 (Manu) 3013270100010164018007D0FFFF860708FFFF (Temp) 20°C (Temp) -0.01°C (Temp) 18°C (Temp) -0.01°C (Battery) 0%
(UUID) 5183 (Flags) 05 (Manu) 5DA1B401000101E40186076C2F660000 (Temp) 19°C (Temp) 121.34°C (Battery) 0% (Other: 00) (Other: 00) (Other: 00) (Other: 00) (Other: 00) (Other: CB)
Es hat lange gedauert, bis ich dazu gekommen bin, Daten direkt von den Geräten herunterzuladen, anstatt nur auf Werbung zu hören. Die direkte Download-Methode ist praktisch, da sie die gesammelten Daten abrufen kann, während der Hörer offline war.
Es scheint, dass die H5105-Broadcast-Daten automatisch als Govee-Thermometer erkannt und gespeichert werden, der Download funktioniert jedoch nicht. Der H5105 verfügt über eine Pairing-Taste auf der Oberseite des Geräts. Mir ist aufgefallen, dass das H5100-Gerät anscheinend auch keine historischen Daten herunterlädt. Sie verwenden möglicherweise dasselbe Protokoll, das sich von den älteren Thermometern unterscheidet.
Ich habe ein paar Hacks gemacht, um die beiden Geräte, die ich an meinem Standort habe, zum Laufen zu bringen. Das H5100-Gerät, das ich habe, hat eine Bluetooth-Adresse, die mit einem C beginnt, das H5105-Gerät beginnt mit einem D. Das wirklich große Problem ist, dass das Protokoll für die Kommunikation mit ihnen deklarieren muss, dass es mit LE_RANDOM_ADDRESS kommuniziert, im Gegensatz zu LE_PUBLIC_ADDRESS mit dem anderen Geräte, die ich verwendet habe, erfordern. Dies kommt auch ins Spiel, wenn ein Bluetooth-Filter so konfiguriert ist, dass er nur auf bestimmte Geräte hört. Ich verstehe dieses Setup nicht, da nach dem, was ich gelesen habe, wenn die höchstwertigen Bits der 48-Bit-Bluetooth-Adresse auf eins gesetzt sind, dies die Adresse als ZUFÄLLIG definiert, was bedeuten würde, dass ein C, D, E, oder F in der führenden Ziffer der Adresse sollten alle RANDOM erfordern.
Ich habe Probleme beim Erkennen von Werbung. Dies hat dazu geführt, dass zu viel Zeit damit verbracht wurde, mit der Methode zum Scannen nach Bluetooth-Werbung zu experimentieren, vor allem mit den Einstellungen von ScanWindow und ScanInterval, aber auch mit dem Unterschied zwischen aktivem und passivem Scannen.
In diesem Modus macht das Programm genau das, was Sie erwarten: Es wartet auf Werbung.
In diesem Modus versucht der Bluetooth-Stack selbst, eine Verbindung zu Geräten herzustellen, von denen er Werbung empfängt, und weitere Informationen abzurufen.
Die längste Zeit habe ich in meinem Code feste Werte für Scanfenster und Scanintervall festgelegt, die schnell auf bt_ScanInterval(0x0012) bt_ScanWindow(0x0012) gefolgt von bt_ScanInterval(0x1f40) bt_ScanWindow(0x1f40) gesetzt wurden. Die Werte sind in Schritten von 0,625 ms angegeben. Der erste Wert war 11,25 ms und der zweite Wert war (5000 ms). Beim Lesen bin ich auf Empfehlungen zur Verwendung von 40 ms und 30 ms gestoßen, also habe ich bt_ScanInterval(64) und bt_ScanWindow(48) ausprobiert. Wenn es so eingestellt ist, erhalte ich anscheinend Werbung, kann aber keine Verbindung herstellen und herunterladen.
Ich habe vor einiger Zeit einen Hack eingefügt, der sich auf die Bluetooth-Filterung bezieht, um einfach nach bereits angemeldeten Geräten zu filtern. Wenn ein Filter mit allen gesetzten Bits angegeben wird, übermittelt das Programm beim Start des Scanvorgangs einen Filter bekannter Adressen an den Stapel. Dadurch wird die Erkennung neuer Geräte deaktiviert, in einigen Situationen kann jedoch die Leistung verbessert werden.
Verbindungen auf Bluetooth-Geräten basieren alle auf Handles und UUIDs. Es gibt einige definierte UUIDs, die jedes Bluetooth-Gerät unterstützen muss, und dann gibt es benutzerdefinierte UUIDs. Diese Auflistung stammt von einem GVH5177.
[-------------------] Service Handles: 0x0001..0x0007 UUID: 1800 (Generic Access)
[ ] Characteristic Handles: 0x0002..0x0003 Properties: 0x12 UUID: 2a00 (Device Name)
[ ] Characteristic Handles: 0x0004..0x0005 Properties: 0x02 UUID: 2a01 (Appearance)
[ ] Characteristic Handles: 0x0006..0x0007 Properties: 0x02 UUID: 2a04 (Peripheral Preferred Connection Parameters)
[-------------------] Service Handles: 0x0008..0x000b UUID: 1801 (Generic Attribute)
[ ] Characteristic Handles: 0x0009..0x000a Properties: 0x20 UUID: 2a05 (Service Changed)
[-------------------] Service Handles: 0x000c..0x000e UUID: 180a (Device Information)
[ ] Characteristic Handles: 0x000d..0x000e Properties: 0x02 UUID: 2a50 (PnP ID)
[-------------------] Service Handles: 0x000f..0x001b UUID: 57485f53-4b43-4f52-5f49-4c4c45544e49
[ ] Characteristic Handles: 0x0010..0x0011 Properties: 0x1a UUID: 11205f53-4b43-4f52-5f49-4c4c45544e49
[ ] Characteristic Handles: 0x0014..0x0015 Properties: 0x1a UUID: 12205f53-4b43-4f52-5f49-4c4c45544e49
[ ] Characteristic Handles: 0x0018..0x0019 Properties: 0x12 UUID: 13205f53-4b43-4f52-5f49-4c4c45544e49
[-------------------] Service Handles: 0x001c..0x001f UUID: 12190d0c-0b0a-0908-0706-050403020100
[ ] Characteristic Handles: 0x001d..0x001e Properties: 0x06 UUID: 122b0d0c-0b0a-0908-0706-050403020100
57485f53-4b43-4f52-5f49-4c4c45544e49 ist die benutzerdefinierte 128-Bit-UUID, die anscheinend alle Govee-Thermometer für ihren Hauptdienst verwenden. Wenn es als ASCII-String gedruckt wird, sieht es rückwärts wie dieser Text aus: INTELLI_ROCKS_HW . ( WH_SKCOR_ILLETNI )
12205f53-4b43-4f52-5f49-4c4c45544e49 ist die 128-Bit-UUID des Dienstmerkmals, das ich schreibe, um das Herunterladen von Daten zu ermöglichen. Es sieht aus wie die primäre UUID, außer dass die ersten beiden Bytes unterschiedlich sind. INTELLI_ROCKS_ . ( _SKCOR_ILLETNI )
Die meisten Geräte verfügen über eine 20-tägige Historie. Die Geräte GVH5177 und GVH5174 speichern die Daten einen Monat lang.
Download from device: [A4:C1:38:DC:CC:3D] 2023-02-03 13:52:00 2023-02-23 13:52:00 (28800)
Download from device: [A4:C1:38:EC:0B:03] 2023-02-03 13:51:00 2023-02-23 13:52:00 (28801)
Download from device: [E3:5E:CC:21:5C:0F] 2023-02-03 13:53:00 2023-02-23 13:53:00 (28800)
Download from device: [A4:C1:38:0D:3B:10] 2023-01-24 13:50:00 2023-02-23 13:53:00 (43203)
Download from device: [A4:C1:38:D5:A3:3B] 2023-02-03 13:54:00 2023-02-23 13:54:00 (28800)
Download from device: [A4:C1:38:65:A2:6A] 2023-02-03 13:52:00 2023-02-23 13:55:00 (28803)
Download from device: [A4:C1:38:05:C7:A1] 2023-02-03 13:53:00 2023-02-23 13:56:00 (28803)
Download from device: [A4:C1:38:13:AE:36] 2023-02-03 13:54:00 2023-02-23 13:57:00 (28803)
Download from device: [C2:35:33:30:25:50] 2024-01-15 22:19:00 2024-02-03 20:01:00 (27222)
Download from device: [D0:35:33:33:44:03] 2024-01-14 20:00:00 2024-02-03 20:00:00 (28800)
[2024-02-04T04:01:41] 46 [C2:35:33:30:25:50] (Flags) 06 (Name) GVH5100_2550 (UUID) 88EC (Manu) 010001010276EF55 (Temp) 16.1519°C (Humidity) 51.9% (Battery) 85% (GVH5100)
[-------------------] Service Handles: 0x0001..0x0009 UUID: 1800 (Generic Access)
[ ] Characteristic Handles: 0x0002..0x0003 Properties: 0x0a UUID: 2a00 (Device Name)
[ ] Characteristic Handles: 0x0004..0x0005 Properties: 0x0a UUID: 2a01 (Appearance)
[ ] Characteristic Handles: 0x0006..0x0007 Properties: 0x02 UUID: 2a04 (Peripheral Preferred Connection Parameters)
[ ] Characteristic Handles: 0x0008..0x0009 Properties: 0x02 UUID: 2ac9
[-------------------] Service Handles: 0x000a..0x000d UUID: 1801 (Generic Attribute)
[ ] Characteristic Handles: 0x000b..0x000c Properties: 0x22 UUID: 2a05 (Service Changed)
[-------------------] Service Handles: 0x000e..0x001a UUID: 57485f53-4b43-4f52-5f49-4c4c45544e49
[ ] Characteristic Handles: 0x000f..0x0010 Properties: 0x1a UUID: 11205f53-4b43-4f52-5f49-4c4c45544e49
[ ] Characteristic Handles: 0x0013..0x0014 Properties: 0x1a UUID: 12205f53-4b43-4f52-5f49-4c4c45544e49
[ ] Characteristic Handles: 0x0017..0x0018 Properties: 0x12 UUID: 13205f53-4b43-4f52-5f49-4c4c45544e49
[-------------------] Service Handles: 0x001b..0x0025 UUID: 00fe0000-0000-0000-0000-00000000f002
[ ] Characteristic Handles: 0x001c..0x001d Properties: 0x02 UUID: 03ff0000-0000-0000-0000-00000000f002
[ ] Characteristic Handles: 0x001e..0x001f Properties: 0x12 UUID: 02ff0000-0000-0000-0000-00000000f002
[ ] Characteristic Handles: 0x0022..0x0023 Properties: 0x02 UUID: 00ff0000-0000-0000-0000-00000000f002
[ ] Characteristic Handles: 0x0024..0x0025 Properties: 0x0c UUID: 01ff0000-0000-0000-0000-00000000f002
[2024-02-04T04:03:05] [C2:35:33:30:25:50] Download from device. 2024-01-15 22:19:00 2024-02-03 20:01:00 (27222)
[2024-02-04T04:00:25] 46 [D0:35:33:33:44:03] (Flags) 06 (Name) GVH5105_4403 (UUID) 88EC (Manu) 0100010102868262 (Temp) 16.5506°C (Humidity) 50.6% (Battery) 98% (GVH5105)
[-------------------] Service Handles: 0x0001..0x0009 UUID: 1800 (Generic Access)
[ ] Characteristic Handles: 0x0002..0x0003 Properties: 0x0a UUID: 2a00 (Device Name)
[ ] Characteristic Handles: 0x0004..0x0005 Properties: 0x0a UUID: 2a01 (Appearance)
[ ] Characteristic Handles: 0x0006..0x0007 Properties: 0x02 UUID: 2a04 (Peripheral Preferred Connection Parameters)
[ ] Characteristic Handles: 0x0008..0x0009 Properties: 0x02 UUID: 2ac9
[-------------------] Service Handles: 0x000a..0x000d UUID: 1801 (Generic Attribute)
[ ] Characteristic Handles: 0x000b..0x000c Properties: 0x22 UUID: 2a05 (Service Changed)
[-------------------] Service Handles: 0x000e..0x001a UUID: 57485f53-4b43-4f52-5f49-4c4c45544e49
[ ] Characteristic Handles: 0x000f..0x0010 Properties: 0x1a UUID: 11205f53-4b43-4f52-5f49-4c4c45544e49
[ ] Characteristic Handles: 0x0013..0x0014 Properties: 0x1a UUID: 12205f53-4b43-4f52-5f49-4c4c45544e49
[ ] Characteristic Handles: 0x0017..0x0018 Properties: 0x12 UUID: 13205f53-4b43-4f52-5f49-4c4c45544e49
[-------------------] Service Handles: 0x001b..0x0025 UUID: 00fe0000-0000-0000-0000-00000000f002
[ ] Characteristic Handles: 0x001c..0x001d Properties: 0x02 UUID: 03ff0000-0000-0000-0000-00000000f002
[ ] Characteristic Handles: 0x001e..0x001f Properties: 0x12 UUID: 02ff0000-0000-0000-0000-00000000f002
[ ] Characteristic Handles: 0x0022..0x0023 Properties: 0x02 UUID: 00ff0000-0000-0000-0000-00000000f002
[ ] Characteristic Handles: 0x0024..0x0025 Properties: 0x0c UUID: 01ff0000-0000-0000-0000-00000000f002
[2024-02-04T04:01:31] [D0:35:33:33:44:03] Download from device. 2024-01-14 20:00:00 2024-02-03 20:00:00 (28800)
Die Datei btsnoop_hci.log ist ein Bluetooth-hci-Snoop-Protokoll von einem Google Nexus 7-Gerät mit Android und der Govee Home App.