nooLite 2019. ESP32+MTRF64: mqtt Hub.

Больше месяца проработал Хаб, полагаю можно выпускать его за пределы моей дачи.

В предыдущем сообщении рассказано, как залить Lua прошивку в ESP32, и без повторения нам не обойтись, после чего продолжим изготовление этого устройства:

Опыт эксплуатации показал устойчивость и безглючность этого устройства, чего не скажешь о ESP32 в целом, ибо при разработке в двух случаях ловились Guru Meditation Error и их пришлось программно обходить. Кто слегка понимает Lua кодинге, наверняка заметит некоторые странности, вдобавок к сгенерированному мной индусскому коду 🙂

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

Итак, устройство работает в двух режимах.

В ручном режиме вы запускаете на исполнение всего один файл ‘__testMTRF.lua‘, который предназначен для неспешной ручной привязки и отвязки всех устройств nooLite. После запуска скрипта вы увидите картинку, которая поясняет ваши возможности.

Привязка/отвязка устройств от модуля, перевод блоков F в релейный режим или режим управления яркостью, проверка привязки силовых блоков — эти главные функции реализованы для обеспечения работы с устройствами nooLite.

  1. В левом окне ESPlorer набираем команду (здесь привязка блока старого типа к ячейке 2);
  2. кнопкой Line отправляем ее на исполнение;
  3. в правом окне видим отчет о том, что операция прошла успешно.

Теперь все что есть у вас в хозяйстве железного будет связано с MTRF64 и готово для дальнейшей работы. Посоветую скрупулезно записывать и сохранять свои действия на будущее, ибо не существует способа узнать у MTRF64 где и что к нему привязано. Я такие записи делал плохо, и, в конце концов, потерял информацию о том, к чему привязан один из релейных выходов SR-2-1000, который длительное время не был задействован.

Для поиска таких «потерянных» силовых блоков я сделал скрипт __testMTRFCellsOnOff.lua, однако работа с ним грустна и тягуча, ибо он последовательно, от 0 до 63 перебирает ячейки, выводя в ESPlorer номер текущей, включая и выключая привязки к ним на 3 секунды, а вам надо сидеть и пялиться на «потерянную» железку, в ожидании момента, когда она включится. (Именно так я делал, сидя на чердаке с ноутбуком, в ожидании срабатывания силового блока 🙂 )

Переходим к работе с хабом. По ссылке лежат все файлы проекта, которые надо закатать в ESP32.

Перед загрузкой следует уточнить, в соответствии с вашими условиями, два файла.

wifi32.lua:

_setuser.lua:

Загрузив файлы в ESP32, исполняем wifi32.lua и видим:


Далее ПЕРЕГРУЖАЕМ модуль, исполняем файл _init.lua и наблюдаем установление связи с вашим брокером:

Все готово для работы.

С брокером устройство обменивается информацией двумя «потоками». Каждая итерация вызывает отправку модулем на брокер отчет в, условно, raw — формате, когда модуль шлет копию общения по UART без первого и двух последних байт, как незначащих, а также отчет о состоянии управляемого железа nooLite в json формате:

Для разных типов модулей nooLite json слегка различается, но, надеюсь, там все логично, и понимание не вызовет затруднений. Датчики температуры, температуры и влажности:

Управление силовыми блоками через брокер осуществляется типовой парой топик/сообщение, где топик будет иметь вид:

Имя_Вашего_Устройства/com/номер_ячейки,

а данные — json, который выглядит:

{«switchf»:»Off»}

Выключение блока нового типа, привязанного к ячейке 0:

Типы команд, которые поддерживает устройство:

После проверки работоспособности, понимания того, как все работает, остается лишь запустить железку в самостоятельную работу. Нажимаете на кнопку, с названием (1.) «_renameinit.lua» и наблюдаете следующее:

(2.) Вам дается 15 секунд на «передумать», (3.) устройство перезагружается, (4.) входит в сеть, подключается к брокеру.

Кнопка «_renameinit.lua» — волшебная кнопка. Если нажать ее еще раз, она запретит устройству автоматическую загрузку, перезагрузит его и дальше вы сможете работать с ним в ручном режиме.

Видимо, на этом стоит завершить. В этот раз я не стал детально объяснять код скриптов — мало кому это требуется.

Замечу, что не имея всех модулей nooLite, я не смог проверить его работоспособность полностью. По этой же причине не реализована работа с блоком управления цветной лентой — у меня его просто нет.

Вместе с тем, на том железе, что применяю я, устройство показало отличные результаты. Желаю и вам приятной работы с ним, в особенности приятного кодинга вашей системы умного дома, в целях парсинга и выдачи именно того формата сообщений, который реализован здесь. У меня, в частности, устройство работает в связке NodeRed/Domoticz. Всем удачи!

nooLite 2019. ESP32+MTRF64: mqtt Hub.: 2 комментария

  1. Не нашёл, другого способа, как с вами можно связаться для консультации. Спасибо вам за отличный проект и за то, что Вы им поделились! Всё поднял по вашим инструкциям на ESP32. Казалось бы — вот оно счастье… Но по какой-то причине каждый 1-1.5 дня ESP32 перестаёт отзываться по MQTT и присылать данные ( вижу по статистике получения данных от датчика температуры NooLite в Domoticz и переставшие поступать данные от датчика открытия дверей). На отправку сообщений в сторону MQTT брокера, которые адресованы nooliteMTRF тоже перестаёт хоть как-то отзываться. К сети он точно подключен (в интерфейсе роутера соединение видно). Выключение/включение питания и всё снова работает на очередные 1-1,5 дня. Идеи, что ещё можно проверить, заканчиваются. 😦 Буду очень благодарен, если подскажете в какую сторону копать.

    Нравится

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

      Такие вещи случались, когда работал с публичным брокером. С собственным брокером этого не происходит.
      Глубоко в кухне взаимодействия подписчик/брокер я не разбирался, потому что у нас нет иных инструментов для восстановления работоспособности, кроме как уничтожить соединение и восстановить его вновь через некоторое время.

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

      В итоге, что можно посоветовать. Ну если с брокером ничего не поделать, то код надо допиливать в соответствии с вашими условиями. Таймер как я предложил.

      Нравится

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s