Контроллер управления вентилятором Mysensors + MajorDoMo

200Год эксплуатации контроллера управления вентилятора в ванной на ESP8266  выявил массу недочетов в эксплуатации. И хотя интеграция в MajorDoMo этого устройства прошла на ура, основные из них создавали проблемы

  1. «Подвисание» контроллера при отсутствии сервера или вайфая, связанные с таймаутами в протоколе TCP/IP
  2. Перезагрузки контроллера при интенсивном обмене информацией с сервером
  3. Удаленная кнопка включения вентилятора из туалета постоянно ловила помехи, вызывая ложные включения выключения

Эксперимент с протоколами MQTT/HTTP и прочими особо ничего не изменил. 100% надежности работы так и не получилось. Рассматривая пути решения проблемы — вернуть все назад на Atmega328, перейти на ESP32 или поискать более менее стабильную прошивку ESP8266 типа BLYNK, остановился на первом, но с дополнением радиомодуля NRF24L01 и библиотеки Mysensors.

Вот что из этого получилось:

Аппаратная часть

Плату сделал под старый корпус, блок питания, индикатор, кнопку и реле. В схему добавил простейший подовитель помех для внешней кнопки. Ну и ESP8266 заменил на Atmega328p-pu и модуль NRF24L01

%d1%81%d1%85%d0%b5%d0%bc%d0%b0-%d0%ba%d0%be%d0%bd%d1%82%d1%80%d0%be%d0%bb%d0%bb%d0%b5%d1%80%d0%b0

Далее все по накатанной технологии
Проектирую плату

%d0%bf%d0%bb%d0%b0%d1%82%d0%b0

Изготавливаю при помощи лазерно-ламинаторной технологии (вспоминая утюг, как страшный сон). Травлю в растворе лимонной кислоты с добавлением пергидроля.

100

Сверление и вырезание выполняю на станке

101

Остается только все спаять и отладить

104

Сравнение со старой платой на ESP8266

102

Со сборкой железа все. Собираю в коробку и программирую

103

Список основных компонентов:

Итого бюджет по деталям около $10

Особенности прошивки

В прошивке использовались готовые библиоткеки

В текущей ноде объявлены 5 информационных параметров — влажность, температура, наличие света, работа вентилятора и ручной режим, 3 параметра для конфигурации — установка уровня влажности, уровня АЦП с фотореле и время работы вентилятора по таймеру и один параметр управления, включающий/выключающий ручной режим работы (имитирующий кнопку). Также периодически запрашивается текущее время у сервера по протоколу Mysensors.

Алгоритм работы упрощен по отношению к предыдущим версиям.

Ручной режим включает вентилятор на время заданное таймером или выключает вентилятор на это же время. В автоматическом режиме вентилятор включается при достижении порога влажности и отсутствии света и выключается при нормализации влажности.

Прошивку, схему и печатную плату в формате SprintLayers можно взять на GitHub вместе с другими моими проектами умного дома

Теперь самое интересное

Настройка MajorDoMo

Для взаимодействия MySensors с Majordomo нужен NRF24L01 подключенные к серверу (в моем случае Orange PI PC с такой вот универсальной платой), сервис MYSGW и модуль MajorDoMo Mysensors, устанавливаемый из Маркета дополнений. Также следует обратить внимание, что настройки на контроллерах Mysensors (скорость работы, выбор канала …) полностью соответствуют настройкам при сборе MYSGW.

На сервере я установил модуль NRF24L01 с дополнительным усилителем RFX2401C и внешней антенной на 2dBi

Включаю контроллер и добиваюсь, что статистика, включенная флагом #define MY_DEBUG показывает старт библиотеки с модулем и обмен с сервером. После этого в настройках MajorDoMa захожу в устройства Mysensors и нахожу ноду с номером, указанным #define MY_NODE_ID        30
Если этот параметр убрать в прошивке, то сервер сам присвоит ID ноды, аналогично службе DHCP
Меняю в настройках названия ноды с номера на удобное мне

md_mysensors-0

После этого можно переходить к настройкам сенсоров моды. Если презентация всех сенсоров прошла номально, то все сенсоры автоматически появляются в настройках данной ноды

md_mysensors

Для тех сенсоров, которым требуется отображение по ссылке «Добавить» в колонке «Устройство» создаю простые устройства, связанные со значением value данного сенсора

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

md_%d1%81%d1%86%d0%b5%d0%bd%d0%b0

Тип параметров я выбрал в виде информеров, хотя можно было сделать HTML элементы.

md_%d1%81%d1%86%d0%b5%d0%bd%d0%b0-2

На параметре «вентилятор» добавил действие по клику, меняющее свойство управляющего параметра, что приводи к включению/выключению вентилятора в ручном режиме параллельно кнопке

md_%d1%81%d1%86%d0%b5%d0%bd%d0%b0-3

Добавлю график из плугина «Графики», отображающий влажность и работу вентилятора (по желанию можно и другие параметры). Код, который формируется при настройке графика вставляется на сцену в виде HTML элемента

md-%d0%b3%d1%80%d0%b0%d1%84%d0%b8%d0%ba

В коде можно задать размеры графика и время отображения

md-%d0%b3%d1%80%d0%b0%d1%84%d0%b8%d0%ba-2

На вкладке «Просмотр и Редактировать» визуально настраиваем расположение элементов сцены и размеры графика

md_%d1%81%d1%86%d0%b5%d0%bd%d0%b0-4

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

md_%d1%81%d1%86%d0%b5%d0%bd%d0%b0-%d0%b3%d0%be%d1%82

Настройка параметров будет осуществляться через модуль Mysensors по ссылке «Установить значение».

md-config

Ну вот и все. Новая версия контроллера успешно прошла недельную опытную эксплуатацию. Никаких недостатков пока не выявлено. Сбоев нет, помехи на кнопке не ловятся. Данные стабильно передаются на сервер. Красота!

200

При необходимости можно добавить управление вентилятором через любое исполнительное устройство, подключенное к MajorDoMo — выключатель или miHome Cube, например. Добавить уведомления по режимам работы контроллера. Настроить форму настройки параметров. Пока такой задачи не стоит. Ведь в таких проектах что главное — главное во время остановиться делать все в соответствии ТЗ и не усложнять сущность без надобности (C). На данном этапе я рад, что нашел готовое серверное решение значительно упрощающее превращение отдельных умных железок в полноценный умный дом

 

Мой длинный путь усовершенствования контроллера вентилятора здесь

А это мой помощник и «повелитель хаоса»

%d1%8101

Вы можете оставить отзыв или трекбек со своего сайта.

6 комментариев на «Контроллер управления вентилятором Mysensors + MajorDoMo»

  1. Эд:

    Извините за назойливость а почему остановились именно опять на агмеге? esp32 думаете тоже не стабильна и будет зависать? пробовали с блин тоже виснет? меня это тема тоже волнует сколько людей столько и мнений.

    • Alexey Alexey:

      Блинк не пробовал. Мне кажется, проблема не в прошивке, а в железе.
      ESP32 пока показывает себя более стабильной, только избыточна. А так как я наплодил сенсоров на батарейках — NRF24 в них себя очень неплохо показывает

  2. Андрей:

    просьба перезвонить, интересует модуль управления вентиляцией 89519018080 Андрей

  3. Александр:

    здравствуйте. Необходимо реализовать блок управления вентилятором мощностью 70 вт.
    Включение от освещенности с задержкой до 15 мин (больше 30 мин включен свет вентилятор выключается), влажности (более 60% включение). Соединение с интернет не нужно. Я не нашел предложения по датчикам света с регулировкой чувствительности.

    • Alexey Alexey:

      Любой фоторезистор подключенный к аналоговому входу контроллера
      Или цифровой сенсор типа MAX44009 который просто возвращает текущую освещенность

Ваш отзыв на Александр

Вы должны войти, чтобы оставлять комментарии.