Буквально пару дней назад обновил свой старый замок на калитке, не планировал ничего об этом писать, но попалась статья https://habr.com/ru/news/1005908/ - "Samsung сделала цифровой ключ!"

Что ж, у меня тоже есть цифровой ключ, хоть и не Samsung.
Это не туториал, не "готовое решение", а скорее рассказ о работающей концепции, возникавших проблемах и их решении.

Началось всё давным-давно, когда мастера по установке заборов сделали ворота, калитку, и установили на нее "обычный замок", как у всех.
Обычный механический замок, из тех что ставят на гаражи, со здоровенным тяжелым ключом и минимальной"секретностью".

Сразу отмечу: секретность там особая и не нужна, основная функция замка - закрыть калитку снаружи так, чтобы ее не могли сходу открыть всякие продавцы картошки и копатели канав, но при этом ее легко могли открывать хозяева.

Так вот, неудобства типового решения проявились в первый же год: большой и очень железный ключ мешается в кармане, и если в машине его можно кинуть хотя бы в бардачок - то летом и пешком его буквально некуда деть, хоть на пояс вешай.
А зимой другая проблема: снег задувает в замочную скважину, потом оттепель, потом вечерний морозец - и замок превращается в кусок льда. Конечно, есть всякие размораживатели замков и прочие чудеса - но таскать с собой еще и размораживатель?!

В общем, надо было что-то делать.
Почему бы не сделать электронный замок, как у нас в офисе?

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

Самой сложной частью оказалось найти именно механику: тот самый замок с ригелем, который можно было дергать электричеством.
В магазинах такого не было, маркетплейсы еще не придумали, и только на известном китайском сайте можно было купить то, что нужно.
Сейчас-то это не проблема - замок-защелка с электроприводом давно не редкость, но это сейчас.
Закрывается такое устройство само, а для открытия нужно подать кратковременно 12 вольт на контакты - дверь и откроется. Как раз то, что нужно.

Следующий этап - ключ и контроллер.
Можно было просто купить готовый комплект - в какой-нибудь конторе по установке охранных сигнализаций вполне можно было заказать - но ведь так неинтересно, к тому же хотелось завязать его на системы "умного дома".

Использовать контактную "таблетку" как у подьездных домофонов не хотелось - открытые контакты, страшненькие ключи...
Поиски по тематическим ресурсам привели к ключам в виде разноцветных RFID-брелоков - они маленькие, легкие, с разными кодами, не боятся воды, снега, не цепляются ни за что и не рвут карманы.
В качестве считывателя - врезной датчик типа CP-Z: снаружи просто "кнопка", к которой надо поднести ключ.

Подобные датчики бывают разных модификаций, на разные стандарты RFID-ключей, при всём этом имеют однотипный интерфейс подключения - несколько разноцветных проводов:
красный - питание, +12В
черный - "земля"
белый и синий - DATA

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

Датчик подключается по протоколам Wiegand или iButton - в обоих случаях передается код считанного ключа. Остается его принять и обработать - и этим будет заниматься микроконтроллер.

Контроллер - на базе ESP-12F (8266), хорошо известного ардуинщикам девайса с WiFi-модулем. Правда, чаще он фигурирует под названием Wemos - тот же самый ESP-12, припаяный к плате с USB-разьемом, но зачем нам лишние детали?

ESP8266 легко программируется, и у него достаточно выводов для использования в подобных устройствах.
Программа на C++, ардуино-компилятор, заливка прошивки через TTY.

Таким образом, задача сводится к тому, чтобы подключить считыватель по протоколу iButton (эмуляция того самого "подъездного ключа-таблетки"), считать код - и если он правильный, то включить реле, которое подаст напряжение на электрозамок.

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

Получился такой код (кусок кода)
...

byte  ctl_mode;
unsigned long ctl_timer;

#define CTL_ADD   2       // add mode
#define CTL_OPEN  1       // opened
#define CTL_CLOSE 0       // closed

#define CTL_PERIOD 500 

#define KEY_FILE  "keys.bin"

unsigned long ow_timer;
#define OW_PERIOD 200

#include "OneWire.h"

OneWire ds(PIN_OW); // выход считывателя
byte addr[8];

void OnewireSetup(){
  ow_timer = 0;
}

void OnewireLoop(){

  char data[100];

  if((millis() - ow_timer) > OW_PERIOD){

    if(ds.reset()){     // если обнаружено устройттво

      ds.write(0x33);   // отправляем команду "считать ROM"
      delay(50);        // на всякий случай ждем/
      int found=0;
      for(int i=0; i<8; i++){
        addr[i] = ds.read();    // считываем
        if(addr[i] != 0xff){
          found++;
        }
      }

      if(found == 8){

        sprintf(data, "%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X",   addr[0],addr[1],addr[2],addr[3],addr[4],addr[5],addr[6],addr[7]);

        // search at eeprom =======================
        if(ctl_mode == CTL_ADD){

          File file = LittleFS.open(KEY_FILE,"a+");

          byte found = 0;
          int cnt = 0;
          byte buff[8];

          size_t x = file.readBytes((char*)buff, 8);
          while(x == 8){
            cnt++;
            if(memcmp(addr, buff, 8) == 0){
              // last, found
              found = 1;
              break;
            }
            x = file.readBytes((char*)buff, 8);
          }

          // not found - new key!
          if(!found){
            file.write(addr,8);

            added(); // indicate it
            ctl_mode = CTL_CLOSE;
          }
          file.close();
        }
        // run mode ================================
        else{
          File file = LittleFS.open(KEY_FILE,"r");

          byte found = 0;
          int cnt = 0;
          byte buff[8];

Логика очень простая: в случае успешного нахождения ключа устанавливается режим CTL_OPEN, это заставляет срабатывать реле, которое открывает замок.
Через небольшое время этот режим меняется на CTL_CLOSE, и реле выключается. Это позволяет избежать задержки выполнения цикла.

Также была добавлена физическая кнопка, при нажатии которой также включается режим CTL_OPEN, для открывания изнутри.
Тут в коде не показано, но там просто установка переменной в значение.

В коде видны функции open_lock и alarm_lock - это отправка события об открывании или попытке открытия в общую систему "умного дома": изначально модуль работал просто в режиме WiFi-клиента, подключался к MQTT-брокеру и отправлял эти события в него.
Реализация стандартная для библиотеки PubSubClient, поэтому нет смысла ее тут приводить.

Как это бывает - всё делалось на скорую руку в порядке эксперимента: модуль ESP-12, блок понижения питания с 12 до 3.3В, реле, оптопары - всё спаяно вместе в страшного "паука", засунуто в обычную пластиковую распаечную коробку с красной светящейся кнопкой, прикручено к двери.
Кнопку нажал - дверь открылась, захлопнул, ключ приложил - опять открылась.
Оказалось настолько удобно, что работало и работало, да так и осталось.

Была идея поставить вместо RFID-ридера сканер отпечатков пальцев - и такой даже был найден, но внезапно оказалось:
- грязные руки (после каких-либо работ) сводят идею к нулю: залепить грязью или моторным маслом замок легко, а оттирать его лениво и неохота.
- дождевые капли мешают
- зимой в мороз нет никакого желания снимать перчатки, и тем более отковыривать иней.
- перспектива заставлять приехавших родственников "прокатывать пальчики" совсем не радует. Да лучше им отдельных брелков раздать, каждому свой!
Поэтому отпечатки пальцев были оставлены до лучших времен.

В процессе эксплуатации выяснилось, что (внезапно) у WiFi небольшой радиус действия, связь то и дело пропадает, особенно в дождливую погоду.
Девайс пытается восстановить соединение - и в этот момент перестает обрабатывать открытие замка, причем в самый неожиданный момент.

Поскольку к тому времени это было не единственное устройство, которому было трудно достучаться до единственного роутера - подключение WiFi было заменено на PainlessMesh.
Это достаточно известная технология, по сути тот же WiFi, но тут каждый модуль работает одновременно и клиентом и точкой доступа.
Выстраивается система подключений к ближайшим соседям, что позволяет растянуть общую длину сети значительно больше, чем при обычном WiFi-соединении. При этом обмен данными идет через JSON-пакеты, подобно тому же MQTT, и в итоге они передаются в обычный MQTT-брокер.

Почти все используемые до этого модули были переведены с прямого WiFi на mesh, в том числе и замок.
По сути, менялась только та часть прошивки, которая отвечает за установление соединения, после чего модуль перепрошивается по OTA, и переходит в mesh-сеть. Та часть, которая отвечает за полезную работу, как тут за работу с ключами - остается прежней.
Теперь замок перестал терять сеть, и просто работал.

Со временем оказалось, что отсутствие тяжелого ключа может сыграть злую шутку - можно выйти и захлопнуть дверь без ключа.
Возникла задача - приделать на экране умного дома кнопку "Открыть калитку".
При нажатии кнопки формируется MQTT-команда "open", которая идет в mesh-сеть на контроллер замка, устанавливает там CTL_OPEN - дальше всё происходит само.

Так-то экран висит в доме на стене - в случае чего тому, кто остался в доме, даже не придется идти к воротам, достаточно посмотреть в камеру и нажать кнопку.
Если дома никого не осталось - это тоже не проблема:

Технически вебсервер умного дома работает на отдельном компьютере в домашней сети.
Когда-то это был старый ноутбук, теперь - одноплатник.
Доступа снаружи нет - поэтому пришлось на внешнем сервере выделить на это дело отдельный домен, при обращении на который nginx через upstream пересылает по частной приватной сети запрос прямо на этот сервер. Ну а там уже - окно авторизации, вход - и вот он, экран управления.

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

Первоначальная идея о хранении ключей в контроллере работает прекрасно, но что если нужно добавить еще такой замок, на другую дверь?
Вопрос в синхронизации ключей - ведь если они храняться локально в одном контроллере, значит надо записать их в другой?

Необязательно. Ведь уже есть способ отправки события "alarm 23:43:44:22:44:66:77:22", если к считывателю поднесли неизвестный ключ, и есть способ дистанционного открытия по команде.
Оставалось сделать модуль обработки ключей: если ключ найден в БД и ему разрешен доступ - отправить на замок команду на открытие. Буквально СКУД на коленке.

Тут несколько слов о том, как всё это управление организовано:

Во-первых, всё управляется MQTT-сообщениями: температура такая-то - увеличим настройки отопления на столько-то; сработал датчик освещенности - включить свет там, там и вот там; или вот пришел ключ такой-то - отправить команду открыть.

Изначально это был скрипт, получающий и отдающий команды. Он рос, усложнялся, пока не превратился в монстра, которого надо было изучать, прежде чем вносить изменения.
И тогда было применено другое решение: какая разница, раз у нас всё равно MQTT - пусть будет 5, 10 скриптов, каждый будет заниматься своим делом, своей зоной ответственности.
Назовем их агентами (не AI! хотя...), пусть они висят, слушают команды и реагируют на них.
Один отвечает за освещение, другой следит за камерами, третий контролирует температуру.
Удобство еще и в том, что можно разнести по разным устройствам агентов, MQTT-брокер и БД, не говоря уже о датчиках и исполнительных контроллерах, которые могут быть вообще где угодно.

Теперь появился агент, отвечающий за ключи. Он слушал события о появлении новых ключей и разрешал или запрещал срабатывания.

пример агента-ключника
#!/usr/bin/perl -w

$|=1;

use Net::MQTT::Simple;
use DBI;
use JSON;
use Data::Dumper;

$SIG{CHLD} = "IGNORE";

my $agent_name = 'keyholder';

########################################

my $mqtt = Net::MQTT::Simple->new("192.168.1.*");

my $db_user='************';
my $db_name='agents';
my $db_pass='************';
my $db_host='192.168.1.*';

my $dbh=DBI->connect("dbi:Pg:database=$db_name;host=$db_host", $db_user, $db_pass ) || die "Cant connect database\n";

########################################

# device database

my $lock1 = '42668688';
my $lock2 = '6356544';

#------------------------------------------
# send MQTT message
sub pub {
 my ($topic, $message, $retain) = @_;
 my $pid = fork();
 if(defined $pid && $pid == 0){
   if($retain){
     $mqtt->retain($topic => $message);
   }else{
     $mqtt->publish($topic => $message);
   }
   sleep(2);
   exit(0);
 }
}

sub check_key {
  my ($lock, $key) = @_;
  # search
  my $sth = $dbh->prepare("select * from door_keys where key_id = ? and lock_id = ?");
  $sth->execute($key, $lock);

  if(my $row = $sth->fetchrow_hashref){
    if($row->{allowed} == 1){
      pub("mesh/to/$row->{lock_id}","open");
    }
    $dbh->do("update door_keys set last_dtm=? where key_id=? and lock_id=?", undef,
      time, $row->{key_id}, $row->{lock_id});
  }
  else{
    $dbh->do("insert into door_keys (dtmcreate, key_id, lock_id) values (?,?,?)", undef,
      time, $key, $lock);
  }

  $sth->finish;
}
#------------------------------------------

# processing
print "Started\n";

$mqtt->run(
  "agent/$agent_name" => sub {
    my ($topic, $message) = @_;
    if($message eq 'restart'){
      print "Restaring\n";
      exit;
    }
  },
  "mesh/from/$lock1" => sub {
    my ($topic, $message) = @_;
    if($message =~ /^{.*}$/){
      my $data = from_json($message);
      ....
    }
    elsif($message =~ /alarm ([\dABCDEF:]{23})/){
      my $key = $1;
      check_key($lock1, $key);
    }
  },
  "mesh/from/$lock2" => sub {
    my ($topic, $message) = @_;
    if($message =~ /^{.*}$/){
      my $data = from_json($message);
      ....
    }
    elsif($message =~ /alarm ([\dABCDEF:]{23})/){
      my $key = $1;
      check_key($lock2, $key);
    }
  },
);
exit;

Так оно проработало много лет, пока наконец электромагнитное реле, включавшее замок, не начало глючить.
Видимо подгорели контакты - оно щелкало, но срабатывало через раз, а в последнее время и вообще приходилось по несколько раз подносить ключ, чтобы сработало.
Можно было бы просто заменить реле на новое - но раз уж переделывать, то почему бы не поставить туда MOSFET?
А заодно убрать наконец "паука" и сделать по-нормальному, на печатной плате.

Вот это и было то самое последнее обновление: вместо "паука" - компактная печатная плата, вместо механического реле - транзистор, и ключи в базе.
Конкретная схема ничего особенного из себя не представляет, кто хоть раз делал "моргалку светодиодом" прекрасно сделает и такое.

Из особенностей можно отметить только то, что у ESP есть неприятная особенность - при перезапуске на всех выводак кратковременно появляется логическая 1, т.е. транзистор успеет открыться и откроет замок.
Но есть и другая особенность: для старта в нормальном режиме нужно прижимать GPIO15 к земле, напрямую или через резистор, а вот после старта можно использовать как обычный пин ввода-вывода.
И вот его-то и можно использовать для управления транзистором: в начале на нем по-любому будет 0, и ничего не будет открываться без команды.
Всё остальное остается без изменений.

И вот плата изготовлена (часик не торопясь, не считая разводки платы в программе), новый чип ESP припаян и прошит, ключи попали в базу и для них проставлены доступы.
Всё работает.

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

Комментарии (40)


  1. aborouhin
    04.03.2026 23:55

    11 лет назад построили дом, поставили ворота с калиткой. Калитку сразу оснастил электромеханическим замком, а снаружи повесил панельку для ввода кода или прикладывания RFID-карты. Ко всему проводку подвёл. Даже RFID-карт пачку купил. И оставил в таком виде до момента, когда со стороны дома доберусь до автоматизации...

    Так вот, прошло 11 лет - и всё это счастье так ни к чему и не подключено :) Поскольку внезапно оказалось, что калитка в частном доме не особенно и нужна, пешком выходишь не так часто, а когда всё же выходишь - гораздо проще с брелка открыть ворота и выйти через них, чем что-то нажимать/прикладывать отдельное. Ну а коли нет потребности - то задача переместилась в самый низ и без того изрядно обширного списка "доделать как-нибудь потом".


    1. IsyanovDV
      04.03.2026 23:55

      Плюсую. Свой дом, к нему две дороги с разных сторон (было куплено 2 участка и объединено), соответственно 2 ворот автоматизированных и 2 калитки. Тоже были мысли поставить везде электромеханические замки и прочее, но по факту калитка в доме нужна только как аварийный вход при отключении электричества, а так в 99.9% случаев едешь на авто, а когда все же идешь пешком то используешь те же ворота в режиме "дверь" (или как он там называется у разных производителей).

      Единственное, что сделал - это видеонаблюдение участка и площадок перед воротами и освещение участка и ворот через умный дом (реле с wi-fi), все это в Алису, нарисовал скрипты типа "включи свет во дворе" или "выключи свет на заднем дворе" и т.д. Туда же подключил управление воротами, через wi-fi реле с сухим контактом, и теперь у меня в зависимости от времени суток по команде открываются ворота и автоматически включается освещение участка (в зависимости от ворот в которые въезжаю), вот это реально удобная штука которой пользуюсь каждый день.

      Проблема "кто-то пришел, откройте!" решается или звонком мне/жене на мобильный и самым простым радиодомофоном, которых сейчас пруд пруди на Озоне.


      1. aborouhin
        04.03.2026 23:55

        Возможность удалённо открыть ворота у меня тоже есть (надо бы ещё считывание состояния прикрутить, чтобы уведомлять, если забыл и оставил открытыми). А вот освещение двора теоретически прикрутить к умному дому могу легко, но тоже выяснилось отсутствие потребности. Оно 100% времени работает в автоматическом режиме по датчику освещения. Темно - горит, светло - не горит, другие сценарии оказались не востребованы.


        1. IsyanovDV
          04.03.2026 23:55

          Я тоже сначала по датчику сделал, но потом оказалось, что есть сценарии когда удобно включить его принудительно (чистка снега или ремонт чего-то в темное время суток, но часто но все же) плюс удобно управлять несколькими прожекторами в группах (у меня участок 15 соток и 11 прожекторов по территории и на воротах).

          В целом все от целей и задач, бесспорно.


    1. JBFW Автор
      04.03.2026 23:55

      У нас собаки )

      Поэтому регулярно прогулки в лес, пешочком...


    1. ptr128
      04.03.2026 23:55

      Мне ключи от калитки всё равно приходится с собой таскать, так как автономной системы электроснабжения у меня нет. Да и случаи срабатывания УЗО происходят хотя бы раз за 1-3 года.

      Да и ТС как-то обошёл этот момент. Не заметил в статье ничего ни про аварийное питание от АКБ, ни про ключ, для открывания если и аварийное питание сдохло.


  1. Intercoms
    04.03.2026 23:55

    Почти похожая ситуация, но замок понадобился с автономным питанием. Калитка вмонтирована в сдвижные ворота, и ворота и калитка сварены из стального проката квадратного сечения, стороннее электричество не подвести, поэтому остался только вариант на батарейках. Писать код или объединять с несуществующей системой умного дома надобности нет. Основное пожелание - открытие калитки при помощи карты и влагоустойчивость. Нашел такой замок на известном китайском сайте. Есть два варианта - Tuya или TT Lock app thru Bluetooth. Tuya отбросил, условия подключения к интернету нет.


    1. Yuriy_krd
      04.03.2026 23:55

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


  1. Arhammon
    04.03.2026 23:55

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


    1. DMGarikk
      04.03.2026 23:55

      обычно у замков с ригелем, всетаки есть ключ механический, которым его можно открыть

      ==

      вообще както мало вариантов таких уличных замков как по мне, всмысле с электроуправлением


      1. Arhammon
        04.03.2026 23:55

        И получается надо носить 2 ключа вместо 1, возможно по этому их и мало...


    1. JBFW Автор
      04.03.2026 23:55

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


      1. DMGarikk
        04.03.2026 23:55

        а потом у вас повиснет китайский ридер карточек...маловероятно, но такое возможно...и ..и всё.

        у электронных способов замков всегда должен быть резерв, на случай пожара например ну или альтернативный способ попадания на территорию (я в окно лазил например)


        1. JBFW Автор
          04.03.2026 23:55

          Ох уж эта вера в китайское не-качество )

          Нормально там всё с ним.


          1. DMGarikk
            04.03.2026 23:55

            Нормально там всё с ним.

            до первой поломки в 3 часа ночью в проливной дождь

            дело не в китайском качестве, а в резервировании критического сервиса

            у меня калитка с электрозамком 5 лет стиоит и ключ я не сделал к ней (механический)...ниразу не ломалась, нет никакой 200% гарантии что у меня снег с крыши не упадет в очередной раз и не оборвет провод к ней...или дерево в сильный ветер (а ветра тут бывают)

            но у меня через ворота войти можно если чтото приключится


      1. ptr128
        04.03.2026 23:55

        От срабатывания автомата или УЗО никто не застрахован. Тем более в случае уличного электрооборудования. Не заливать же всё лаком? Силикагель помогает, но бывало забывал его восстановить в СВЧ. УЗО у меня каскадом: 30 ма на весь дом и по 10 ма на ветки во влажных помещениях и уличные.


        1. JBFW Автор
          04.03.2026 23:55

          Тут - не пропадет )

          Отдельная сеть 12в с резервированием.


          1. DMGarikk
            04.03.2026 23:55

            12 вольт на замок? водой зальёт гденить коммутационную коробку и просадка по напряжению будет такая что он не сработает

            12в на больших расстояниях кмк не очень идея


            1. JBFW Автор
              04.03.2026 23:55

              Это не так. И коробку не зальёт, и падения такого не будет даже если провода в воду сунуть (смотря какие провода конечно).

              Более 10 лет работает, так что не, не так )

              Однако понимаю сомнения: когда-то очень давно вот тоже было "12 вольт на камеру", но по тоненькому сигнальному проводочку от хлипенького блочка питаниьца из розетки )

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


          1. ptr128
            04.03.2026 23:55

            Тут - не пропадет )

            То есть лучше пожар, чем сработавшая защита? Ну-ну )))

            Отдельная сеть 12в с резервированием.

            Через весь участок провода толщиной в палец, как в автомобиле от АКБ? Хреновая идея. Например, у меня привод ворот 500 Вт номинальных, но пусковой ток до 5А на 220 В.

            Вы не думали, почему, например, PoE не 12, а 48 В и при этом мощностью лишь 15.4 Вт?


            1. JBFW Автор
              04.03.2026 23:55

              Про существование автомобильных предохранителей вы же в курсе? )

              Про аккумуляторы тоже знаете, верно?

              И обычного 0.75 провода типа ШВВП для срабатывания ЗАМКА (а не привода электродвигателя ворот) тоже вполне достаточно


              1. ptr128
                04.03.2026 23:55

                Про существование автомобильных предохранителей вы же в курсе? )

                Я то как раз в курсе. Это Вы писали, а не я:

                Тут - не пропадет )

                Или Вы не в курсе, что при срабатывании предохранителя напряжение пропадает? )))

                И обычного 0.75 провода типа ШВВП для срабатывания ЗАМКА

                Одного замка то да, а вот всей

                Отдельная сеть 12в

                уже вряд ли.


  1. Soorin
    04.03.2026 23:55

    "летом и пешком его буквально некуда деть, хоть на пояс вешай" всегда решалось верёвочкой на шею, а не электроникой...


    1. JBFW Автор
      04.03.2026 23:55

      Ахаха, представил себе этот ключ на шее )


      1. Soorin
        04.03.2026 23:55

        Ну да. Проще нагородить электронику, чем поставить замок с нормальным ключиком ))


        1. katet13
          04.03.2026 23:55

          Ну у меня с "нормальным ключиком" и зимой, эта скотина, регулярно замерзает.

          Приходится танцевать с бубном, что бы оттаять личинку либо лезть через забор


        1. JBFW Автор
          04.03.2026 23:55

          Проще, как ни странно.

          Механика тут вообще самый ненадежный элемент - даже "простой советский железный засов" может наглухо примерзнуть или продавать,и если его не открывать часто.

          Но без механики совсем - остаются магнитные замки, а они открываются лёгким движением руки.


          1. DMGarikk
            04.03.2026 23:55

            Но без механики совсем - остаются магнитные замки, а они открываются лёгким движением руки.

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

            другое дело что при снятии питания от откроется


  1. Oncenweek
    04.03.2026 23:55

    Аналогичную проблему - нежелание таскать ключ, постоянное его забывание решил простой заменой висячего замка с ключом на висячий замок с комбинацией колесиками - дешево и сердито. И без электричества работает


  1. Nik1912
    04.03.2026 23:55

    На мой взгляд, неплохо бы добавить кэширование БД ключей на самом замке - на случай, если по какой-то причине замок не сможет получить ответ от СКУДа.


  1. D88
    04.03.2026 23:55

    Можно ссылку на замок?


    1. JBFW Автор
      04.03.2026 23:55

      Вот примерно такой, аналогичный (не реклама), на маркетплейсах есть

      Захлопывается вручную, открывается подачей 12в на провода, простая защёлка.

      Изнутри можно механической кнопкой открывать - как раз на случай "бежать от пожара"

      Но вообще подобные разные есть сейчас


  1. DashBerlin
    04.03.2026 23:55

    А картинки будут?


    1. JBFW Автор
      04.03.2026 23:55

      Нет

      Плату уже засунул в коробку, коробку закрыл, а делать фотографии предметов интерьера - плохая примета...

      Можно было картинок с интернета по набрать, типа CP-Z, белков и замка - но это и так можно найти


  1. ptr128
    04.03.2026 23:55

    В процессе эксплуатации выяснилось, что (внезапно) у WiFi небольшой радиус действия, связь то и дело пропадает, особенно в дождливую погоду.

    Где это? У меня в хорошую погоду ESP32-C3 с антенной в виде змейки на плате, лёжа на торпеде под лобовым стеклом при движении, умудряется прицепиться к домашнему уличному WiFi на столбе на расстоянии свыше 650 метров. В совсем плохую может снизиться до 300 метров. Но меньше на прямой видимости ещё ни разу не замечал.

    Девайс пытается восстановить соединение - и в этот момент перестает обрабатывать открытие замка, причем в самый неожиданный момент.

    Видимо, это какая-то особенность ESP8266. На ESP32 такого не замечал.

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

    Нет там честной единицы, так как выходное сопротивление большое. Но если на GPIO нет резистора на землю, то не только MOSFET, а даже биполярный транзистор вполне может открыться, так как потенциал выводов в режиме на ввод действительно близок к потенциалу питания.


    1. JBFW Автор
      04.03.2026 23:55

      Там внутренняя подтяжка срабатывает, пока инициализируется микроконтроллер. Ее по напряжению вполне достаточно.

      Мосфету конечно нужен резистор, это само собой.

      Насчёт дальности - оно же от окружения зависит: тут много металла кругом, ворота, навес, машины, это не то же самое что на пустой дороге. Причем связь должна быть двухсторонней, то есть не только слышать AP, но и AP должна слышать модуль.

      Если вместо стандартного WiFi использовать что-то типа espnow - там да, связь значительно дальше. Но там обмен штучными пакетами, это другое уже


      1. ptr128
        04.03.2026 23:55

        Где схема?

        Там внутренняя подтяжка срабатывает, пока инициализируется микроконтроллер.

        Через несколько десятков килоом, что я и указал. Конкретно для ESP8266 - от 30 до 100К.

        Ее по напряжению вполне достаточно.

        Только если не поставить резистор на землю. Мне даже 10К хватило для ESP32, чтобы не было ложных срабатываний при включении. Для ESP8266, возможно, надо раза в два меньше.

        Насчёт дальности - оно же от окружения зависит: тут много металла кругом, ворота, навес, машины, это не то же самое что на пустой дороге.

        Вопрос исключительно в высоте столба или дополнительных AP. У меня участок в 30 соток две AP покрывают, так как не хотел столбы ставить выше крыши дома.


  1. DashBerlin
    04.03.2026 23:55

    Вот не совсем понял, чем лучше это решение просто механического замка. Не описаны минусы такой системы. Например на перепады температуры, что тот и тот может замерзнуть, не описано, как все запитано и какие это вызывают проблемы. Например, в СКУД, если подача питания прекращается, она открывает замки. Или есть какое-то резервное питание или иной способ открытия замка. Я этого не увидел в статье.

    ЗЫ вместо отпечатка пальца можно использовать сетчатку глаза, она точно мазутом не испачкается или на нее не одеть перчатку ))


    1. JBFW Автор
      04.03.2026 23:55

      Это потому что нужна практика использования, чтобы сравнить и понять.

      Во-первых, вместо ключа - плоский брелок. Да, я знаю, некоторые любят здоровенные связки с парой ключей от дома, машины, офиса, брелоком от сигналки, декоративной шайбой "БМВ" и открывашкой-мультитулом, но я не люблю таскать в кармане металлолом )

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

      В третьих, это быстро. Рассказать это нельзя, это надо просто почувствовать - взялся за ручку двери - палец на кнопке - нажал - открыл, закрыл и ушел. Пришел - поднес руку - потянул за ручку - зашёл.

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

      С питанием тоже все довольно просто: обычный сетевой провод ШВВП 0.75, от блока батарей 12в. Он не боится "если вода попадет": один конец в одной герметичной коробке, другой - в другой. Если его не резать специально - ничего с ним не будет.

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

      Как-то так.

      И кстати про сетчатку тоже вопрос сомнительный: это конечно соседям даст повод задуматься (сканер сетчатки - заметят процесс, камеры над дверью - буквально киноштамп), но реально это может быть весьма неудобно. И точно дольше чем поднести руку


  1. sansar
    04.03.2026 23:55

    вот буквально паралелльно.

    и контроллер считываля и замка, и интеграция до sip домофона, и в соседней ветке интеграция с home assistant

    https://github.com/OpenIPC/intercom