В одной из прошлых своих статей, пару лет назад, я уже реализовывал дешевый самодельный датчик контроля дверного замка, на базе zigbee датчика открытия/закрытия двери. Но прошло время, датчик уже снят с продаж, а его аналоги, по габаритам не очень-то и подходят. Сейчас возникла потребность замены. Новая реализация снова выполнена, на базе стандартного недорогого Zigbee датчика вибрации с определением положения, с небольшой доработкой, но уже без некоторых недостатков первого варианта.
Публикацию можно разделить на две части:
Первая часть практическая, за короткое время можно сделать контроль замка на базе датчика вибрации Aqara, модель DJT11LM и интегрировать в систему домашней автоматизации (в моем случае MajorDoMo).
Вторая более теоретическая, в ней несколько более подробнее пройдёмся по настройкам датчика, а также небольшое сравнение с аналогичным датчиком вибрации экосистемы Tuya TS0601 модель ZG-103Z.
Что в итоге получилось, читайте далее.
Вступление
Коротко немного про первое решение вначале ссылка на публикацию Просто о сложном. MajorDoMo и контроль входного замка. Начало
Реализация была построена на базе датчика открытия/закрытия двери Xiaomi MiJia Door and Window Sensor. Принцип прост: в металлической дверной коробке установлен подвижный датчик и неподвижный магнит. При закрытии двери засов перемещается к магниту на 1–2 см, что и фиксируется датчиком.
На протяжении трёх лет (всего срока службы решения) не было проблем с качеством сигнала Zigbee, несмотря на установку в металлической коробке (возможно, из-за близости реле роутера —около 1 метра). Батарейки хватило на два года. За это время проблем с качеством сигнала Zigbee, несмотря на установку устройства в металлической дверной коробке – не наблюдалось (возможно из-за размещения на расстоянии около 1 метра реле координатора).
Два основных недостатка этого решения:
1 Необходимость сверления дверной коробки для установки датчика.
2 Требуется точное позиционирование магнита в ограниченном пространстве, при первой установке у меня всё получилось удачно и решение проработало до окончания срока службы батареи, Однако после ее замены пришлось долговато провозиться с установкой и позиционированием магнита. Проработав ещё менее года – лопнула стеклянная колба геркона.
Недавно пришла идея как сделать более удобное и простое решение, что и сделал, заодно и постараюсь описать в этой публикации.
Первая часть: практическая
В качестве основного элемента применил датчик вибрации Aqara Модель DJT11LM Aqara. Помимо основного действия – определения вибрации, датчик фиксирует изменение своего пространственного положения. Страница датчика на сайте zigbee2mqtt

Корпус довольно миниатюрный, размеры 36х36х9 мм, без проблем помещается в замочную скважину (Размеры прямоугольного выреза в торце коробки 13×40 мм). используются элементы питания CR2032 . Для своих целей совсем немного модернизировал датчик: сделал два небольших отверстия, продел тонкую веревку, которую зафиксировал в неодимовый магнит (диаметр 10мм, с отверстием в центре). Магнит крепится на внутренней стороне дверной коробки, чуть выше от отверстия для засова замка. При открытом состоянии замка датчик свободно висит, при закрытии, под воздействием засова смещается на 1 см на один оборот и на 2 см – на 2 оборота.

Сопряжение в zigbee2mqtt – стандартное: перевод координатора в режим сопряжения и зажатие кнопки датчика на 5 секунд.

Окно свойств датчика:

Наибольший изменяемый угол у меня – по оси Х, его и буду использовать для определения состояния.
После установки начальное положение датчика 3 (замок открыт), при одном обороте 7, при двух 13-14. Показания могут немного отличаться ± 1-2 единицы.
Магнит крепится, затем — в дверной проём помещается сам датчик. Неодимовый магнит надёжно держится на металлической коробке.
Интеграция датчика в системе автоматизации MajorDoMo
В первой статье уже была описана установка и начальная настройка системы автоматизации MajorDoMo.
Для связи системы MajorDoMo и сервиса zigbee2mqtt есть два дополнения (модуля): zigbeedev и HA_Discovery. В прошлый раз я использовал zigbeedev, сейчас — HA_Discovery.
В Панели управления – Устройства системы автоматизации MajorDoMo создаём новое Простое Устройство (далее по тексту ПУ), выбираем тип Открываемое (ворота/двери/шторы и т.п.).
У таких устройств есть свойство – level (уровень открытия), которое и будем использовать в автоматизации.
Переходим на вкладку методы и выбираем метод Logic Action, этот метод срабатывает при изменении статуса и основных свойств (в нашем случае – уровня открытия).
Вставляем следующий код PHP:
$angleX = getGlobal("Openable02.level"); if ($angleX >= 6 && $angleX <= 20) { sg("Openable02.status", 1); // Закрыто say("$angleX Closed"); } else { sg("Openable02.status", 0); // Открыто say("$angleX Open"); }
В коде прописано: при значении угла положения датчика от 6 до 20 ° значение статуса устройства становится 1 (закрыто), при других значениях – 0 (открыто). Для теста, добавлена функция say, отправляющая сообщение в веб-интерфейс. Вместо неё можно использовать любые действия: уведомления (Telegram, Яндекс, VK), звонки, проверки состояния и другие автоматизации.
Устройство создано, но пока – виртуальное, ещё не привязанное к физическому датчику.
Переходим к модулю HA_Discovery. При правильной настройке устройства zigbee из координатора автоматически появляются в модуле.

Выбираем нужный датчик, и переходим на вкладку Данные строка angle_x (sensor) . В поле «Связанный объект» указываем ранее созданное виртуальное устройство Openable02, выбираем свойство Level (Current level) — это и будет уровень положения по оси X.
Для простых автоматизаций этих действий и достаточно. Теперь в свойствах появляются актуальные данные о положении по оси Х, статус и методы устройства. В зависимости от угла наклона определяется состояние замка.

Процесс настройки довольно быстрый и простой. Но, как всегда есть нюансы. Переходим ко второй части, где рассмотрим их поподробнее.
Вторая часть: теоретическая
В этой части немного глубже рассмотрим настройки. Основное уже сделано, но здесь могут быть полезные детали.

Сейчас у меня в наличии 2 датчика вибрации с определением положения и ещё один просто датчик вибрации, который совершенно не подходит для моих целей, поэтому его даже в статья рассматривать не буду (на фото прямоугольный).
Первый датчик - Aqara, модель DJT11LM (рассмотрен в первой части).
Второй - датчик из экосистемы Tuya, производитель Kojima, модель, указанная на упаковке - Kojima-VS-ZGB-Lite, один из немногих производителей устройств в этой системе УД, который себя указывает, хотя бы на коробке. В веб интерфейсе zigbee2mqtt прошивке, нет никакого упоминания о производителе. По ряду критериев мне он совершенно не подошёл.
Хотя стоимость датчика Tuya почти в 3 раза дешевле Aqara.
Итак небольшое сравнение этих двух датчиков:
Габариты/ элемент питания: Aqara 36 × 36 × 9 CR 2320
Tuya 40х13 CR 2450
По габаритам Aqara немного компактнее чем TUYA, но вот это немного сыграло первый фактор, туйа без доработки корпуса никак не походит к моей задачи. Решил попробовать доработку корпуса, но остановился на полпути. В процессе тестирования выявился второй фактор, который отправил туйу в … ящик с другими не подошедшими для меня устройствами.
Попытка модернизации датчика Kojima

По элементу питания, несмотря на значительно большую ёмкость элемента питания у Tuya CR2450 (раза в 3, по средним справочным характеристикам, соответственно и несколько большую стоимость элемента), по автономности работы туйа очень сильно проигрывает. За месяц тестирования батарейка села в ноль, заменил, вторая тоже недолго продержалась. У Aqara за это время (судя по данным веб интерфейса) заряд снизился до 97%). И дело совсем не в элементах питания. Чуть ниже, в описаниях настроек заострю внимание на причине прожорливости. Под спойлером попытка «модернизации» датчика Kojima.
Модернизация датчика Aqara – была уже в первой части публикации.
Вынес батарейный отсек, под ним приклеил 2 небольших магнита для крепления к металлической коробке. На этом и остановился, до корпуса дело не дошло.
Перейдём к вебинтерфейсу zigbee2mqtt:
Главное окно устройств в сервисе zigbee2mqtt:


Скрин свойств датчика Aqara. Кроме стандартных свойств для zigbee устройств присутствуют тонкая настройка чувствительности от 1 до 21, значения углов angle_x_y_z, сырые значения ускорений по осям, измеряемые встроенным акселерометром, которые используются для вычисления углов наклона (angle_x_y_z). Также, имеется параметры Power outage count Number of power outages (количество отключений питаний датчика, возможно имеет смысл в использовании для диагностики датчика и стабильности его работы). Action Triggered action (e.g. a button click) – параметр триггера (события вызванное сработку, вибрация/изменение угла наклона/падение.


Свойств у датчика Kojima гораздо меньше, чувствительность имеет только 3 степени, показания углов x,y,z ну и стандартные для zigbee устройств параметры LQ, battery и др.

Вкладка специфичных настроек датчика Aqara и дополнительные возможности.
Калибровка датчика по разным параметрам.
Обращаю внимание на параметр Vibration timeout Time in seconds after which vibration is cleared after detecting it (default 90 seconds). В моем случае довольно важный. После сработки датчика – датчик передает один раз свои свойства координатору, дальше в течении 90 секунд (по умолчанию) засыпает, не смотря ни на что, ни на вибрацию, ни на изменения углов. Следующий отчёт через 90 секунд. Параметр можно менять и его нужно учитывать при автоматизациях.
У Tuya нет этого параметра, и он при постоянном изменении состояния (углов) может передавать свои параметры несколько раз в секунду (у меня до 2-3х раз), что конечно же влияет на потребление энергии. Вот и причина, при большей батарейке – высаживается она гораздо быстрее. Недостаток довольно критичный для батарейных устройств.

Вкладка у Tuya устройства - как видно пустая.

Другие вкладки:


Вкладка состояние у Tuya.
Вкладки кластер и консоль разработчика у датчика Aqara:


В качестве заключения
На этом реализация готова, из штатного устройства сделано относительно новое по применению, в открытой продаже подобного устройства я не увидел, надеюсь кому-нибудь решение пригодится.
Возможно, устройство, можно было бы доработать, но это как-нибудь потом.
Отдельно хочу добавить несколько ссылок:
Сайт проекта zigbee2mqtt, особенно отмечу раздел Supported Devices – список интегрированных в сервис устройств.
Сейчас, в основном общение и обсуждение, ответы на вопросы, помощь и поддержка перешли в чаты и каналы. Хотелось бы отдельно упомянуть два сообщества:
Группа обсуждения домашней автоматизации на базе MajorDoMo.
Группа по zigbee Обсуждение устройств, прошивок и прочего софта, работающего с Zigbee.
Комментарии (9)

Dimly
27.04.2026 03:32Не понял про магнит и замок. Куда прикреплено то? Фото или схема нужна

udvnl Автор
27.04.2026 03:32Вечером сделаю фото, не знаю насколько оно информативно будет, т.к. почти всё спрятано в дверной коробке.
Попробую объяснить на "пальцах".
Есть дверь, она вставлена в коробку (которая сделана из металла и внутри полая, внутри этой коробки крепится на магните датчик вибрации), есть замок с защёлкой и ригелем(засовом) в коробке есть два прямоугольных отверстия, приблизительно между ними и крепится магнит. Ригель при закрытии входит в коробку и толкает датчик, который меняет своё положение и сообщает об этом системе УД.

CagoBHuK
27.04.2026 03:32Спасибо автору, избавил меня от ковыряния с героем. Идея была такая же как в первой версии, но необходимость что-то высверливают останавливала. Отдельное спасибо за детальный разбор недостатков Туи, сам бы не полез разбираться. От себя хочу отметить, тоже сидел на Маджордомо несколько лет, после чего без сожалений мигрировал на Хоум Ассистант.

udvnl Автор
27.04.2026 03:32Спасибо за отзыв.
Думаю проблем с автоматизацией в HA не должно возникнуть, принцип в открытых системах по идее один и тот же, реализации разные.

hexus7
27.04.2026 03:32Тоже думаю, как отслеживать положение ригеля. Странно, что китайцы не сделали адекватных устройств, кроме помпезных электронных балалаек с внешней панелью (или странными ручками внутри).

xSVPx
27.04.2026 03:32Лазерный дальномер. От нуля показывает какую-то ерунду, но повторяемость вроде есть.
Из неприятного: те что попались мне с i2c не имеют аппаратного адреса. Ну т.е. там есть механизм его присваивания каждый раз после пропадания электричества, но он требует +1-2 лишних провода и проще их просто по портам распихать оказалось. Какие-то эффективные менеджеры делали....
Всё никак на место не засуну, одолели дела мелкие всякие. Но на столе работал неплохо. Но надо, конечно посмотреть что будет в коробке. За состояние "совсем закрыто" я не беспокоюсь, а вот "полуоткрыто" не факт что будет нормально мерять.
sizeg
У вас вступление продублировалось
NutsUnderline
не только, как в анекдоте про два раза.
udvnl Автор
Спасибо большое, исправил.
Всем спасибо за корректировки!
(не ожидал от себя ошибок на видном месте)