![](https://habrastorage.org/webt/ws/kw/xk/wskwxkd5zxzru5vksii2n16rwpi.jpeg)
История эта началась полтора года назад, когда ко мне в руки попали блоки управления освещением «noolite» (ну как попали, сам купил, есть у меня слабость к разного рода интересному железу). Тогда в моём распоряжении оказались два блока серии SB и адаптер MTRF-64. Блоки этой серии привлекли меня тем, что их можно внедрить в домашнюю проводку без её существенного переделывания: достал выключатель и вместо него всунул блок, а сам выключатель повесил на специально выведенные из блока провода. В такой конфигурации светом можно управлять как с радиоканала так и по классике — выключателем. Есть конечно и один минус: блоки этой серии не поддерживают обратную связь, а хотелось бы, ведь в MTRF-64 она есть, ну да ладно. А вот от покупки шлюза я тогда отказался в пользу адаптера, потенциально возможности его шире чем у шлюза.
Вдоволь наморгавшись люстрой, появилось желание привести это всё к какому-то общему знаменателю, но, видимо, другие интересные железяки это желание затмили, потому что блоки были отправлены в дальний ящик. Так бы они там и лежали если бы до недавнего времени я не обратил на них внимание
![](https://habrastorage.org/webt/fh/2i/9p/fh2i9p91tww9bse_zpghssh91sy.jpeg)
Силовой блок SB-1-150 и MTRF-64
Тут же в моей голове всплыла картинка, в которой я выключаю свет перед сном не вставая с кровати, или одним нажатием кнопки использую сценарий «я ухожу», выключающий всё, что должно быть выключено в моё отсутствие.
Наконец, было решено действовать. Почему я стал клепать свой велосипед а не купил готовую систему сразу? Просто потому, что хотел сделать что-то своими руками. Вы ведь знаете это чувство, когда ты что-то собрал, а оно — работает. Плюс ко всему, я наконец на примере реального проекта начинаю изучение какого-нибудь объектно-ориентированного языка (выбрал python 3).
Идея
Всё просто — управление светом и бытовыми приборами из любой точки дома. В качестве главного управляющего устройства выбрана Raspberry Pi модели B+ в связке с MTRF-64. В виду отсутствия опыта в разработке подобного рода приложений было решено начать с чего-то простого. Так я пришёл к реализации Telegram бота.
![](https://habrastorage.org/webt/uf/yb/zs/ufybzsoaag50snrbeosyotbq9lk.jpeg)
Raspberry Pi B+ и MTRF-64
Для себя я решил, что на первое время мне будет достаточно следующих функций бота:
- Управление светом и бытовыми приборами;
- Поддержка диммируемых устройств (свет, вытяжка и т.д.);
- Распределение устройств по комнатам;
- Поддержка сценариев, позволяющих быстро управлять группой устройств;
- Добавление пользователей и распределение их по группам: хозяева (могут управлять устройствами в доме, имеют доступ к настройкам дома), гости (могут управлять устройствами в доме, не имеют доступа к настройкам дома), подписчики (ждут, пока хозяин пригласит их в дом).
Установка
Для начала скачаем операционную систему для нашего малинового пирога. Я предпочитаю официальный для этой платки Raspbian. Заливать образ на CD удобно при помощи утилиты Win32DiskImager.
Здесь меня ожидал маленький подвох
Дело в том что я привык работать с raspberry удалённо, но из-за того, что в последних версиях Raspbian по умолчанию закрыт доступ по SSH, мне пришлось с ней сблизиться использовать такой USB-UART переходник
![](https://habrastorage.org/webt/8w/vo/pf/8wvopf1oe-x0e_jjeell9qznmfo.jpeg)
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 вернёт токен:
![](https://habrastorage.org/webt/bb/0j/v_/bb0jv_84fi5o3caqqrgweyk2j6i.png)
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. Если токен введён правильно появится клавиатура и мы увидим сообщение:
![](https://habrastorage.org/webt/na/2u/8i/na2u8igmpwxb5bxnnqy6t9w2wze.png)
План на будущее
На данном этапе я управляю светом в спальне и зале, но в дальнейшем планирую докупить ещё силовых блоков (на этот раз с обратной связью) и перевести всё своё освещение на дистанционное управление. Так же в планах добавить боту поддержку обратной связи для того, что-бы можно было узнавать состояния устройств и параметры датчиков в доме, находясь вне него.
На этом пока все. Буду рад услышать ваше мнение. Всем добра!
Полезные ссылки: