Найти в Дзене
Ленивый инженер

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

Недавно у нас во дворе появилась неожиданная задача. Я живу в обычной десятиэтажке — около 150 квартир. Территория закрытая, въезд через ворота. Раньше всё было просто: в будке сидел охранник и открывал ворота. Но стоимость услуг охраны выросла, и от этой схемы решили отказаться. Возник вопрос: как сделать так, чтобы свои машины заезжали автоматически, а чужие — нет? Не хотелось: В итоге решение получилось довольно простым: камера распознаёт номер → ворота открываются → в Telegram приходит уведомление. И всё это работает локально через Node-RED, который запущен на Sonoff iHost. На всю систему ушёл буквально один вечер настройки. Система состоит из трёх частей. На воротах стоит камера Dahua DHI‑ITC413‑PW4D‑IZ3. Она умеет распознавать номера прямо на борту (ANPR). Камера делает сразу несколько вещей: То есть решение открывать ворота принимает сама камера. Контроллер CAME получает сигнал от камеры и физически открывает ворота. Никакой дополнительной логики тут нет — просто исполнительный
Оглавление

Недавно у нас во дворе появилась неожиданная задача.

Я живу в обычной десятиэтажке — около 150 квартир. Территория закрытая, въезд через ворота. Раньше всё было просто: в будке сидел охранник и открывал ворота.

Но стоимость услуг охраны выросла, и от этой схемы решили отказаться.

Возник вопрос: как сделать так, чтобы свои машины заезжали автоматически, а чужие — нет?

Не хотелось:

  • ставить отдельный сервер
  • писать сложный бэкенд
  • делать систему, которую потом никто не сможет поддерживать

В итоге решение получилось довольно простым:

камера распознаёт номер → ворота открываются → в Telegram приходит уведомление.

И всё это работает локально через Node-RED, который запущен на Sonoff iHost.

На всю систему ушёл буквально один вечер настройки.

Как устроена система

Система состоит из трёх частей.

Камера

На воротах стоит камера Dahua DHI‑ITC413‑PW4D‑IZ3.

Она умеет распознавать номера прямо на борту (ANPR).

-2

Камера делает сразу несколько вещей:

  • распознаёт номер машины
  • проверяет его по белому списку
  • подаёт сигнал на привод ворот
  • отправляет событие в Node-RED

То есть решение открывать ворота принимает сама камера.

Привод ворот

Контроллер CAME получает сигнал от камеры и физически открывает ворота.

Никакой дополнительной логики тут нет — просто исполнительный механизм.

Node-RED на iHost

Здесь происходит вся «человеческая» логика:

  • принимаются события от камеры
  • разбирается JSON
  • убираются дубли
  • формируется уведомление
  • отправляется сообщение в Telegram

Получается удобный мониторинг происходящего.

Как камера отправляет события

У камер Dahua есть механизм вебхуков под названием ITSAPI.

Работает он очень просто:

1️⃣ на камере указывается адрес сервера

2️⃣ при каждом распознавании номера камера отправляет
HTTP POST

3️⃣ внутри приходит JSON с данными

-3

В моём случае адрес выглядит так:

http://10.0.0.20:1880/NotificationInfo/TollgateInfo

Это endpoint сценария в Node-RED.

После этого при каждом проезде машины камера:

  • решает, открывать ворота или нет
  • отправляет подробную информацию о событии

Как выглядит поток в Node-RED

Сценарий состоит из нескольких логических блоков.

-4

1. Приём события от камеры

Первая нода — HTTP In.

Она принимает POST-запрос от камеры.

После этого данные передаются в функцию разбора JSON.

-5

2. Нормализация данных

Камеры Dahua могут присылать JSON в разных вариантах структуры.

Поэтому я сделал функцию, которая приводит всё к единому виду:

msg.payload = {
metadata: {...},
imageBuffer: Buffer,
raw: body
}

В metadata собираются все полезные поля:

  • номер машины
  • цвет
  • марка
  • тип автомобиля
  • направление движения
  • время события
-6

3. Дедупликация событий

Камера иногда присылает несколько событий подряд для одного проезда.

Чтобы не заспамить Telegram, я добавил простую защиту.

Если один и тот же номер пришёл менее чем за 60 секунд, сообщение просто игнорируется.

-7

4. Формирование уведомления

Дальше формируется понятный текст.

Например:

Камера распознала номер А000А111

Номер: А000А111
Цвет: White
Марка: Chery
Тип: SUV
Регион: RUS
Время: 24.02.2026 12:34:56

Номер найден в базе

Если камера прислала фотографию — она прикрепляется к сообщению.

После этого сообщение отправляется в Telegram.

-8

Как это выглядит в жизни

Когда машина подъезжает к воротам:

1️⃣ камера распознаёт номер

2️⃣ проверяет его по белому списку

3️⃣ подаёт сигнал на привод ворот

4️⃣ ворота открываются

Параллельно:

  • событие уходит в Node-RED
  • формируется уведомление
  • сообщение появляется в Telegram

Для обычного жителя это выглядит максимально просто:

подъехал → ворота открылись сами.

А администратор (например председатель ТСЖ) может видеть кто и когда заезжал.

-9

Почему это получилось сделать быстро

Самое важное — правильно разделить роли.

Камера:

  • распознаёт номер
  • проверяет белый список
  • открывает ворота

Node-RED:

  • принимает событие
  • обрабатывает данные
  • отправляет уведомления

iHost:

  • просто хост для Node-RED

Когда система разделена таким образом, не нужно:

  • писать сложный бэкенд
  • поднимать отдельные серверы
  • придумывать сложную архитектуру

Достаточно настроить вебхук и собрать поток.

Что можно добавить дальше

Эта система уже работает в продакшене, но её легко расширить.

Например:

  • база жильцов
  • статистика въездов
  • интеграция с другими сервисами
  • автоматические уведомления о чужих машинах

Но даже в текущем виде связка

камера → ворота → Node-RED → Telegram

уже полностью решает задачу.

И самое приятное — всё работает локально и без облаков.

Если интересно, могу отдельно показать:

  • как именно выглядит поток в Node-RED
  • какие ноды используются
  • и какие ошибки я допустил при первой настройке.