Оглавление:

Трекер производительности - на базе Raspberry Pi: 9 шагов (с изображениями)
Трекер производительности - на базе Raspberry Pi: 9 шагов (с изображениями)

Видео: Трекер производительности - на базе Raspberry Pi: 9 шагов (с изображениями)

Видео: Трекер производительности - на базе Raspberry Pi: 9 шагов (с изображениями)
Видео: Вывод изображения с Arduino и ESP32 на монитор 2024, Ноябрь
Anonim
Трекер производительности - на базе Raspberry Pi
Трекер производительности - на базе Raspberry Pi
Трекер производительности - на базе Raspberry Pi
Трекер производительности - на базе Raspberry Pi
Трекер производительности - на базе Raspberry Pi
Трекер производительности - на базе Raspberry Pi

Трекер продуктивности - это волшебное зеркало, но вместо отображения времени, погоды и мотивирующей цитаты он отображает 4 вещи;

Процент времени, которое вы потратили на продуктивный материал на своем компьютере и телефоне в этот день (RescueTime)

Ваш список дел из Trello

Радарный график, показывающий, сколько времени вы потратили вместе с категориями программ-приложений, которые вы использовали, по сравнению с использованием вчера. (RescueTime)

Еженедельный обзор. (RescueTime)

И если процент времени, которое вы потратили на продуктивный материал, превышает 50%, светодиоды будут отображать ярко-зеленый цвет. Если он ниже 50%, он будет отображаться красным цветом, сигнализируя о необходимости работать более продуктивно! Вы также можете сами поставить перед собой цель.

Контур

На первом этапе я объясню идею трекера продуктивности. Далее я дам вам два разных инструмента и список деталей, чтобы вы могли создать полный проект или базовую версию (без светодиодов), которая не требует навыков пайки. Позже я покажу вам, как я создал прототип своей версии проекта, чтобы у вас было представление о том, как смоделировать свой собственный прототип. Кроме того, я подробно расскажу о разделе кода, чтобы вы могли настроить код под свои нужды. В конце я дам вам руководство по устранению неполадок, основанное на проблемах, с которыми я столкнулся во время этой сборки. И расширьте список своими вопросами.

Цель этого руководства - не просто дать вам поваренную книгу. Я покажу вам, как я создал этот проект, и предоставлю вам открытые вопросы, чтобы вы могли добавить свои собственные идеи и развить этот проект еще дальше. Я настоятельно рекомендую вам поделиться своей сборкой, когда она будет готова! Давайте начнем.

Шаг 1. Идея

Идея
Идея

Я собирался написать это руководство в течение нескольких месяцев. Но мой старый друг по прозвищу «Прокрастинация» не позволил мне. Прокрастинация - это откладывание или откладывание задачи или набора задач, вместо того, чтобы выполнять эти задачи, заполняя время просмотром видео из темных глубин YouTube.

Однажды, читая статью о прокрастинации, я наткнулся на несколько приложений / программ, которые помогли бы мне решить мою проблему: Trello как приложение для управления задачами и RescueTime как приложение для управления временем. Оба отлично работали для моих нужд, по крайней мере, какое-то время. Через некоторое время я вообще перестал проверять приложения и проигнорировал уведомления. Тогда я и придумал этот проект. Я бы отображал данные из приложений на зеркале, висящем на стене. Таким образом, я не мог уйти от своих обязанностей.

Первый набросок, который я нарисовал для своего проекта, был довольно простым. Я бы использовал RescueTime API для отображения процента своей продуктивной / отвлекающей работы. И используйте Trello API, чтобы отобразить мой список дел на день. Но через некоторое время я добавил больше функций, о которых подробно расскажу в следующих шагах.

Шаг 2: Инструменты и запчасти

Примечание: это список инструментов, которые я использовал во время сборки, они не обязательно должны быть одинаковыми для вашей сборки!

Для базы:

4 метра плеера 7x15 см - 6 $ - Зависит от размера вашего экрана

Одностороннее зеркало 30x40 см - зависит от размера вашего экрана

Монитор Самсунг 25х35см - 15 $ - Найден на барахолке. любой монитор подойдет

Raspberry Pi 3 Model B- 35 $ - Raspberry pi 2 тоже подойдет, но вам понадобится модуль Wi-Fi

Кабель HDMI - 2 $

Для светодиодной молнии:

200см smd5050 RGB Led strip - 4 $ - Это должно быть smd5050, подробнее об этом позже …

  • Три N-канальных MOSFET (например, IRLZ34N) - 2 $
  • Адаптер питания 12В-2А - 3.15 $
  • Изготовление прототипа печатной платы - 1 $

Инструменты:

  • Пила по дереву
  • Клей для дерева
  • Паяльник (для светодиодного освещения)

Шаг 3: Код

Код
Код

Этот шаг состоит из 3 частей, вам не нужны все части, перечисленные в предыдущем шаге. Raspberry Pi и монитора, который вы будете использовать для этого проекта, должно быть достаточно для стадии прототипирования.

Настройка вашего Raspberry Pi

Если вы еще не установили Raspberry Pi, сделайте это здесь. Для этой сборки вам необходимо установить Apache для веб-сервера и PHP-LED-контроллер.

Чтобы установить Apache, следуйте этому официальному руководству.

Чтобы установить PHP-LED-контроллер, следуйте этому руководству Кристиана Никканена.

Теперь загрузите файл index.php из репозитория проекта в Raspberry Pi и поместите его по этому пути:

/ var / www / html /

Если вы не знакомы с перемещением файлов в Терминале Linux, вы можете ознакомиться с этим руководством, чтобы начать работу.

Настроить код

Примечание. Эта часть требует немного знаний HTML / CSS, если вы используете другой монитор.

Настройка будет выполнена в файле index.php, который является основой этой сборки. Теперь подключите монитор к Raspberry Pi, если вы еще этого не сделали.

Теперь, если вы попытаетесь открыть файл index.php, это не сработает, потому что вам сначала нужно заполнить ключи API в коде, для этого перейдите на веб-сайт RescueTime и откройте учетную запись. Затем перейдите в раздел разработчика и создайте ключ API, нажав «Активировать этот ключ». Напишите куда-нибудь свой ключ API.

Сделайте то же самое для своего ключа API Trello, откройте учетную запись и перейдите на портал разработчика, чтобы сгенерировать ключ API.

Затем откройте файл index.php, который вы поместили в / var / www / html / в вашем любимом текстовом редакторе, и замените [API_KEY] своим собственным ключом API, полученным от RescueTime и Trello соответственно. [List_number] - это номер списка, который вы используете для своего списка дел Trello. Чтобы получить этот номер, сначала создайте новый список в Trello и назовите его «To-Do», это будет список, который вы будете использовать для своего списка дел, и он появится на зеркале.

Затем возьмите URL-адрес в адресной строке, который выглядит так:

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

и добавьте к нему.json вот так:

trello.com/b/3hS6yyLo/board-name.json

и нажмите Enter, затем вы увидите на экране беспорядок с кодом. Попытайтесь найти в этом беспорядке название вашего списка "To-Do". Оно должно выглядеть примерно так: {"name": "To Do", "id": "5981c123cd1b23f13907cd18"}, этот Id - это ваш идентификатор списка. этот номер в [list_number] в файле index.php.

Теперь откройте браузер, введите localhost в адресную строку и нажмите клавишу ВВОД. Вы должны увидеть свои данные на графиках.

Примечание. Размещение графиков может отличаться из-за разрешения монитора, который вы используете. Вы можете редактировать ширину, высоту и расположение элементов в части кода CSS.

Теперь осталось только создать коробку вокруг монитора и подключить светодиоды.

Примечание. Если вас не интересуют подробности API, вы можете перейти к следующему шагу. В части, посвященной API, я подробно расскажу, как вся программа работает и получает данные из API.

API (подробно)

Сердце этого проекта - два API;

  • Trello API
  • RescueTime API

Хотя в документации доступна подробная информация, я собираюсь объяснить, какие данные из API использует этот проект.

Что касается управления временем, вызов API RescueTime, который получает информацию о времени для текущего дня:

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

куда, date ('Y-m-d') - текущая дата

перспектива = ранг - это тип сортировки данных, в данном случае "ранг" означает большую часть затраченного времени.

Этот вызов даст файл в формате JSON, который выглядит следующим образом: (посмотрите на data.json в конце этого шага)

Данные, которые мы используем из этого файла, - это «Затраченное время (секунды)» и «Производительность», которые имеют значения от -2 до 2, -2 - отвлекающие, а 2 - продуктивные. С этими данными мы можем получить значение более 100 для оценки производительности.

Другой вызов API RescueTime, "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": "Изучите GitHuB"}, {"id": "5981c1952677c7 ":" Опубликовать инструкцию "}, {" id ":" 5a341dba7f17d235d7c5bbd1 "," name ":" SPACE PROGRAM "}]

опять же, вы можете вытянуть текст на этих карточках и поместить его в другое место.

data.json

Форматированные данные JSON
{
«примечания»: «данные - это массив массивов (строк), имена столбцов для строк в row_headers»,
"row_headers": [
"Классифицировать",
"Затраченное время (секунды)",
"Число людей",
"Деятельность",
"Категория",
«Производительность»
],
"строки": [
[
1,
1536,
1,
"en.0wikipedia.org",
"Без категории",
0
],
[
2,
1505,
1,
"youtube.com",
"Видео",
-2
],
[
3,
1178,
1,
"OpenOffice",
"Пишу",
2
],
[
4,
709,
1,
"moodle.bilkent.edu.tr",
"Общие справочные материалы и обучение",
2
],
[
5,
602,
1,
"google.com.tr",
"Поиск",
2
],
[
6,
439,
1,
"reddit.com",
"Общие новости и мнение",
-2
],
[
7,
437,
1,
"tr.sharelatex.com",
"Пишу",
2
],
[
8,
361,
1,
"yemeksepeti.com",
«Обычные покупки»,
-2
],
[
9,
356,
1,
"Gmail",
"Эл. адрес",
0
],
[
10,
328,
1,
"Гугл Хром",
"Браузеры",
0
],
[
11,
207,
1,
"stars.bilkent.edu.tr",
«Общие справочные материалы и обучение»,
2
],
[
12,
179,
1,
"WhatsApp",
"Мгновенное сообщение",
-1
],

просмотреть rawdata.json, размещенный на ❤ на GitHub

summary.json

[
{
"id": 1515657600,
"date": "2018-01-11",
"performance_pulse": 54,
"very_productive_percentage": 34,2,
"production_percentage": 10,6,
"нейтральный_процент": 25,6,
«отвлекающий_процент»: 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,
«производительные_часы»: 0,27,
«нейтральные_часы»: 0,64,
«отвлекающие_часы»: 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": "2ч 30м",
"very_productive_duration_formatted": "51м 26с",
"productive_duration_formatted": "15 мин. 56 сек.",
"нейтральный_дурация_форматед": "38м 34с",
"distracting_duration_formatted": "нет времени",
"very_distracting_duration_formatted": "44 мин 30 с",
"all_productive_duration_formatted": "1ч 7м",
"all_distracting_duration_formatted": "44 мин 30 с",
"uncategorized_duration_formatted": "24м 11с",
"business_duration_formatted": "9м 6с",
"communication_and_scheduling_duration_formatted": "6м 26с",
"social_networking_duration_formatted": "нет времени",
"design_and_composition_duration_formatted": "нет времени",
"entertainment_duration_formatted": "22 мин. 49 сек.",
"news_duration_formatted": "4 мин. 55 сек.",
"software_development_duration_formatted": "8 м 3 с",
"reference_and_learning_duration_formatted": "34 м 17 с",
"shopping_duration_formatted": "19м 22с",
"utilities_duration_formatted": "21 мин 17 с"
},
{
"id": 1515571200,
"date": "2018-01-10",
"performance_pulse": 33,
"very_productive_percentage": 21,9,
"production_percentage": 2.3,
"нейтральный_процент": 14,4,
«отвлекающий_процент»: 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,
«производительные_часы»: 0,05,
«нейтральные_часы»: 0,32,
"отвлекающие_часы": 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": "2ч 14м",
"very_productive_duration_formatted": "29м 22с",
"productive_duration_formatted": "3 м 8 с",
"нейтральный_дурация_форматед": "19 мин 18 с",
"distracting_duration_formatted": "14 мин 48 с",
"very_distracting_duration_formatted": "1ч 7м",
"all_productive_duration_formatted": "32 мин 30 с",
"all_distracting_duration_formatted": "1ч 22м",
"uncategorized_duration_formatted": "27 с",
"business_duration_formatted": "1 с",
"communication_and_scheduling_duration_formatted": "18m 5s",
"social_networking_duration_formatted": "нет времени",
"design_and_composition_duration_formatted": "8 мин 30 с",
"entertainment_duration_formatted": "59 мин. 54 сек.",
"news_duration_formatted": "5 мин 39 с",
"software_development_duration_formatted": "нет времени",
"reference_and_learning_duration_formatted": "20 мин. 51 с",
"shopping_duration_formatted": "нет времени",
"utilities_duration_formatted": "20 мин 39 с"
},
{
"id": 1515484800,
"date": "2018-01-09",
"performance_pulse": 68,
"very_productive_percentage": 60,4,
"production_percentage": 0,5,
"нейтральный_процент": 11,0,
«отвлекающий_процент»: 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,
«продуктивные_часы»: 0,01,
«нейтральные_часы»: 0,31,
"отвлекающие_часы": 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": "2ч 46мин",
"very_productive_duration_formatted": "1 час 40 минут",
"production_duration_formatted": "47 с",
"нейтральный_дуратион_форматед": "18м 23с",
"distracting_duration_formatted": "11 мин. 49 сек.",
"very_distracting_duration_formatted": "34 мин 57 с",
"all_productive_duration_formatted": "1ч 41м",
"all_distracting_duration_formatted": "46 мин. 46 с",
"uncategorized_duration_formatted": "15 мин. 7 с",
"business_duration_formatted": "36м 26с",
"communication_and_scheduling_duration_formatted": "11 мин 59 с",
"social_networking_duration_formatted": "8м 28с",
"design_and_composition_duration_formatted": "2 м 4 с",
"entertainment_duration_formatted": "2 мин. 39 сек.",
"news_duration_formatted": "20 мин. 49 сек.",
"software_development_duration_formatted": "15 м 5 с",
"reference_and_learning_duration_formatted": "46 мин 59 с",
"shopping_duration_formatted": "4 мин. 51 с",
"utilities_duration_formatted": "2 м 3 с"
}
]

просмотреть rawsummary.json, размещенный на ❤ на GitHub

Шаг 4: прототипирование

Главный приз конкурса Raspberry Pi 2017

Рекомендуемые: