Govee H5074، H5075، H5100، H5101، H5104، H5105، H5174، H5177، وH5179 Bluetooth مسجل درجة الحرارة والرطوبة منخفض الطاقة، ومقاييس حرارة اللحوم الذكية Govee H5181، H5182 وH5183
تبلغ تكلفة كل جهاز من هذه الأجهزة حاليًا أقل من 15 دولارًا على Amazon وتستخدم تقنية BLE للاتصال، لذلك لا تحتاج إلى إعداد حساب الشركة المصنعة لتتبع البيانات.
تم إنشاء GoveeBTTempLogger في البداية باستخدام Microsoft Visual Studio 2017، مستهدفًا معالج ARM الذي يعمل على Linux. أنا أستخدم Raspberry Pi 4 كمضيف Linux الخاص بي. لقد تحققت من أن نفس الكود يعمل على Raspberry Pi ZeroW وRaspberry Pi Zero2W وRaspberry Pi 3b وRaspberry Pi 5.
يقوم GoveeBTTempLogger بإنشاء ملف سجل، إذا تم تحديده بواسطة الخيار -l أو --log، لكل جهاز يتلقى البيانات التي يتم بثها من خلال استخدام تنسيق بسيط مفصول بعلامات جدولة متوافق مع التحميل في Microsoft Excel. يحتوي كل سطر في ملف السجل على التاريخ (المسجل بالتوقيت العالمي المنسق)، ودرجة الحرارة، والرطوبة النسبية، ونسبة البطارية. يتضمن تنسيق تسمية ملف السجل اسم جهاز Govee الفريد والسنة الحالية والشهر. يتم إنشاء ملف سجل جديد شهريًا.
تمت إضافة الخيار --index لإنشاء ملف فهرس html استنادًا إلى ملفات السجل الموجودة. يقوم هذا الخيار بإنشاء ملف فهرس والخروج دون تشغيل أي من رموز البلوتوث. ويمكن تشغيله دون التأثير على نسخة قيد التشغيل من البرنامج الذي يستمع إلى إعلانات البلوتوث. أمر مثال لإنشاء فهرس:
sudo /usr/local/bin/goveebttemplogger --log /var/log/goveebttemplogger/ --index index.html
التحويل إلى Bluetooth باستخدام BlueZ عبر DBus! DBus هي الطريقة المعتمدة للاتصال عبر Bluetooth. يبدو أنه يستخدم وحدة المعالجة المركزية (CPU) أكثر من رمز HCI النقي. عندما حاولت إنشاء هذا على جهاز يعمل بنظام التشغيل Raspbian GNU/Linux 10 (buster)، تم إنشاء النظام ولكن إجراءات BlueZ DBus للعثور على محول البلوتوث تفشل. لهذا السبب، تركت أوامر HCI القديمة في التعليمات البرمجية والرجوع إلى تشغيل HCI في حالة فشل DBus.
لقد أضفت خيار --HCI للسماح للمستخدم بإجباره على تشغيل أوامر HCI بدلاً من استخدام واجهة DBus.
عند تشغيل DBus، لا توجد طريقة للتشغيل في وضع المسح السلبي. يتم تجاهل الخيار --passive.
عند تشغيل وضع HCI، يتم إرسال القائمة البيضاء التي تم إنشاؤها باستخدام الخيار --only إلى جهاز البلوتوث ويتم إرسال تلك الأجهزة فقط من الجهاز إلى البرنامج. في وضع DBus، لا يبدو أن القائمة البيضاء متاحة. في وضع DBus أقوم بتصفية المخرجات بناءً على القائمة البيضاء.
تمت إعادة ترتيب الكود قليلاً من أجل الوضوح، حيث تم نقل كافة كود الوصول لـ HCI إلى كتل #ifdef. يعرّف الملف CMakeLists.txt _BLUEZ_HCI_ للاحتفاظ بالكود في التطبيق. ستتم إزالة السطر add_compile_definitions( BLUEZ_HCI ) أو التعليق عليه بدون مكتبات Bluetooth HCI. يجب أن أكون قادرًا أيضًا على تجاهل الملفات att-types.h، وuuid.c، وuuid.h. أنا ماهر في CMake للقيام بذلك حتى الآن.
يستخدم رمز HCI وظيفة libbluetooth من BlueZ على نظام التشغيل Linux لفتح جهاز Bluetooth الافتراضي والاستماع إلى إعلانات الطاقة المنخفضة من موازين الحرارة Govee.
تم تحديث البرنامج النصي لتثبيت postinst debian لإضافة مستخدم goveebttemplogger وإجراء تغييرات على الأذونات على الدلائل الافتراضية بشكل مناسب. تم تغيير ملف الخدمة لتحديد تشغيل البرنامج كمستخدم goveebttemplogger. هذا ممكن لأن الوصول إلى BlueZ عبر DBus لا يتطلب الوصول إلى الجذر.
تمت إضافة وظيفة إخراج SVG، وإنشاء رسوم بيانية SVG مباشرة من البيانات الداخلية في دليل محدد. يؤدي ذلك إلى استغراق البرنامج وقتًا أطول لبدء التشغيل لأنه سيحاول قراءة جميع البيانات المسجلة القديمة في بنية الذاكرة الداخلية عند بدء التشغيل. بمجرد دخول البرنامج إلى حالة التشغيل العادية، فإنه يكتب أربعة ملفات SVG لكل جهاز إلى الدليل المحدد كل خمس دقائق.
فيما يلي مثال لاسم الملف: gvh-E35ECC215C0F-day.svg
يتم عرض أحدث درجة الحرارة والرطوبة في المقياس الرأسي على اليسار. يتم عرض مقياس درجة الحرارة على الجانب الأيسر من الرسم البياني، ومقياس الرطوبة على اليمين. يتم عرض أحدث بيانات الوقت في أعلى اليمين، مع عنوان في أعلى يسار الرسم البياني.
قد يتم عرض بيانات الحد الأدنى والحد الأقصى لدرجة الحرارة والرطوبة، بدقة الرسم البياني. يعد هذا مفيدًا للغاية في الرسوم البيانية السنوية، حيث تكون التفاصيل ليوم واحد. فيما يلي الرسم البياني السنوي المقابل للرسم البياني اليومي السابق: gvh-E35ECC215C0F-year.svg
يتم حذف الرطوبة ومقياس الرطوبة الموجود على اليمين تلقائيًا إذا كانت البيانات الحالية تشير إلى رطوبة تبلغ صفرًا. يُبلغ مقياس حرارة اللحوم عن درجة حرارته الحالية ويضبط المنبه درجة الحرارة ولكن لا يوجد قياس للرطوبة.
ستتم قراءة ملف نصي بسيط يعين عناوين Bluetooth للعناوين من اسم الملف gvh-titlemap.txt في دليل إخراج svg. يجب أن يتكون كل سطر في الملف من عنوان البلوتوث (بتنسيق سداسي عشري مع ( :
) بين الثمانيات)، ومسافة بيضاء، والعنوان. راجع gvh-titlemap.txt للحصول على مثال. في حالة عدم وجود تعيين عنوان، يتم استخدام عنوان Bluetooth لعنوان الرسم البياني.
إذا لم تتم إضافة خيار --svg إلى سطر الأوامر، فيجب أن يستمر البرنامج في العمل بنفس الطريقة التي كان يعمل بها من قبل.
libbluetooth-dev
libdbus-1-dev
يبدو أن هذا يؤدي إلى إنشاء حزمة دبيان بشكل أفضل بالحجم المثبت الصحيح والتبعيات وتفاصيل md5sums. ما زلت أتعلم CMake لذا قد تكون هناك تحديثات منتظمة لفترة من الوقت.
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
ستقوم حزمة التثبيت بإنشاء وحدة نظام goveebttemplogger.service
والتي ستبدأ تشغيل GoveeBTTempLogger تلقائيًا. يمكن تكوين الخدمة عبر الأمر systemctl edit goveebttemplogger.service
. افتراضيًا، يقوم بكتابة السجلات إلى /var/log/goveebttemplogger
ويكتب ملفات SVG إلى /var/www/html/goveebttemplogger
.
يقوم روتين تثبيت postinst بإنشاء مستخدم وثلاثة أدلة. كما أنه سيغير الأذونات الموجودة على تلك الدلائل لتكون مملوكة للمستخدم الذي تم إنشاؤه حديثًا وقابلة للكتابة عليها.
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
تم تقسيم قسم ملف وحدة النظام ExecStart
لبدء الخدمة إلى عدة أسطر من أجل الوضوح.
[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
على سبيل المثال، لتعطيل ملفات SVG، وزيادة الإسهاب، وتغيير الدليل الذي تمت كتابة ملفات السجل إليه، استخدم sudo systemctl edit --full goveebttemplogger.service
وأدخل الملف التالي في المحرر:
[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
ثم استخدم sudo systemctl restart goveebttemplogger
لإعادة تشغيل GoveeBTTempLogger.
يقوم الأمران الأولان أدناه بإعداد البيئة المطلوبة لـ Visual Studio 2022 لإنشاء المشروع. أضاف الأمر الثالث المكتبات المطلوبة لبناء مشاريع البلوتوث.
sudo apt-get update
sudo apt install g++ gdb make ninja-build rsync zip -y
sudo apt install bluetooth bluez libbluetooth-dev -y
ظل تنسيق ملف السجل مستقرًا لفترة طويلة كملف نصي بسيط مفصول بعلامات جدولة مع عدد محدد من الأعمدة: التاريخ (UTC)، ودرجة الحرارة (C)، والرطوبة، والبطارية.
مع إضافة دعم موازين حرارة اللحوم لقراءات درجات الحرارة المتعددة، قمت بتغيير التنسيق قليلاً بطريقة ينبغي أن تكون متوافقة مع معظم البرامج التي تقرأ السجلات الموجودة. بعد الأعمدة الموجودة للتاريخ ودرجة الحرارة والرطوبة والبطارية، قمت بإضافة أعمدة اختيارية للنموذج ودرجة الحرارة ودرجة الحرارة ودرجة الحرارة
لقد قمت بتغيير اسم ملف السجل الافتراضي ليبدأ بـ gvh-
بدلاً من gvh507x_
. سيستمر التعليمة البرمجية في قراءة ملفات السجل القديمة، وسيقوم بإعادة تسمية ملف سجل الأشهر الحالية إلى التنسيق الجديد. لقد استخدمت أمر Linux Shell for f in gvh507x_*.txt; do sudo mv "${f}" "${f//gvh507x_/gvh-}"; done
في دليل ملف السجل لإعادة تسمية كافة الملفات القديمة إلى التنسيق الجديد على جهازي.
تبث الوحدات 5074 و5075 و5174 و5177 جميعها UUID الخاص بـ 88EC. لسوء الحظ، 5074 لا يتضمن UUID في نفس الإعلان مثل درجات الحرارة.
تبث وحدات H5181 و5182 و5183 UUID رقم 5182 و5183 على التوالي في كل رسالة من رسائل البث الخاصة بها بما في ذلك درجات الحرارة.
(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)
لقد استغرق الأمر وقتًا طويلاً حتى أتمكن من تنزيل البيانات من الأجهزة مباشرة بدلاً من الاستماع فقط للإعلانات. تعتبر طريقة التنزيل المباشر رائعة لأنها يمكنها استرداد البيانات المتراكمة عندما يكون المستمع غير متصل بالإنترنت.
يبدو أنه يتم التعرف تلقائيًا على بيانات البث H5105 كمقياس حرارة Govee والبيانات المخزنة، ولكن التنزيل لا يعمل. يحتوي جهاز H5105 على زر إقران أعلى الجهاز. لقد لاحظت أن جهاز H5100 لا يبدو أنه يقوم بتنزيل البيانات التاريخية أيضًا. وقد يستخدمون نفس البروتوكول، الذي يختلف عن موازين الحرارة القديمة.
لقد قمت ببعض الاختراقات لتشغيل الجهازين الموجودين في موقعي. يحتوي جهاز H5100 الذي أملكه على عنوان بلوتوث يبدأ بالحرف C، بينما يبدأ جهاز H5105 بالحرف D. والمشكلة الكبيرة حقًا هي أنه للتواصل معهم، يجب أن يعلن البروتوكول أنه يتحدث مع LE_RANDOM_ADDRESS بدلاً من LE_PUBLIC_ADDRESS الذي يتعامل معه الآخر الأجهزة التي استخدمتها تتطلب. يتم تفعيل هذا أيضًا إذا تم تكوين مرشح البلوتوث للاستماع إلى أجهزة معينة فقط. لا أفهم هذا الإعداد وفقًا لما قرأته، إذا تم تعيين البتات الأكثر أهمية لعنوان البلوتوث 48 بت على واحد، فإن ذلك يحدد العنوان على أنه عشوائي، وهو ما يعني أن C، D، E، أو F في الرقم الأول من العنوان يجب أن تتطلب جميعها RANDOM.
لقد واجهت مشاكل في التعرف على الإعلانات. وقد أدى ذلك إلى قضاء الكثير من الوقت في تجربة طريقة المسح بحثًا عن إعلانات البلوتوث، في المقام الأول باستخدام إعدادات ScanWindow وScanInterval، ولكن أيضًا مع الفرق بين المسح النشط والمسح السلبي.
في هذا الوضع، يقوم البرنامج بما تتوقعه تماما، وهو الاستماع للإعلانات.
في هذا الوضع، ستحاول حزمة البلوتوث نفسها الاتصال بالأجهزة التي تتلقى الإعلانات منها واسترداد المزيد من المعلومات.
لأطول فترة قمت بتعيين قيم ثابتة في التعليمات البرمجية الخاصة بي لـ Scan Window وScan Interval بسرعة يتم تعيينها على bt_ScanInterval(0x0012) bt_ScanWindow(0x0012) متبوعة بـ bt_ScanInterval(0x1f40) bt_ScanWindow(0x1f40). القيم بزيادات قدرها 0.625 مللي ثانية. القيمة الأولى كانت 11.25 ميلي ثانية، والقيمة الثانية كانت (5000 ميلي ثانية). أثناء إجراء مجموعة من القراءة، عثرت على توصيات لاستخدام 40 مللي ثانية و30 مللي ثانية، لذلك قمت بتجربة bt_ScanInterval(64) وbt_ScanWindow(48). عندما يتم ضبطه بهذه الطريقة، يبدو أنني أتلقى إعلانات، لكن لا يمكنني الاتصال والتنزيل.
لقد قمت بتضمين اختراق منذ بعض الوقت يتعلق بتصفية البلوتوث للتصفية بسهولة على الأجهزة التي تم تسجيلها بالفعل. إذا تم تحديد مرشح مع تعيين كافة البتات، فسيقوم البرنامج بإرسال مرشح للعناوين المعروفة إلى المكدس عند بدء المسح. يؤدي هذا إلى تعطيل اكتشاف الجهاز الجديد، ولكنه قد يؤدي إلى تحسين الأداء في بعض المواقف.
تعتمد جميع الاتصالات على أجهزة البلوتوث على المقابض والمعرفات الفريدة UUID. هناك بعض UUIDs المحددة التي يجب على كل جهاز بلوتوث أن يدعمها، ومن ثم هناك UUIDs مخصصة. جاءت هذه القائمة من 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 هو UUID المخصص 128 بت الذي يبدو أن جميع موازين الحرارة Govee تستخدمه في خدمتهم الأساسية. إذا تمت طباعته كسلسلة ascii، فسيبدو هذا النص معكوسًا INTELLI_ROCKS_HW . ( WH_SKCOR_ILLETNI )
12205f53-4b43-4f52-5f49-4c4c45544e49 هو UUID 128 بت لخاصية الخدمة التي أكتبها لتمكين تنزيل البيانات. يبدو مثل UUID الأساسي باستثناء أن أول بايتين مختلفتين. INTELLI_ROCS_ . ( _SKCOR_ILLETNI )
تحتفظ معظم الأجهزة بسجل مدته 20 يومًا. تحتوي أجهزة GVH5177 وGVH5174 على بيانات شهرية.
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)
الملف btsnoop_hci.log عبارة عن سجل تطفل عبر Bluetooth hci من جهاز Google Nexus 7 الذي يعمل بنظام التشغيل Android وتطبيق Govee Home.