Настенный календарь и центр уведомлений для всей семьи на базе Raspberry Pi

Настенный календарь и центр уведомлений для всей семьи на базе Raspberry Pi

Раньше, в «доцифровую» эпоху в каждой семье на стене висел календарь, где отмечались разные предстоящие события. Но сейчас в семье у каждого по смартфону и у нас появилась необходимость в подобном календаре, в котором бы показывалось расписание событий каждого члена семьи. Лучшим выходом в этой проблеме стал настенный календарь и центр уведомлений для всей семьи на базе Raspberry Pi.

Raspberry Pi это компактный компьютер, помещающийся у вас на ладони. Ни смотря на свой скромный размер на его базе было построено огромное множество устройств — от мультимедиа центров до беспилотных летательных аппаратов.

Но вернемся к нашему календарю. Его основные функции:

  • Месячный распорядок дел
  • Синхронизация дел с мобильными устройствами членов семьи
  • Легкая навигация между месяцами
  • Прогноз погоды
  • Предстоящие события в окружающей местности
  • Живая информация о общественном транспорте (взятая с сайта мониторинга автобусов и трамваев нашего города)
  • И ещё многое…

Шаг 1. Календарь на базе Raspberry Pi. Железо.

Теперь о том, что делать с железом.

  1. Найдите экран от сломанного ноутбука (можно купить недорого на авито), затем закажите на ebay или aliexpress  контроллер дисплея под ваш экран. Это несложно, поверьте. Нужно лишь вбить модель своего экрана в поиск и подобрать подходящую плату.
  2. Вам понадобится кусок деревянной доски, толщиной не менее 30 мм. Ширина и высота зависит от размеров вашей ноутбучной матрицы. Не забудьте прибавить еще по 10 мм с каждой стороны. Вам нужно будет сделать выемки под размещаемую внутри электронику и просверлить отверстия под кнопки  и провода.
  3. Прикрутите экран ноутбука к деревянному основанию. Я использовал для этого оригинальные крепления.
  4. Вырежьте из листа пробки (обычно используется как подложка для ламината) толщины, примерно как ваш экран, кусок и приклейте его клеем на наше деревянное основание.
  5. Установите кнопки на передней панели. Используйте большое сверло и дрель, будьте аккуратны и используйте защиту для глаз.
  6. Соедините электронику. Все устройства на базе Raspberry Pi очень просты в освоении. Подсоедините три из четырех кнопок на передней панели к пинам GPIO под номерами 19, 20 и 21  и к земле. Найдите пин на вашем контроллере дисплея, отвечающий за включение\выключение дисплея и подключите его к четвертой кнопке. И наконец подключите кабель HDMI от вашего контроллера дисплея до Raspberry Pi и подключите сам дисплей к контроллеру.

Шаг 2. Софт.

Настройка заключается в том, что нам нужно перевести работу в режим киоска. Операционная система загружается и запускает вебсайт в полноэкранном режиме. Кнопки позволяют выполнять взаимодействие с вебсайтом.

Подробнее:

  1. Установите Raspbain на RaspberryPi (https://www.raspberrypi.org/documentation/installation/noobs.md). Raspbain это старый добрый Debian, сделанный на базе Raspberry Pi.
  2. Зарегистрируйтесь в Google Calendar (https://calendar.google.com/), добавьте ваши предстоящие события. Попросите доступ к календарям ваших членов семьи. Либо заведите один общий календарь. Сделайте ваш календарь более динамичным добавив другие публичные календари (например государственные праздники), события в Фейсбуке, прогноз погоды.
  3. Настройте вебсервер и создайте вебстраницу, которая будет загружаться при запуске системы.
  4. Установите веб-браузер (Firefox например) и настройте дизайн календаря.
  5. Настройте кнопки.

Ниже я даю информацию о пунктах 3-5.

Шаг 3. Создаем вебсервер и страницу.

Вебстраница будет содержать всю информацию, которую мы захотим отобразить. Она может быть заполнена любой информацией. У Календаря от гугла есть встроенная система генерации кода для календаря, для встраивания на вебсайты. Вот именно ей мы и воспользуемся. Есть хорошее видео, которое показывает как нам сгенерировать код нашего календаря, правда оно на английском но всё понятно и без переводчика. 

Календарь гугла имеет свои клавиатурные комбинации. Нажмите N чтобы перейти к следующему месяцу, нажмите P чтобы перейти к предыдущему. Правда они работают только тогда, когда фрейм календаря находится в фокусе. Но в моей вебстраничке это учтено.

Примерный код страничке можно скачать тут. Некоторые куски кода я заменил на «*___REPLACED___*» потому, что они содержать мои личные данные (мой календарь). Чтобы заменить их, используйте код, сгенерированный гуглом.

Вам нужно будет запустить на своем Raspberry Pi вебсервер. Документация по этому моменту можно найти по ссылке https://www.raspberrypi.org/documentation/remote-access/web-server/apache.md. Затем вам нужно у скачанного файла изменить расширение с «.html.txt» на «.html» и заменить им файл, находящийся на вашем вебсервере по пути /var/www/html/index.html. Сделать это можно консольной командой вроде этой:

sudo cp index.html /var/www/html/index.html

Шаг 4. Устанавливаем веб-браузер и изменяем внешний вид страницы.

Существует большое количество браузеров, но нам нужен тот, который соответствует нескольким условиям: 1) Поддерживает современную версию Google Calendar, 2) Может запускаться в полноэкранном режиме, 3) поддерживает подстановку внешних CSS.

Внешние CSS позволяют изменить дизайн календаря именно так, как нужно нам. Этим требованиям соответствует браузер Iceweasel (Firefox для Linux). Видео об установке Iceweasel на Raspberry Pi 

Затем установите расширение Stylish https://addons.mozilla.org/en-US/firefox/addon/stylish/.

Откройте вкладку расширения Stylish и измените CSS так, как вам бы это нравилось. Вы можете использовать мой файл CSS как пример. Вот он.

Далее нам нужно настроить автозапуск браузера и отрытие нашей страницы после запуска системы. Напишите это в терминале

cd /home/pi//.config/autostart

nano cal.desktop
Затем вставьте в файл следующие строки:

[Desktop Entry]

Type=Application

Name=hemsida

Exec=iceweasel localhost

StartupNotify=false

Сохраните файл и выйдите.

Шаг 5. Настраиваем кнопки.

Кнопки используются для того, чтобы листать календарь вперед\назад. По умолчанию это делается с помощью клавиш P и N  на клавиатуре. Таким образом нам нужно эмулировать нажатия этих клавиш.

Для начала сделайте скрипт на Pyton»е по этой документации.

Скачайте и установите python-uinput, библиотека, позволяющая создавать виртуальные клавиатуры. Ссылка на него: http://tjjr.fi/sw/python-uinput/.

Скачайте мой скрипт на Python https://www.dropbox.com/s/76xbk3ohey8hjhh/switch.py?dl=0.

Поместите uinput-API и скрипт в одно и то же место. Добавьте скрипт в автозагрузку.

Вот и всё! Настенный календарь на базе Raspberry Pi очень облегчит задачу организации согласованных действий в семье, да и просто украсит вашу гостиную или холодильник. Этот проект позволил мне попрактиковаться в настройке устройств на базе Raspberry Pi.

Comments
  1. stranger_812
    • OlegR
  2. stranger_812

Комментарии