Задача
Обойти роутер noolite и управлять освещением noolite быстро, качественно и без использования домашнего сервера. Глобальная децентрализация и тотальное использование облачных решение в домашних устройствах и интернет вещах. Что?..
Всем привет!
Снова я со своим лаптем и сказом о том, как побороть дорогой роутер noolite, начать управлять освещением и не заморачиваться на пайке плат, контроллеров и вообще — хочу так, что бы включил установил приложение и оно работало без дополнительных танцев.
Да… об этом пишут все, но мало кто делает, так как зачастую все решения упираются в сложные инструкции. А я Вам покажу, сейчас :) — ну вперед друзья!
Все кто покупал noolite блоки освещения, все упирались в следующие проблемы. Давайте прямо и начистоту:
1. я воткнул, ок! а дальше что? как управлять модными блоками, а они ещё и какие то с шифрованием и обратной связью появились (статья)
2. ага… они хотят Ethernet шлюз… за xxx зеленых… чтобы управлять — ОК! а приложение? есть да...?! хорошо вперед
3. я начал управлять — но как то дорого… это же освещение, хочу вот что бы круто а ещё хочу сценарии — а где их взять? (в конце статья мега бонус по сценариям!) ещё надо и домашний сервер :( — все это в конце приводит к затратам и уже… не очень бюджетно.
Вот такие (или подобные) пункты и тормозят пользователей в расширении домашней автоматизации.
Задача ясна: надо упростить жизнь и сделать её удобной — теперь давайте попробуем решить её, прибегая к радикальным методам. Убираем домашний сервер, убираем noolite Ethernet шлюз.
(смех команды noolite)
Остаются блоки управления освещением и… пользователь.
(тут должна быть картинка одного пользователя в поле :) с блоком noolite)
Чтобы начать управлять этими блоками — нам надо подумать над применяемыми технологиями в первую очередь, а потом понять, какое железо поможет это нам сделать.
В последнее время, очень популярен протокол передачи данных: MQTT — да, это крутой и очень удобный протокол передачи данных. Мы с командой энтузиастов извращенцев разработали приложение для этого протокола, которое помогает Android пользователям (iOS билд и windows phone в процессе доставки на рынки). Ссылка на приложение в конце статьи, не сочтите за пиар ;) — да ладно — это пиар :D — но нам надо хорошее приложение, которое поможет нам сделать мир круче. MQTT крут — ДА!
Берем MQTT протокол — здорово. Приложение для него есть — отлично. Теперь внимание: вопрос на засыпку :) — какое железо поддерживает MQTT? — ДА, все в один голос сказали: конечно же E-S-P 8266.
Варим борщ дальше и помешивания добавленные ингредиенты, заходим в гости в noolite на сайт и смотрим, что у них вообще там с модулями связи… о!
Так у них есть модули для связи с этими блоками. Нам нужна только экзотика. Почему? Да потому, что у нас нет ни домашнего сервера, ничего кроме блоков и понятия «децентрализация». Ох… предвкушаю споры и крики — ну да ладно, кармой мне по голове — идем дальше!
Смотрим, на сайте — и видим — 2 модуля: MTRF64 USB и MTRF64 -так так, один USB, второй просто UART. Ну вот и нашли решение :) — так как USB для компьютеров да и питание там под 5V — а тут сам господин uart да ещё и 3.3V адаптированный — красотень.
(картинка noolite SLF-1-300)
2. MTRF64 UART модуль (который стоит дешевле чем USB, за счет отсутствия чипа по работе с USB! упрощен до «плинтусного» состояния ;) )
(картинка MTRF64 UART)
3. ESP8266 модуль
(картинка ESP8266)
3. приложение для работы с MQTT (MQTT Buddy)
(картинка)
Теперь надо упростить жизнь и дать Вам код для души — именно. Кто хочет сидеть и писать много кода, тем более с MTRF64 надо в доки лезть, а там… там много полезного (ссылка) — но нам надо быстро и качественно. Open Source от нашей команды — welcome :D > GitHub
Также нам надо подготовить ESP8266 — кто «прожигал её» — знает, это не сложно — 2 минуты и у Вас все будет работать.
Готовимся и взлетать!
— качаем прошивку можно с сайта (https://nodemcu-build.com), можно взять прямо из репозитория github, который предоставлен со всем кодом
— прожигаем ESP8266 командой:
sudo python esptool.py --port /dev/ttyUSB0 write_flash -fm dio -fs 32m 0x00000 {your_nodemcu_firmware.bin}
— проверяем, что esp8266 подключена как /dev/ttyUSB0
— проверяем, что {your_nodemcu_firmware.bin} Вы заменили на название вашей прошивки
— если нет esptool (качаем тут ;))
— Берем ESP8266 dev board — и прожигаем её, «жгем» по полной!
Теперь внимание, берем и скачиваем готовый код: рабочий.
Ссылка на GitHub repository: mqtt_buddy-mtrf64-noolite-esp8266 — код разработан Дмитрием Карабой (выражаю ему огромное спасибо!).
Код специально перезалит из закрытой репозитории нашей компании XIM, INC — в открытую public для свободного скачивания.
-- Credentials
SSID = "YOUR SSID NAME"
PASSWORD = "YOUR PASSWORD"
MQTT_SERVER = "m21.cloudmqtt.com"
MQTT_SERVER_PORT = 16487
MQTT_USER = "noo"
MQTT_PASS = "noo"
Заливаем код на ESP8266 через ESPLORER инструмент.
esp8266 D8 tx — MTRF64 TX
esp8266 GND — MTRF64 GND
esp8266 3V3 — MTRF64 3V3
(фото подключения)
Как только Вы залили код на esp8266 — после перезагрузки, Вы не сможете достучаться до неё и что-то поменять (код) — необходимо снова перезаписывать прошивку. Почему? потому что, esp8266 переходит автоматически на соединение UART9600 и начинает общаться с модулем MTRF64. В коде используется альтернативное подключение uart через пины d7d8, основные RX,TX пины свободня для работы. Вы легко можете внести свои условия «прерывания» перехода на uart9600 для общения с MTRF64 — так как это не было нашей целью и основной задачей.
Что мы сделали и как это работает
Модуль mtrf64 подключен по UART с esp8266, которая в свою очередь выходит в интернет через Ваш роутер и подключается к MQTT бесплатному брокеру. С другой стороны — Вы, как пользователь, через мобильное приложение так же подключаетесь к этому облачному брокеру и начинаете посылать команды в MQTT каналы, которые в свою очередь «разбираются» на лету и в зависимости от команды — передаются по UART MTRF64 модулю! Да! вот так мы круто завернули и бюджетненько! Да! Это чертовски круто, когда понимаешь, что выстроил четкую логическую цепочку технологий, которые работают на тебя. Спасибо ;)
Управление
Идем дальше: мы подключились и что дальше? Как управлять ;) — все просто! Сливаем нашу аппу MQTT Buddy с Google Play (ссылка в конце статьи) и добавляем туда брокер MQTT — например mqttcloud.com. Теперь добавим новую кнопку привязки noolite блока к MTRF64 — подружим их!
-- mqtt_buddy/noolight/<int:channel>
-- mqtt_buddy/noolight/<int:channel>/<XX-XX-XX-XX:address>
-- mqtt_buddy/noolight/<int:channel>/bind
-- mqtt_buddy/noolight/<int:channel>/unbind
-- mqtt_buddy/noolight/<int:channel>/devices
Из MQTT топиков видно, что вы можете работать как с каналами напрямую, так и с адресами конкретных устройств, тем самым можно привязать все устройства на один канал, но работать с каждым по конкретному адресу. Адрес можно узнать в топике mqtt_buddy/sys при привязке, модуль отвечает адресом привязанного устройства.
Добавляем кнопку в MQTT Buddy (или используйте Ваш MQTT клиент, консоль, python в конце концов с paho!). В MQTT Buddy — нажимаем "+" — вводим название кнопки и топик.
и отмечаем одну галку: publish — чтобы при нажатии на кнопку — мы смогли послать команду в mqtt topic.
Добавили кнопку, теперь делаем стандартную привязку блока: кликаем по блоку, нажимаем на кнопку bind в нашем приложении и видим как блок привязался к модулю, потухнет мигающий индикатор на блоке SLF.
Если Вы хотите больше информации — вы можете читать сообщения в топике: mqtt_buddy/sys — там прилетает вся информация от блока — каждый раз, все 17 байт данных, где можно узнать и адреса блоков и что вообще там твориться «в техническом подвале»…
После привязки — создаем новую кнопку управления уже этим блоков с топиком.
в настройках приложения, отмечаем галочки: switchretainedpublish — теперь при нажатии на кнопку — будет посылаться команда в топик «mqtt_buddy/noolight/0» — esp8266 получит эти данные и разберет топик и отправит нужную команду модулю MTRF64 noolite и произойдет чудо… чудо технологии, которое Вы смогли воплотить в реальность и без сложных действий.
Прошивка и управление первым блоком займет у вас порядка 5-ти минут, если Вы уже знакомы с esp8266 и хотя бы раз прошивали её.
===================оторвать=============================
Ссылки на железо и ПО по статье
— MTRF 64 блок
— ESP8266 dev board — Aliexpress радиорынки интернетмагазины
— MQTT Buddy Android app (iOS windows phone в стадии адаптирования)
— mqtt.ximxim.com — наш сайтец — мы сделали ШОУ рум на esp8266 для большего фана ;) — огромное спасибо всем за положительный рейтинг, мы стараемся сделать IOT реальней, команда умной автоматизации Smart Automation Team > XIM, Inc.
==============MQTT Buddy бону сценарии=========================
Так как система у нас децентрализована и нет домашнего сервера — кто будет запускать сценарии? Да — это работает, да — автор пользуется этим функционалом. Как это работает и где? В нашем MQTT Buddy приложении. Все довольно просто: Вы добавляете MQTT брокер и заходите в него, дальше вверху есть кнопочку ввиде часиков — это и есть сценарии.
Это реальный сервис, который реально работает. Если кто желает получить халявный код MQTT Buddy на PRO функционал — можно подписываться в форму на сайте mqtt.ximxim.com :)) — там же и шоу рум из веб доступа. Все! Откланялся!
Всем хорошего дня и настроения, спасибо за Вашу фидбеки, положительные отзывы и здравую критику! Будьте добрее.
Ваш, автоматизатор, Alex B.
Автор: Alex_Bogdanovich