Обход noolite роутера через mtrf64+esp8266+MQTT Buddy Android app

в 10:27, , рубрики: android, automation, DIY, diy или сделай сам, esp8266, IoT, Lua, mqtt, mqtt_buddy, mtrf64, noolite, автоматизация, Интернет вещей, Программирование

Задача

Обойти роутер 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 адаптированный — красотень.

Что у нас есть?

1. блок noolite SLF-1-300 (блок с обратной связью и шифрованием)
image
(картинка noolite SLF-1-300)

2. MTRF64 UART модуль (который стоит дешевле чем USB, за счет отсутствия чипа по работе с USB! упрощен до «плинтусного» состояния ;) )
image
(картинка MTRF64 UART)

3. ESP8266 модуль
image
(картинка ESP8266)

3. приложение для работы с MQTT (MQTT Buddy)
image
(картинка)

видео

Теперь надо упростить жизнь и дать Вам код для души — именно. Кто хочет сидеть и писать много кода, тем более с 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 — и прожигаем её, «жгем» по полной!

Теперь внимание, берем и скачиваем готовый код: рабочий.

Прочитать до заливки кода!

подставить свои данные wifi роутера с логинпасс и подставить свой MQTT брокер с логином и пасом. В коде используется free MQTT broker от cloudmqtt.com. Наша команда подняла свой бесплатный брокер, который Вы можете использовать: mqtt.ximxim.com (mqttmqtt)

Ссылка на 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 dev board + MTRF64.

esp8266 D7 rx — MTRF64 TX
esp8266 D8 tx — MTRF64 TX
esp8266 GND — MTRF64 GND
esp8266 3V3 — MTRF64 3V3

image
(фото подключения)

Как только Вы залили код на 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 — подружим их!

Команды для общения с MTRF64

Дмитрий Караба, разработчик кода для esp8266 под MTRF64 — сделал следующий формат команд по MQTT для общения с модулем.

    -- 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 — нажимаем "+" — вводим название кнопки и топик.

Добавление кнопки управления в MQTT Buddy

mqtt_buddy/noolight/0 и data: «on, off или switch»

и отмечаем одну галку: publish — чтобы при нажатии на кнопку — мы смогли послать команду в mqtt topic.

image

видео

Добавили кнопку, теперь делаем стандартную привязку блока: кликаем по блоку, нажимаем на кнопку bind в нашем приложении и видим как блок привязался к модулю, потухнет мигающий индикатор на блоке SLF.

Если Вы хотите больше информации — вы можете читать сообщения в топике: mqtt_buddy/sys — там прилетает вся информация от блока — каждый раз, все 17 байт данных, где можно узнать и адреса блоков и что вообще там твориться «в техническом подвале»…

видео

После привязки — создаем новую кнопку управления уже этим блоков с топиком.

Управление блоком через MQTT topic в MQTT Buddy

mqtt_buddy/noolight/0 и data: «on, off или switch»

в настройках приложения, отмечаем галочки: 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.

Забыл дома селфи стик

Ну и… забыл дома селфи стик, пришлось офисный пылесос быстренько переделать ;)

image

==============MQTT Buddy бону сценарии=========================

Так как система у нас децентрализована и нет домашнего сервера — кто будет запускать сценарии? Да — это работает, да — автор пользуется этим функционалом. Как это работает и где? В нашем MQTT Buddy приложении. Все довольно просто: Вы добавляете MQTT брокер и заходите в него, дальше вверху есть кнопочку ввиде часиков — это и есть сценарии.

Добавление сценария в MQTT Buddy

При клике — добавляем сценарий и если Ваш брокер доступен в среде интернет — тогда в нужное время (внимание, учитываются временные зоны, Вам не надо париться и думать об этом — просто скажите системе, во сколько Вы хотите и что послать в нужный Вам топик) — отработка 100% через QOS = 1 MQTT протокола). Мы максимально упростили сервис для пользователей, что бы они не думали про техническую часть и не заморачивались, а просто сказали «что я хочу» :) — и чтобы это работало.

image

Это реальный сервис, который реально работает. Если кто желает получить халявный код MQTT Buddy на PRO функционал — можно подписываться в форму на сайте mqtt.ximxim.com :)) — там же и шоу рум из веб доступа. Все! Откланялся!

Всем хорошего дня и настроения, спасибо за Вашу фидбеки, положительные отзывы и здравую критику! Будьте добрее.

Ваш, автоматизатор, Alex B.

Автор: Alex_Bogdanovich

Источник

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


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