راسبيري باي تعقب الإنتاجية الشخصية



متعقب الإنتاجية الخاص بي هو "مرآة سحرية" ، ولكن بدلاً من الوقت والطقس والاقتباسات التحفيزية ، فإنه يظهر:

  • كم من الوقت أمضيت اليوم في مهام العمل على جهاز كمبيوتر وفي هاتف ذكي ( RescueTime ).
  • قائمة المهام الخاصة بي من Trello .
  • يعرض "مخطط الرادار" وقتي الذي قضيته في فئات مختلفة من التطبيقات مقارنة بالأمس (RescueTime).
  • المجاميع الأسبوعية (RescueTime).

إذا قضيت أكثر من 50٪ من وقتك في مهام العمل ، فسيكون هناك إضاءة خلفية خضراء زاهية حول المرآة. إذا كان أقل من 50٪ - ستكون الإضاءة الخلفية حمراء ، مما يشير إلى أنك بحاجة إلى زيادة الإنتاجية! ومع ذلك ، يمكنك تعيين التوزيع بنفسك.





أولاً ، سأشرح جوهر تعقب الإنتاجية. ثم سأقدم قائمتين مختلفتين من الأدوات والمكونات ، بحيث يمكنك إنشاء نسخة كاملة أو أساسية (بدون إضاءة خلفية LED) من المتعقب لا تتطلب القدرة على اللحام. بعد ذلك ، سأوضح لك كيفية إنشاء نموذج أولي لمشروعك ، بحيث يسهل عليك إنشاء نموذج أولي لمشروعك. سوف تتعلم كيفية تكييف الكود مع احتياجاتك ، وفي النهاية سننظر في تصحيح الجهاز.

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

فكرة




لعدة أشهر كنت سأكتب هذا المقال. لكن صديقي القديم المسمى المماطلة لم يسمح لي بذلك. أؤجل الكتابة باستمرار ، وأملأ وقتي في مشاهدة مقاطع الفيديو من الأعماق المظلمة لموقع YouTube.

بمجرد أن قرأت مقالًا عن التسويف واكتشفت الخدمات التي يمكن أن تساعد في حل مشكلتي: مدير المهام Trello وجدول وقت RescueTime. كلاهما يتناسب تمامًا مع احتياجاتي ، ولكن بعد مرور بعض الوقت توقفت عن الذهاب إلى صفحاتهم وبدأت في تجاهل الإشعارات. ثم توصلت إلى فكرة مشروعي: أريد عرض البيانات من التطبيقات على مرآة معلقة على الحائط. ثم بالتأكيد لن أخفي من واجباتي.

كانت المسودة الأولى للمشروع بسيطة: سأستخدم RescueTime API لعرض أنشطتي الإنتاجية / المشتتة للانتباه ، و Trello API لعرض قائمة بالمهام لهذا اليوم. ولكن في وقت لاحق أضفت ميزات أخرى ، ولكن المزيد عن ذلك أدناه.

الأدوات والمكونات


لقد استخدمت هذه الأدوات لإنشاء متعقبي ، وقد تكون مجموعتك مختلفة!

للإطار :

  • 4 أمتار من الخشب الرقائقي 7 × 15 سم - يعتمد على حجم الشاشة.
  • مرآة أحادية الجانب 30 × 40 سم - تعتمد على حجم الشاشة.
  • شاشة مقاس 25 × 35 سم - موجودة في سوق السلع المستعملة. يمكنك استخدام أي.
  • Raspberry Pi 3 Model B - Raspberry Pi 2 مناسب أيضًا ، ولكن عليك العثور على وحدة Wi-Fi.
  • كابل HDMI

للإضاءة الخلفية LED :

  • SMD5050 شريط RGB LED بطول مترين - أنت بحاجة إلى smd5050 ، سأشرح السبب أدناه.
  • ثلاث موسفات N-channel (على سبيل المثال ، IRLZ34N).
  • مصدر الطاقة 12 فولت - 2 أمبير.
  • اللوح.

الأدوات :

  • المنشار على الخشب.
  • غراء للخشب.
  • إكسسوارات اللحام (لإضاءة LED).

كود




يتكون هذا الفصل من ثلاثة أجزاء ، ولا تحتاج إلى جميع المكونات المذكورة أعلاه ، طالما أن Raspberry Pi والشاشة كافية فقط.

تكوين التوت التوت


إذا لم تقم بتهيئة Raspberry Pi حتى الآن ، فقم بذلك . بالنسبة للمشروع ، ستحتاج إلى تثبيت خادم الويب Apache ووحدة تحكم PHP-LED.

دليل تثبيت Apache: https://www.raspberrypi.org/documentation/remote-access/web-server/apache.md .

دليل تثبيت وحدة تحكم PHP-LED: https://github.com/k1sul1/Raspberry-Pi-PHP-LED-controller .

الآن من مستودع المشروع قم بتنزيل ملف index.php على Raspberry Pi الخاص بك ووضعه هنا: /var/www/html/

إذا كنت لا تعرف كيفية نقل الملفات باستخدام محطة Linux ، اقرأ هنا: https://www.linux.com/learn/how-move-files-using-linux-commands-or-file-managers .

تعديل الكود


سيتطلب القليل من المعرفة بـ HTML / CSS.

سنقوم بتعديل ملف index.php ، وهو قلب المشروع. قم بتوصيل الشاشة بـ Raspberry Pi. إذا حاولت فتح index.php ، فلن يعمل شيء ، لأنك تحتاج أولاً إلى إدخال مفاتيح API في التعليمات البرمجية. للقيام بذلك ، قم بتسجيل الدخول إلى حسابك على موقع RescueTime ، وانتقل إلى قسم المطور وانقر على تنشيط هذا المفتاح. احفظ هذا المفتاح في مكان ما.

افعل نفس الشيء مع Trello API: قم بتسجيل الدخول إلى حسابك وإنشاء مفتاح API على بوابة المطور.

افتح الآن ملف index.php في /var/www/html/ في محرر النصوص واستبدل [API_KEY] بمفاتيح RescueTime و Trello. [list_number] - رقم القائمة المطلوبة للحصول على قائمة المهام من Trello. لإنشاء رقم ، قم أولاً بإنشاء قائمة جديدة في Trello وقم بتسميتها "To-Do" ، وسيتم عرض المهام من هذه القائمة على مرآة سحرية.

الآن انسخ العنوان من سطر المتصفح الذي يبدو كالتالي:

https://trello.com/b/3hS6yyLo/board-name

أضف في نهاية .json: https://trello.com/b/3hS6yyLo/board-name.json
اضغط على Enter وسيتم ملء الشاشة بالرمز. ابحث عن اسم قائمة {"name":"To Do","id":"5981c123cd1b23f13907cd18"} في هذه الفوضى. يجب أن يظهر بالشكل التالي: {"name":"To Do","id":"5981c123cd1b23f13907cd18"} ، هنا id قائمتك. أدخل قيمته في [list_number] في ملف index.php.

افتح المتصفح الآن ، واكتب localhost في شريط العناوين واضغط على Enter. يجب أن تعرض الرسوم البيانية بياناتك.

ملاحظة : قد يختلف موقع الرسوم البيانية بسبب دقة الشاشة. يمكنك ضبط عرض العناصر وارتفاعها وموضعها في قسم CSS من الشفرة.

الآن يبقى إنشاء إطار للشاشة وتوصيل مصابيح LED.

ملاحظة : إذا لم تكن مهتمًا بمناقشة تفصيلية لواجهة برمجة التطبيقات ، فيمكنك التخطي إلى الفصل التالي.

تفاصيل API


يعتمد المشروع على APIs اثنين:


على الرغم من أن الوثائق تحتوي على جميع المعلومات اللازمة ، فسأشرح البيانات من واجهة برمجة التطبيقات التي يستخدمها مشروعنا.

في قسم إدارة الوقت ، يتم استدعاء RescueTime API ويتم طلب معلومات حول توزيع وقت اليوم:

"https://www.rescuetime.com/anapi/data?key=[API_KEY]&perspective=rank&interval=hour&restrict_begin=".date('Ym-d')."&restrict_end=".date('Ym-d')."&format=json"

هنا
التاريخ ("Ym-d") - التاريخ الحالي.
المنظور = الرتبة - نوع فرز البيانات. في هذه الحالة ، حسب "الفئة" ، أي ما تم قضاء معظم الوقت.

بعد إجراء المكالمة ، نحصل على الملف بتنسيق JSON (انظر الكود الخاص بملف data.json في نهاية الفصل). نأخذ منها "الوقت المستغرق (بالثواني)" و "الإنتاجية" (يمكن أن يكون لها قيم من -2 (مشتتة) إلى 2 ، (إنتاجية)). بناءً على هذه البيانات ، يمكنك إنشاء مؤشر إنتاجية بقيمة أكبر من 100.

المكالمة RescueTime API التالية:

"https://www.rescuetime.com/anapi/daily_summary_feed?key=[API_KEY]"

ستتلقى تقريرًا أسبوعيًا (انظر رمز ملف Summary.json في نهاية الفصل). يتم استخدام هذه البيانات لبناء جدول أسبوعي.

استدعاء Trello API:

"https://api.trello.com/1/lists/[list_number]/cards?fields=name&key=[API_KEY]&token=[Token]"

ستتلقى بيانات من بطاقات المهام في Trello:

[{"id":"5a4160103bfcd14994852f59","name":"ceylan cinemagraph"},{"id":"59e8241f6aa8662a51eb7de6","name":"Learn GitHuB"},{"id":"5981c19577c732f826ad8025","name":"Publish Instructible"},{"id":"5a341dba7f17d235d7c5bbd1","name":"SPACE PROGRAM"}]

يمكنك وضع نص في البطاقات ونقله إلى مكان آخر.

data.json

كود
 Formatted JSON Data { "notes":"data is an array of arrays (rows), column names for rows in row_headers", "row_headers":[ "Rank", "Time Spent (seconds)", "Number of People", "Activity", "Category", "Productivity" ], "rows":[ [ 1, 1536, 1, "en.0wikipedia.org", "Uncategorized", 0 ], [ 2, 1505, 1, "youtube.com", "Video", -2 ], [ 3, 1178, 1, "OpenOffice", "Writing", 2 ], [ 4, 709, 1, "moodle.bilkent.edu.tr", "General Reference \u0026 Learning", 2 ], [ 5, 602, 1, "google.com.tr", "Search", 2 ], [ 6, 439, 1, "reddit.com", "General News \u0026 Opinion", -2 ], [ 7, 437, 1, "tr.sharelatex.com", "Writing", 2 ], [ 8, 361, 1, "yemeksepeti.com", "General Shopping", -2 ], [ 9, 356, 1, "Gmail", "Email", 0 ], [ 10, 328, 1, "Google Chrome", "Browsers", 0 ], [ 11, 207, 1, "stars.bilkent.edu.tr", "General Reference \u0026 Learning", 2 ], [ 12, 179, 1, "whatsapp", "Instant Message", -1 ], 

ملخص. json

كود
 [ { "id":1515657600, "date":"2018-01-11", "productivity_pulse":54, "very_productive_percentage":34.2, "productive_percentage":10.6, "neutral_percentage":25.6, "distracting_percentage":0.0, "very_distracting_percentage":29.6, "all_productive_percentage":44.8, "all_distracting_percentage":29.6, "uncategorized_percentage":16.1, "business_percentage":6.0, "communication_and_scheduling_percentage":4.3, "social_networking_percentage":0.0, "design_and_composition_percentage":0.0, "entertainment_percentage":15.2, "news_percentage":3.3, "software_development_percentage":5.4, "reference_and_learning_percentage":22.8, "shopping_percentage":12.9, "utilities_percentage":14.1, "total_hours":2.51, "very_productive_hours":0.86, "productive_hours":0.27, "neutral_hours":0.64, "distracting_hours":0.0, "very_distracting_hours":0.74, "all_productive_hours":1.12, "all_distracting_hours":0.74, "uncategorized_hours":0.4, "business_hours":0.15, "communication_and_scheduling_hours":0.11, "social_networking_hours":0.0, "design_and_composition_hours":0.0, "entertainment_hours":0.38, "news_hours":0.08, "software_development_hours":0.13, "reference_and_learning_hours":0.57, "shopping_hours":0.32, "utilities_hours":0.35, "total_duration_formatted":"2h 30m", "very_productive_duration_formatted":"51m 26s", "productive_duration_formatted":"15m 56s", "neutral_duration_formatted":"38m 34s", "distracting_duration_formatted":"no time", "very_distracting_duration_formatted":"44m 30s", "all_productive_duration_formatted":"1h 7m", "all_distracting_duration_formatted":"44m 30s", "uncategorized_duration_formatted":"24m 11s", "business_duration_formatted":"9m 6s", "communication_and_scheduling_duration_formatted":"6m 26s", "social_networking_duration_formatted":"no time", "design_and_composition_duration_formatted":"no time", "entertainment_duration_formatted":"22m 49s", "news_duration_formatted":"4m 55s", "software_development_duration_formatted":"8m 3s", "reference_and_learning_duration_formatted":"34m 17s", "shopping_duration_formatted":"19m 22s", "utilities_duration_formatted":"21m 17s" }, { "id":1515571200, "date":"2018-01-10", "productivity_pulse":33, "very_productive_percentage":21.9, "productive_percentage":2.3, "neutral_percentage":14.4, "distracting_percentage":11.0, "very_distracting_percentage":50.3, "all_productive_percentage":24.2, "all_distracting_percentage":61.4, "uncategorized_percentage":0.3, "business_percentage":0.0, "communication_and_scheduling_percentage":13.5, "social_networking_percentage":0.0, "design_and_composition_percentage":6.3, "entertainment_percentage":44.7, "news_percentage":4.2, "software_development_percentage":0.0, "reference_and_learning_percentage":15.5, "shopping_percentage":0.0, "utilities_percentage":15.4, "total_hours":2.24, "very_productive_hours":0.49, "productive_hours":0.05, "neutral_hours":0.32, "distracting_hours":0.25, "very_distracting_hours":1.13, "all_productive_hours":0.54, "all_distracting_hours":1.37, "uncategorized_hours":0.01, "business_hours":0.0, "communication_and_scheduling_hours":0.3, "social_networking_hours":0.0, "design_and_composition_hours":0.14, "entertainment_hours":1.0, "news_hours":0.09, "software_development_hours":0.0, "reference_and_learning_hours":0.35, "shopping_hours":0.0, "utilities_hours":0.34, "total_duration_formatted":"2h 14m", "very_productive_duration_formatted":"29m 22s", "productive_duration_formatted":"3m 8s", "neutral_duration_formatted":"19m 18s", "distracting_duration_formatted":"14m 48s", "very_distracting_duration_formatted":"1h 7m", "all_productive_duration_formatted":"32m 30s", "all_distracting_duration_formatted":"1h 22m", "uncategorized_duration_formatted":"27s", "business_duration_formatted":"1s", "communication_and_scheduling_duration_formatted":"18m 5s", "social_networking_duration_formatted":"no time", "design_and_composition_duration_formatted":"8m 30s", "entertainment_duration_formatted":"59m 54s", "news_duration_formatted":"5m 39s", "software_development_duration_formatted":"no time", "reference_and_learning_duration_formatted":"20m 51s", "shopping_duration_formatted":"no time", "utilities_duration_formatted":"20m 39s" }, { "id":1515484800, "date":"2018-01-09", "productivity_pulse":68, "very_productive_percentage":60.4, "productive_percentage":0.5, "neutral_percentage":11.0, "distracting_percentage":7.1, "very_distracting_percentage":21.0, "all_productive_percentage":60.9, "all_distracting_percentage":28.1, "uncategorized_percentage":9.1, "business_percentage":21.9, "communication_and_scheduling_percentage":7.2, "social_networking_percentage":5.1, "design_and_composition_percentage":1.2, "entertainment_percentage":1.6, "news_percentage":12.5, "software_development_percentage":9.1, "reference_and_learning_percentage":28.2, "shopping_percentage":2.9, "utilities_percentage":1.2, "total_hours":2.78, "very_productive_hours":1.68, "productive_hours":0.01, "neutral_hours":0.31, "distracting_hours":0.2, "very_distracting_hours":0.58, "all_productive_hours":1.69, "all_distracting_hours":0.78, "uncategorized_hours":0.25, "business_hours":0.61, "communication_and_scheduling_hours":0.2, "social_networking_hours":0.14, "design_and_composition_hours":0.03, "entertainment_hours":0.04, "news_hours":0.35, "software_development_hours":0.25, "reference_and_learning_hours":0.78, "shopping_hours":0.08, "utilities_hours":0.03, "total_duration_formatted":"2h 46m", "very_productive_duration_formatted":"1h 40m", "productive_duration_formatted":"47s", "neutral_duration_formatted":"18m 23s", "distracting_duration_formatted":"11m 49s", "very_distracting_duration_formatted":"34m 57s", "all_productive_duration_formatted":"1h 41m", "all_distracting_duration_formatted":"46m 46s", "uncategorized_duration_formatted":"15m 7s", "business_duration_formatted":"36m 26s", "communication_and_scheduling_duration_formatted":"11m 59s", "social_networking_duration_formatted":"8m 28s", "design_and_composition_duration_formatted":"2m 4s", "entertainment_duration_formatted":"2m 39s", "news_duration_formatted":"20m 49s", "software_development_duration_formatted":"15m 5s", "reference_and_learning_duration_formatted":"46m 59s", "shopping_duration_formatted":"4m 51s", "utilities_duration_formatted":"2m 3s" } ] 

النماذج


الصورة





يتم عرض البيانات الآن على الشاشة ، لقد حان الوقت لتصميم الإطار والمرآة. كل هذا يتوقف على تفضيلاتك. أخذت خشبًا خفيفًا ، لأنه مناسب أكثر لداخلي.

إذا كنت ترغب في اختيار تصميم إطار مختلف ، فهناك بعض الأدلة الممتازة:

https://www.instructables.com/id/Smart-Mirror-by-Raspberry-Pi/
https://www.instructables.com/id/Raspberry-Pi-Smart-Mirror/
https://www.instructables.com/id/Magic-Mirror/

أحجام الفراغات للإطار الخاص بي:

الجانب الأمامي:

  • 2 × 40 سم
  • 2 × 47 سم

الجانب الخلفي:

  • 2 × 38 سم
  • 2 × 50 سم

تجميع الإطار والمرآة


الصورة





بعض الملاحظات:

  • لبناء الإطار ، استخدمت غراء الخشب. بعد تثبيت المرآة في الإطار ، قمت أيضًا بلصق مثلثات خشبية في الزوايا لإصلاح المرآة. ولكن بعد ذلك أدركت أن هذا لم يكن الحل الأفضل ، لأنه بسبب المثلثات لا يضغط الإطار على الحائط.
  • قبل لصق الأجزاء ، اجمع كل شيء جافًا وتحقق من وجود فجوات حول الشاشة أو أي عيوب أخرى.

تجميع الإلكترونيات


















إذا كنت تقوم بإنشاء إصدار أساسي بدون مصابيح LED ، فيمكنك تخطي الخطوة المناسبة.

يتم أخذ مخططات التركيب والتركيب الخاصة بمصابيح LED من كتيبين مختلفين :

كيفية التحكم في شريط RGB LED باستخدام Raspberry Pi
وحدة تحكم Raspberry Pi PHP LED

ملاحظات مهمة :

لقد استخدمت هذه الدبابيس:

  • GPIO17 للسلك الأحمر.
  • GPIO22 للسلك الأخضر.
  • GPIO24 للسلك الأزرق.

إذا كنت تريد استخدام دبابيس أخرى ، فسيتعين عليك تغيير أرقامها في بداية index.php.

تحقق




يجب أن يعمل كل شيء بشكل جيد ، ولكنك تحتاج إلى الماوس ولوحة المفاتيح لتشغيل المتصفح وإدخال localhost.

1. قم بتشغيل محطة طرفية sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart : sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
2. ثم أدخل: chromium-browser --kiosk --incognito "http://localhost/index.php"

الآن يمكنك إيقاف تشغيل الماوس ولوحة المفاتيح. يجب أن يبدأ المتصفح ويفتح ملف index.php.

استكشاف الأخطاء وإصلاحها


لدي خطأ API
تفرض واجهات برمجة التطبيقات لدينا قيودًا على عدد النتائج. إذا سحبتهم كثيرًا ، فستحصل على خطأ. لحل هذه المشكلة ، أضف تأخير تحديث إلى index.php ، الافتراضي هو 360 ثانية.

#Seconds to refresh the webpage<br>$sec = "360";

المتصفح لا يفتح عند بدء التشغيل
في أنظمة التشغيل المختلفة ، يقع ملف التشغيل التلقائي في أماكن مختلفة. لقد استخدمت Raspbian GNU / Linux 8.0 Jessie ، لذا تحقق من مكان هذا الملف على نظام التشغيل الخاص بك.

توهج المصابيح بألوان مختلفة
يمكن أن يختلف توصيل شرائط LED ، ومن المؤكد أن اتصالات الألوان مختلطة. يمكنك إصلاح ذلك عن طريق لحام الأسلاك إلى جهات الاتصال الصحيحة. يمكنك أيضًا ضبط الألوان المميزة باستخدام قيم HEX في index.php.

if ($oran<50) { $led->setHex("#FF0000"); }else { $led->setHex("#00FF00"); }

هنا آلة حاسبة لون HEX لمساعدتك.

أريد استخدام رسومات أخرى
لقد طبقت مكتبة chart.js JS. إذا كنت ترغب في استخدام مخططات أخرى ، اقرأ الوثائق: http://www.chartjs.org/samples/latest/

ما هي الخطوة التالية


هناك العديد من الطرق لتحسين هذا المشروع. على سبيل المثال:

  • الشاشة أكبر : ثم يمكنك عرض المزيد من الرسوم البيانية ، أو ترك جزء من المنطقة تحت المرآة.
  • تكامل واجهات برمجة التطبيقات المختلفة : يتوفر اليوم عدد كبير من واجهات برمجة التطبيقات المختلفة (Twitter و Google وغيرها الكثير). توصلت إلى الفكرة مع واجهة برمجة تطبيقات Spotify لعرضها على المرآة أي الأغنية التي يتم تشغيلها حاليًا. فيما يلي قائمة لجلسة العصف الذهني: www.programmableweb.com/apis/directory
  • التحكم الصوتي Amazon Alexa : لدي مثل هذا الجهاز ، يمكنني التحكم في الضوء بمساعدة الصوت. يمكنك المسمار أليكس للتحكم في الرسوم البيانية على المرآة.

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


All Articles