ندرس البيانات التي جمعتها Xiaomi Mi Band لهذا العام

مقدمة


يرتدي الأشخاص أساور اللياقة البدنية لأسباب مختلفة ، يمكنني تحمل بعضها:


  1. من أجل الحفاظ على لياقتهم وتحقيق أهداف النشاط ؛
  2. لأنه شيء صغير عصري ؛
  3. لتجربة نفسك أو لمعرفة نفسك بشكل أفضل.

أرتدي سوار اللياقة البدنية لسبب رقم 3. في هذه المقالة ، أود التحدث عن كيفية استخراج البيانات من سوار ومحاولة الحصول على بعض التبعيات.


تعمل طرق استخراج هذه البيانات في Mi Band 1 و 1S وربما 2 (يبدو أن التطبيق لـ 2 هو نفسه).


استخراج البيانات


لاستخراج البيانات من السوار ، بادئ ذي بدء ، تحتاج إلى الحصول على قاعدة البيانات من هاتف SQLite التي يتم تخزين المقاييس التي تم جمعها. في حالة Android ، يتم ذلك ببساطة شديدة ، راجع الموضوع في منتدى مطوري xda ، البرامج النصية لقاعدة البيانات الحالية :


  1. نقوم بتوصيل هاتف Android مع تمكين تصحيح أخطاء USB بجهاز كمبيوتر ؛
  2. نقوم بعمل نسخة احتياطية من التطبيق: adb backup -f mi.ab -noapk -noshared com.xiaomi.hm.health ؛
  3. قم dd if=mi.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" > mi.tar dd if=mi.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" > mi.tar ؛
  4. قم بفك tar xvf mi.tar apps/com.xiaomi.hm.health/db/ 2>&1 | tee -a log الأرشيف من قاعدة البيانات: tar xvf mi.tar apps/com.xiaomi.hm.health/db/ 2>&1 | tee -a log tar xvf mi.tar apps/com.xiaomi.hm.health/db/ 2>&1 | tee -a log
  5. انسخ قاعدة البيانات: cp -f apps/com.xiaomi.hm.health/db/origin_db* ./db/ .

نتيجة لذلك ، نحصل على قاعدة بيانات SQLite باسم الملف db/origin_db_[0-9]+$ ، الذي يخزن قياسات Mi Band.


تحميل البيانات وتحليلها


لدراسة البيانات ، في رأيي ، من المريح استخدام دفتر IPython : Xiaomi_Mifit_miband_data.ipynb


يتم تخزين المقاييس في جدول DATE_DATA:


 df = pd.read_sql_query("SELECT * from DATE_DATA", con) 

الأعمدة في الجدول التي تهم:


عمودالوصف
التاريختاريخ
ملخصJSON مع معالجة البيانات لهذا اليوم
البياناتبيانات خام في الدقيقة لكل نوم [نشاط 1] ، نشاط 2 ، نشاط 3
DATA_HRدقيقة معدل ضربات القلب البيانات

البيانات المجمعة اليومية


يتم تخزين البيانات المجمعة كـ JSON:


 {"slp":{"usrEd":-1440,"lt":457,"st":1464376080,"wk":15,"dp":30,"usrSt":-1440,"ed":1464406200},"v":5,"goal":8000,"stp":{"rn":2,"cal":257,"runDist":256,"wk":69,"ttl":5244,"runCal":13,"dis":3817}} 

يتم تقسيم البيانات إلى قسمين: النوم ( slp ) والنشاط ( stp ). بالنسبة للنوم ، يتم تخزين وقت البدء والنهاية - st ، ed ، وكذلك وقت النوم العميق والخفيف في دقائق - لتر ، dp . يتم أيضًا تخزين وقت الاستيقاظ بين بداية ونهاية النوم - أسبوع . بالنسبة للنشاط ، يتم تخزين إجمالي عدد "الخطوات" ttl - مجموع قراءات المستشعرات الأولية لليوم والكميات المشتقة الأخرى func(ttl, , ) .


النشاط الخام وبيانات معدل ضربات القلب


يتم تخزين بيانات النشاط الخام كل دقيقة (يوميًا 1440) ، وتمثل 3 قيم في الدقيقة. القيمة الأولى هي حلم وقيمة من 0 إلى 127 (ولكن في حالتي بحد أقصى 126) ، فإن القيمة الثانية والثالثة هي نشاط بقيمة 0 إلى 255 (لدي نشاط بحد أقصى 2 - 189 ، نشاط 3 - 240).


يتم تخزين النبض كل دقيقة وتتراوح من 0 إلى 255.


كيف تصبح البيانات الخام مجمعة يوميًا


أبسط تجميع هو عدد الخطوات في اليوم - مجموع قيم النشاط 3 في اليوم. من الصعب النوم: لم أتعلم أبدًا كيفية تحويل بيانات النوم الخام إلى بيانات مجمعة. في المنتديات ، تم التعبير عن فكرة أن قيمة النشاط 1 == 4 هي النوم العميق ، و 5 خفيفة ، لكنها بسيطة مثل الخطوات لإقامة علاقة بين البيانات المجمعة والبيانات الخام.


تحليل البيانات


أولاً ، كم كنت أنام خلال العام. تحولت هذه القيمة إلى ~ (7 + - 1) ساعات. يبدو أن كل شيء على ما يرام مع ذلك.


وقت النوم


شيء آخر واضح - أحصل على قسط كاف من النوم في عطلات نهاية الأسبوع:


النوم مقابل يوم الأسبوع


إذا قمت بالاتصال بنوم النوم العميق بجودة الضوء ، فقد تبين أن أفضل نوعية للنوم يوم الخميس ، وفي نفس الوقت ، فإن النوم العميق هو 23٪ من إجمالي وقت النوم. وفي يوم الجمعة - أسوأ نوعية للنوم ، أخشى حتى أن أخمن السبب.


النشاط مقابل يوم الأسبوع


الحد الأقصى لعدد "الخطوات" التي أجريها يومي الجمعة والسبت:


النشاط مقابل يوم الأسبوع


في نفس الوقت ، بيئتي هي اليوم الذي أنام فيه قليلاً وأمشي قليلاً ، لا توجد أي تفسيرات واضحة من فئة "أعمل من المنزل" ، لذلك هذا شيء جديد بالنسبة لي.


آمل أن يرغب شخص من مالكي الأساور الشهيرة في Mi في دراسة أنفسهم والتحدث عن ميزاتهم.

Source: https://habr.com/ru/post/ar464055/


All Articles