Умный дом — система обнаружения протечек на ESP8266 и MajorDoMo.

Создание системы обнаружения протечек своими руками из готовых модулей на ESP8266 и подключение к MajorDoMo.
Итак, для работы потребуется:
—  NodeMcu V3 Lua
— DC-DC  LM2596; 
— разьемы
— сенсор воды (протечек);
— любая кнопка с фиксацией;
— драйвер мотора ;
— угловые клемники, (похожий товар );
електропривод  крана.

Переработав предыдущую плату, с учетом того, что для корректного  старта ESP необходимо обеспечить (во время старта!) высокий уровень на GPIO0, GPIO2, а также низкий уровень на GPIO15 получил вот такую плату 100х75 мм.

Плата система протечек
Плата система протечек

Кнопка подключена на GPIO15  и через резистор притянута к земле для обеспечения корректной загрузки модуля. Платки компараторов напряжения к которым подключаются датчики протечек в нормальном  состоянии дают высокий уровень на порту, по этому их можно подключать на GPIO0 и GPIO2. 

На первой плате были установлены клеммные колодки, для отладки всех модулей без их запаивания.
Вот так выглядит готовая плата первой версии.

Готовая плата 1.0

Все модули пришли с припаянными штырьками вверх, и после их перепаивания на первом модуле вниз — у меня отпала охота этим заниматься. Все оставил как есть — штырьки вверх, модули лицом вниз. Нужно будет сделать отверстия для регулировки  резисторов.
Драйвер мотора так же установлен «лицом» вниз. Из-за высоких его клемников запаять не хватает высоты. По этому, или ставить разъем или обрезать плату под клемниками, но тогда эти клемники будут выходить за уровень платы, что тоже не есть хорошо.

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

Немного задев дорожки и стерев верхний слой, под ним показалась медь.

Касательно использования в таком виде датчиков с последующим их окислением — не знаю на сколько их хватит, но заменить пока нечем, а реальная работа покажет как они будут себя вести. Все равно таким элементам необходимо будет делать ТО.
Так, как разводка у меня 12 В, то для работы модулей установлен DC-DC преобразователь, который единственный запаян на плате ))).

Привод оборот делает за 7-8 сек. для перестраховки подаю на него напряжение на 10 сек.

Алгоритм пока такой.
1. При старте модуля кран закрывается.
2. Соединяемся с WIFI и отправляем письмо о старте системы.
3. Проверяем все сенсоры и если нету ни на одном сработок — открывается кран.
4. Идет постоянный мониторинг датчиков, и если есть сработка запускается отсчет 15 секунд, после чего кран закрывается. Это на случай мойки пола или случайного разлива жидкости и т.д. Также отправляется письмо с указанием какие датчики сработали.
5. После срабатывания сенсоров и закрытия крана если сенсоры восстановились в норму — кран автоматически открывается.
6. Кнопкой можно произвести принудительное закрытия крана и его открытие (при условии, что все сенсоры сухие!!!).

Следующий этап — подключение к MajorDoMo.
Это третья железка, которую я подключаю, как подключать и настраивать, можно почитать на форуме MajorDoMo. Остановлюсь на нюансах с сервоприводом. Обычные выключатели, датчики и т.д. получают отправку и получение информации почти мгновенно, а вот сервоприводу нужно определенное время на выполнение команды. То есть, у него состояние — получил команду — команда выполняется — команда выполнена. Правильно будет на объекте в сценах показывать все 3 состояния. На данный момент все сделано проще и быстро, чтобы заработало.

 Добавил иконку отображения статуса сервопривода, которая обновляется после выполнения его закрытия или открытия. В процессе тренировок вылезла трабла — скрипт отрабатывает и отправляем смену статуса (это видно в сериале), но иконка не отображает смену статуса. По этому, каждые 5-10 сек контрольно выполняется отправка последнего состояния задвижки.
Иконка «Управление задвижкой» это просто кнопка без статуса, для открытия или закрытия задвижки.
Кнопка»Закрыть кран» меняет состояние и надпись на «Открыть кран» в зависимости от состояния задвижки.
Все правильно отрабатывает, если нажимать на них, а вот если задвижка закроется по сработке сенсоров, то кнопка «Закрыть кран» не отрабатывает смену состояние, хотя иконка состояния «Задвижка закрыта»  отрабатывает автоматическое открытие и закрытие.

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

Что нужно реализовать далее, перед постановкой в боевую работу?
1. Обеспечить работу при отсутствии подключения у WIFI.
2. Убрать delay из кода. Лично самого коробит от его вида, а тут сам втулил ((( (только для отработки логики 🙂 работы  ).
3. Вычистить говнокод ))).

Файлы для ЛУТ .
Исходники прошивки.

Работа над проектом продолжается…
Обсуждение и предложения на форуме

Прошли 1,5 месяца в боевой работе


Уникальных посетителей темы: 546

19 мыслей о “Умный дом — система обнаружения протечек на ESP8266 и MajorDoMo.”

  1. Добрый вечер, хотел бы подобное реализовать и у себя дома… Из описанного не совсем понял, система может работать и сама или только в составе MajorDoMo ?

    1. Система может работать так, как вы захотите, нужно только прошивку править под себя. Та прошивка, что приатачена в статье, требует постоянного подключения к вайфаю для отработки алгоритма отправки сообщений.
      В моем рабочем прототипе, реализована проверка на наличие активного соединения, если его нет, система работает автономно- т.е. открывает и закрывает кран через кнопку или по срабатывании сенсора. Можете самостоятельно поправить прошивку и реализовать такой режим работы какой Вам необходим.
      Если Вам нужен только автономный режим, проще купить готовое решение на али и не париться.

  2. Хотел на вашем форуме написать несколько замечаний и дополнений но регистрация отключена.
    1. Хотелось бы проверку на без обрывность датчика.
    2. Индикация (светодиод) какой датчик Сработал.
    3. Что бы невозможно было открыть кран если датчик ещё мокрый.

    1. Регистрацию отключил, боты засыпают.
      1. Нормальное состояние датчика — разомкнутый контакт, как же его проверить на обрыв?
      2. Светодиоды присутствуют, но в данном прототипе просто не выведены на корпус.
      3. Пока датчик мокрый, кран нельзя открыть ни кнопкой на корпусе, ни через приложение.

          1. Почему печально? Аппаратная всегда лучше, быстрее и надежнее, чем программная реализация и она уже есть на модуле. и не забывай,что на ЕСПхе не очень то разгуляешься по количеству gpio!

  3. Установите на форум keyCAPTCHA https://www.phpbb.com/customise/db/mod/keycaptcha/
    В свое время очень хорошо от ботов защищала, может сейчас боты по умней стали не знаю.
    За датчики не знаю как проверить на обрыв, но было бы не плохо.
    еще бы звуковой оповищатель добавить.
    https://ru.aliexpress.com/item/High-Quality-Active-Buzzer-Module-for-Arduino-New-DIY-Kit-Active-buzzer-low-level-modules/32672506731.html

  4. leo
    01.03.2019 В 12:00
    Почему печально? Аппаратная всегда лучше, быстрее и надежнее, чем программная реализация и она уже есть на модуле. и не забывай,что на ЕСПхе не очень то разгуляешься по количеству gpio!

    Это те светодиоды которые на модуле дождя находятся ?

  5. Подскажите, я в скетче не нашёл функцию открытия и закрытия кранов на профилактику от закисания

    1. Эта функция реализуется мажордомо. В автономном режиме её нету, но можно дописать самому.

  6. Подскажите по поводу отправки писем на почту. Чтото не могу настроить, пробовал через gmail и ukr.

    1. Я сам не пробовал через эти сервера отправлять. Попробуйте поднять локально простенький почтовик и попробовать через него подключиться, для проверки правильности синтаксиса. После чего будет понятно где проблемное место

      1. Начиная с версии 2.5.0 Arduino для ESP8266, используется по умолчанию BearSSL вместо axTLS и код не может соединиться с сервером.
        Для исправления в файле Mail.cpp в функции sendMail перед строкой с client.connect(…) добавьте строку
        client.setInsecure();

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *