Мой путь: как я отказался от покупки noolite шлюза и заменил его своим велосипедом

в 15:33, , рубрики: diy или сделай сам, noolite, python, rasberry pi, Разработка на Raspberry Pi

Мой путь: как я отказался от покупки noolite шлюза и заменил его своим велосипедом - 1

История эта началась полтора года назад, когда ко мне в руки попали блоки управления освещением «noolite» (ну как попали, сам купил, есть у меня слабость к разного рода интересному железу). Тогда в моём распоряжении оказались два блока серии SB и адаптер MTRF-64. Блоки этой серии привлекли меня тем, что их можно внедрить в домашнюю проводку без её существенного переделывания: достал выключатель и вместо него всунул блок, а сам выключатель повесил на специально выведенные из блока провода. В такой конфигурации светом можно управлять как с радиоканала так и по классике — выключателем. Есть конечно и один минус: блоки этой серии не поддерживают обратную связь, а хотелось бы, ведь в MTRF-64 она есть, ну да ладно. А вот от покупки шлюза я тогда отказался в пользу адаптера, потенциально возможности его шире чем у шлюза.

Вдоволь наморгавшись люстрой, появилось желание привести это всё к какому-то общему знаменателю, но, видимо, другие интересные железяки это желание затмили, потому что блоки были отправлены в дальний ящик. Так бы они там и лежали если бы до недавнего времени я не обратил на них внимание точнее на неприлично толстый слой пыли на них.

Мой путь: как я отказался от покупки noolite шлюза и заменил его своим велосипедом - 2
Силовой блок SB-1-150 и MTRF-64

Тут же в моей голове всплыла картинка, в которой я выключаю свет перед сном не вставая с кровати, или одним нажатием кнопки использую сценарий «я ухожу», выключающий всё, что должно быть выключено в моё отсутствие.

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

Идея

Всё просто — управление светом и бытовыми приборами из любой точки дома. В качестве главного управляющего устройства выбрана Raspberry Pi модели B+ в связке с MTRF-64. В виду отсутствия опыта в разработке подобного рода приложений было решено начать с чего-то простого. Так я пришёл к реализации Telegram бота.

Мой путь: как я отказался от покупки noolite шлюза и заменил его своим велосипедом - 3
Raspberry Pi B+ и MTRF-64

Для себя я решил, что на первое время мне будет достаточно следующих функций бота:

  • Управление светом и бытовыми приборами;
  • Поддержка диммируемых устройств (свет, вытяжка и т.д.);
  • Распределение устройств по комнатам;
  • Поддержка сценариев, позволяющих быстро управлять группой устройств;
  • Добавление пользователей и распределение их по группам: хозяева (могут управлять устройствами в доме, имеют доступ к настройкам дома), гости (могут управлять устройствами в доме, не имеют доступа к настройкам дома), подписчики (ждут, пока хозяин пригласит их в дом).

Установка

Для начала скачаем операционную систему для нашего малинового пирога. Я предпочитаю официальный для этой платки Raspbian. Заливать образ на CD удобно при помощи утилиты Win32DiskImager.

Здесь меня ожидал маленький подвох

Дело в том что я привык работать с raspberry удалённо, но из-за того, что в последних версиях Raspbian по умолчанию закрыт доступ по SSH, мне пришлось с ней сблизиться использовать такой USB-UART переходник

Мой путь: как я отказался от покупки noolite шлюза и заменил его своим велосипедом - 4

1. Подключаем всё это дело и логинимся:

login: pi
password: raspberry

2. Приступая к работе, желательно убедиться, что используются свежие версии программ. Вы можете подумать: мы же только что скачали дистрибутив, куда уж свежее? А нет…

sudo apt-get update 
sudo apt-get -y dist-upgrade

3. Ставим менеджер пакетов pip3 и git:

sudo apt-get install -y python3-pip git

4.Скачиваем нужные для работы бота библиотеки. Я использую библиотеку pyTelegramBotAPI, которая берет на себя все нюансы отправки и получения HTTP запросов, позволяя сконцентрироваться непосредственно на логике:

sudo pip3 install pytelegrambotapi pyserial

5. Скачиваем бота:

sudo git clone https://github.com/DZimasik/nooBot.git

Прежде чем запускать бота, необходимо его зарегистрировать, т.е. получить его уникальный id (токен). Поможет нам это сделать другой специальный бот — @BotFather. Просто отправляем ему /newbot и он просит придумать имя нашему новому боту, это имя будет высвечиваться в списке контактов Telegram. Далее BotFather предлагает придумать уникальный username бота. Единственное ограничение — username должен оканчиваться на «bot». Username так же используется для поиска бота среди множества других.

В принципе для старта этого достаточно. Некоторые перфекционисты здесь же могут задать боту аватар или написать приветственное сообщение. После того как всё введено, BotFather вернёт токен:

Мой путь: как я отказался от покупки noolite шлюза и заменил его своим велосипедом - 5

6. Добавим токен в файл config.py

sudo nano /home/pi/nooBot/config.py

token = 'Ваш_токен' # Insert your token from BotFather

7. Наконец можно запустить бота:

sudo python3 /home/pi/nooBot/noobot.py

Отправляем нашему боту /start. Если токен введён правильно появится клавиатура и мы увидим сообщение:

Мой путь: как я отказался от покупки noolite шлюза и заменил его своим велосипедом - 6

План на будущее

На данном этапе я управляю светом в спальне и зале, но в дальнейшем планирую докупить ещё силовых блоков (на этот раз с обратной связью) и перевести всё своё освещение на дистанционное управление. Так же в планах добавить боту поддержку обратной связи для того, что-бы можно было узнавать состояния устройств и параметры датчиков в доме, находясь вне него.

На этом пока все. Буду рад услышать ваше мнение. Всем добра!

Полезные ссылки:

Автор: DZimasik

Источник

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


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