Двери и замки в умном доме. Самоделки

Как решить вопрос определения статуса закрытости двери и замка используя простые датчики и минимум кода.

Приступим

Если театр начинается с вешалки, то умный дом определенно начинается с входной двери. Хочется знать закрыта ли она. Закрыт ли замок. А если вдруг открывается или долго открыта, то всячески сообщить об этом.

Постановка задачи

Имеется дверь обыкновенная. Замок в двери врезной, с несколькими ригилями. Необходимо:

  1. Определить закрыта ли сама дверь
  2. Закрыт ли замок в этой двери установленный
  3. Прислать уведомление если дверь открыта более 1 минуты
  4. Прислать уведомление если замок открыт более 5 минут
  5. Прислать уведомление, когда дверь открывается

Бюджет ограничим — максимум 3000. Обозначим что в доме есть Zigbee сеть построенная на CC253х платах или Conbee или (крайний и запущенный случай) Xiaomi hub. Так же установлен node-red и (не обязательно, но примеры будут с ним) homesssiastant (можно homebridge, доделки flow будут незначительными).

Начнем с простого

Закрыта ли дверь

Тут нет ничего проще. Берем любой датчик открытия двери и вешаем его на дверь. Подключаем в систему УД и собственно все. Вопрос решен.

Одним из самых распространенных датчиков является Xiaomi Mi Smart Home Door/Window Sensors (ali, Беру, Озон, Wildberris, Goods). Устройство подключается к большинству zigbee решений. Может быт проброшено в homeassistant, homebridge, node-red через плагины Zigbee контроллера (zigbee2mqtt, homebridge-zigbee, homeassistant zigbee и тп).

Закрыт ли замок. База

А вот тут начинается по-настоящему интересная часть задачи. Самое простое ее решение — поставить умный замок. Который изначально умеет свое состояние определять и свой статус отдавать в системы УД. Но стоимость такого решения значительно превосходит заложенный нами бюджет. Хотя, конечно, это полнофункциональное устройство, которое не только передаст статус, но и само закроет/откроет дверь. Как пример, весьма распространённый и достаточно известный середнячок — Danalock V3 (Ozone).

Однако, есть путь настоящего бородатого DIYщика, инженера и молодца — использовать все тот же датчик Xiaomi Door Sensor в качестве источника бинарных данных (открыт/закрыт) слегка его доработав.

Для доработки потребуется паяльник, дрель/шуруповерт и тонкое сверло, два коротких упругих проводника, 10 минут времени на доработку и 30 минут на установку с юстировкой.

Разбираем сенсор.

На плате размещен геркон. Именно он нам и потребуется для дальнейшей реализации.

Геркон — электромеханическое коммутационное устройство, изменяющее состояние (вкл/выкл) подключённой электрической цепи при поднесении к нему магнита.

Отпаиваем его от основной платы отключив предварительно батарейку. Далее проделываем в крышке пару отверстий напротив контактов геркона. Подпаиваем тонкую, но упругую проволоку (я откусил пару длинных ног у 0.125-ватных резисторов) и продеваем ее через сформированные ранее отверстия. Подпаиваем к этим выводам геркон.

Проверяем что работоспособность сенсора не нарушена. Он все так же отзывается на поднесение ответной части сенсора к геркону.

Закрыт ли замок. Монтаж

В качестве «устройства проваливания» герконом может выступать источник магнитного поля, а что может быть проще и лучше в этой роли чем собственно магнит. Давайте его подберем.

Я решил, что неодимовый (редкоземельный) подойдет для этого случая наилучшим образом. Большинство из них при схожих с керамическими магнитами (ферритами) размерах обладают большей магнитной силой, что нам будет только на руку. Остается определить размер. С диаметром все более-менее понятно — максимум с диаметр одного из ригелей замка. Но вот с толщиной мне пришлось долго экспериментировать. В качестве шаблона-измерителя я взял у ребенка кусок пластилина и разместил его на ригеле. Добился того, чтобы этот «шлепок» пластилина не смазывался при закрытии двери. Затем убедился, что при закрытии замка он так же не сминается. Измерил толщину. В моем случае она была 3-4 мм.

Решил себя обезопасить от ошибки (4 мм мог оказаться толстым, а 3 мм слабым) заказал и тот, и тот. Удивительно, но очень большой выбор магнитов на wildberries. Остановился на двух экземплярах, это 10х3 и 10х4 с сверлением в центре. Предполагается такие магниты использовать как ответный крепеж, поэтому отверстия в них с зенковкой под саморез. Заодно там же заказал цианакрилатный клей (секундный, «гроза пальцев»), который оказался дико удачным по всем своим характеристикам. И я с будущим заказом на WB заказал еще один в запас, уж дюже мне он понравился.

Далее пошел подбор размещения Xiaomi датчика и магнита на ригеле. Для упрощения я так же воспользовался пластилином, который так же одолжил у ребенка.

Совет. Засуньте в дверной косяк губку для посуды, кусок поролона, тряпки в конце концов. Все чтобы ограничить возможность случайного падения датчик на дно дверного косяка.

Итак. Путем множества проб и снова проб идеальное расположение датчика и магнита было найдено. Идеальным я его считаю потому как уже второй оборот замка распознается как закрытие оного. Убедившись несколько раз в верности выбора позиции, я укрепил датчик дополнительным шариками пластилина (клеить на родной скотч или еще на что не рекомендую, сложно достать для замены батареи), а магнит залил тем самым цианакрилатным клеем и обсыпал содой. Это создало очень прочную корку и исключило перемещение или вовсе отвал магнита.

Дело осталось за малым — прокинуть в УД этот вымышленный замок и настроить автоматизации.

Закрыт ли замок. Дом

Так как датчик изначальной мной был добавлен в homeassistant и скрыт из доступных в homekit устройств, добавление его как замка я буду проводить в node-red. Из условий, которые я хочу выполнить это: отражение устройства как замка, отсутствие промежуточных статусов, невозможность изменить статус через приложение дом (он всегда должен возвращаться в реальное состояние). Получилось такое flow.

Полный исходный текст доступен по ссылке

Автоматизации. Уведомления.

Дело осталось за малым. Получить максимальную пользую от существования таких датчиков.

Начнем с простого. Открытие двери.

Описание алгоритма. Если датчик выдал состояние «разомкнут», то выполняется включение контрольного света в прихожей на 30 секунд, отправка в telegram сообщения о том, что открыта дверь, а также вызывается внешний sh скрипт (к нему идет отдельный link) который получает изображение с камеры в подъезде и прихожей и отправляет их в telegram.

Текст flow для импорта доступен по ссылке.

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

Оба эти flow как две капли воды похожи друг на друга так как решают одинаковые задачи, а также построены на одинаковых компонентах.

Полный текст flow для импорта доступен по ссылке.
Полный текст flow для импорта доступен по ссылке.

Пояснение к логике работы. Раз в N минут срабатывает inject который влечет за собой получение статуса датчика из системы УД. Если статус «закрыт» он записывается в глобальную переменную и обнуляется счетчик уведомления. Если он открыт, то производится сравнение с предыдущим значением в глобальной переменной состояния и если она равна (то есть при прошлой проверка датчик был так же открыт) то срабатывают уведомления в telegram, на google home, счетчик уведомлений становится равным единице — уведомление прошло, повторно производить его нет нужды.

Итог

Очередная крутая идея по нестандартному применению привычных для УД датчиков была реализована. Все поставленные цели выполнены. Автоматизации работают. Логика их работы отточена множеством повторений.

 

Оставьте комментарий