Facebook отвлекает от работы? Блокируем его при помощи… настенного выключателя

в 16:19, , рубрики: diy или сделай сам, Raspberry, Блог компании Selectel, Лайфхаки для гиков, отключить интернет, Производство и разработка электроники, прокрастинация, Разработка на Raspberry Pi
Facebook отвлекает от работы? Блокируем его при помощи… настенного выключателя - 1

Прокрастинация хорошо знакома каждому из нас. Кто-то отлынивает от работы больше, кто-то меньше, но хотя бы раз в жизни прокрастинировали все. Один из способов убить время — серфить в сети, листая любимый сайт или общаясь в социальной сети.

Чтобы узнать количество потраченного напрасно времени, можно установить специализированное приложение, которое покажет, где, сколько и как пользователь провел времени в интернете. Ужаснувшись, обычный человек зачастую либо берет себя в руки, либо блокирует сайт при помощи конфигурационного файла или специального софта. Но мы же на Хабре, а значит, можно выбрать необычный способ. Сегодня мы будем делать троллейбус из буханки хлеба блокировщик сайтов с использованием Raspberry Pi.

В проекте задействуется обычный настенный выключатель и локальный DNS-сервер, запущенный на «малинке». Эта система позволяет надежно блокировать пожирателей времени. Один щелчок выключателем — и сайт не работает, можно посвятить свое время полезному труду. Второй щелчок — любимый ресурс снова онлайн.

Что нам понадобится для проекта

  • Raspberry Pi Zero W, SD Card, блок питания.
  • Два однополюсных выключателя.
  • Распределительная коробка.
  • Пластина с рычажками переключателей.
  • Провода.
  • Отвертки.

Начинаем работу с Raspberry Pi


1. Настраиваем Raspberry Pi Zero W и подключаемся удаленно.
2. Обновляем/устанавливаем git, если ранее это не было сделано:

sudo apt-get update && sudo apt-get install -y git

3. Копируем код из репозитория ниже. Он будет управлять инструментом dnsmasq, нашим локальным DNS:

git clone github.com/rydercalmdown/internet_kill_switch

4. Запускаем команду установки из клонированной директории. Этот шаг позволяет установить все зависимости, инструмент dnsmasq и убедиться, что все работает:

cd internet_kill_switch
make install

5. Убедиться в работоспособности кода просто. Если все хорошо, появится статус “Running” зеленым цветом:

sudo systemctl status dnsmasq
# Use Ctrl + C to exit

6. Запускаем ПО для того, чтобы окончательно убедиться в правильной работе установленного софта:

make run
# Use Ctrl + C to exit

7. Подключаем провода к выключателям. Понятно, что выключатель может быть и не такой. При желании можно приспособить кнопку или что-то еще:

Facebook отвлекает от работы? Блокируем его при помощи… настенного выключателя - 2

8. Свободные концы проводов припаиваем к «малинке». Порядок пинов не имеет значения. Главное, чтобы один конец был припаян к пину GPIO, второй — к «земле». По умолчанию нужны пины 18 и 24, но это можно настраивать.

Facebook отвлекает от работы? Блокируем его при помощи… настенного выключателя - 3

9. Помещаем «малинку» в выключатель. Он должен быть достаточно крупным, чтобы плата в него поместилась. Прикрепить плату можно нагретым силиконом.

Facebook отвлекает от работы? Блокируем его при помощи… настенного выключателя - 4

10. Пропускаем кабель питания через отверстие в переключателе и закрепляем оба выключателя в распределительной коробке.

Facebook отвлекает от работы? Блокируем его при помощи… настенного выключателя - 5

Facebook отвлекает от работы? Блокируем его при помощи… настенного выключателя - 6

11. После этого закрываем готовую конструкцию и наклеиваем под тумблерами наименование сайтов, которые будем блокировать.

12. Открываем файл src/toggle_switches.py для редактирования и добавляем необходимые адреса сайтов. Вы можете добавлять или удалять переключатели, изменяя список SWITCHES и добавляя новые объекты класса SwitchConfig. Допустимые параметры — это номер пина BCM, за которым следует список сайтов, которые нужно заблокировать:

# Example: The switch connected to BCM pin 18 blocks social media, and the switch connected to BCM pin 24 blocks video websites
SWITCHES = [
   SwitchConfig(18, ['facebook.com', 'instagram.com']),
   SwitchConfig(24, ['netflix.com', 'youtube.com', 'vimeo.com']),
]

13. Проверяем, как все работает. При запуске сервис показывает IP «малинки»:

cd ~/internet_kill_switch
make run
# IP Address is 10.0.0.25

14. Конфигурируем DNS, используя полученный IP. Это можно сделать на уровне роутера или в конфигурации операционной системы.

15. Проверяем работу нашего выключателя. Если все окей, то тумблером можно блокировать или активировать сайт.

Facebook отвлекает от работы? Блокируем его при помощи… настенного выключателя - 7

16. Теперь все подтверждаем, введя следующий код. Здесь вместо google.com вставляем ресурс, который хотим блокировать:

# When the switch is off
dig +short google.com
172.217.164.238
# When the switch is on
dig +short google.com
127.0.0.1

17. Редактируем файл /etc/rc.local file. Он определяет поведение системы после перезагрузки «малинки»:

sudo nano /etc/rc.local
# Add this line before the very last line
cd /home/pi/internet_kill_switch/src && sudo ../env/bin/python app.py &

18. Устанавливаем выключатель в любом удобном месте и наслаждаемся его работой.

Facebook отвлекает от работы? Блокируем его при помощи… настенного выключателя - 8

Проект очень простой, но фановый. Любому гику нечто подобное придется по душе. Систему можно менять/усложнять по своему вкусу. Если у вас есть идеи, как это сделать, поделитесь ими в комментариях, будет интересно!

Автор: Александр

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js