Розумний дім – система виявлення протікань на 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, то на цьому ж залізі можна підняти і свій поштовий сервер і проблем з відправкою не буде.

Що потрібно реалізувати далі, перед постановкою в бойову роботу?

Вичистити гівнокод ))).

Забезпечити роботу при відсутності підключення до WIFI.

Прибрати delay з коду. Особисто мене корчить від його вигляду, а тут сам втулив ((( (тільки для відпрацювання логіки 🙂 роботи ).

Файли для ЛУТ .
Вихідний код прошивки.

Робота над проєктом продовжується…
Обговорення та пропозиції на форумі

Минуло 1,5 місяця в бойовій роботі

21 коментар до “Розумний дім – система виявлення протікань на ESP8266 і MajorDoMo.”

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

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

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

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

          1. Печально, значит буду другой искать.

          2. Почему печально? Аппаратная всегда лучше, быстрее и надежнее, чем программная реализация и она уже есть на модуле. и не забывай,что на ЕСПхе не очень то разгуляешься по количеству 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();

  7. Нда.Все это,легко и просто делается на прошивке от Макса для ЕSP.Думаю,что любой знакомый с Мажордомом это знает.И даже защиту от закисания указать в ней не проблема,как и отображение сделать ,так и вывод информации,хоть по мкютт,хоть письмом,хоть на телеграм,да и к мажору притянется почти автоматом.Вообщем велосипед изобрели.

    1. Вообще то, мне процесс создания гораздо интереснее процесса повторения.
      Что за прошивка от Макса, ссылкой поделитесь, коль упомянули?

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *