В качестве введения
Коммуникационное оборудование достаточно быстро устаревает. Еще совсем недавно Mikrotik hAP RB951Ui-2nD был вполне приличным роутером, но по сегодняшним меркам 100м порты, однодиапозонный Wi-Fi, и заслуженный процессор Qualcomm Atheros QCA9531 - слабовато даже для дачи.
Но устройство собрано добротно (спасибо ребятам из Риги за хорошее качество), отлично работает с Router OS 7, имеет USB порт и PoE - жалко от него избавляться.
Пришла в голову идея – с минимальными доработками использовать его в качестве основного блока сигнализации на удаленном объекте.
Минимально необходимые компоненты и оборудование:
1.Любой роутер Mikrotik с блоком питания. У меня - hAP RB951Ui-2nD
2.Доступ в интернет. Если на объекте нет интернета, используем USB модем, у меня оказался не нужный – Huawei E3372h-153 с симкой МТС.
3.Какой-нибудь извещатель – так эти устройства называются у охранников. Это может быть ИК датчик присутствия, разбития стекла, или просто геркон на дверь. Извещатели должны быть с «сухими контактами». Для тех, кто не в курсе это просто нормально разомкнутые контакты реле не связанные по питанию с датчиком.
Дополнительные компоненты – по желанию.
4.IP камера. У меня HiWatch IPC-T020(C) – самая простая. Можно прицепить несколько по проводу и(или) Wi-Fi по необходимости.
5.Резервное питание. Я использовал батарею из четырех литий-железо-фосфатных (LiFePO4) аккумуляторов (контроллер заряда Lisolec 4S BMS LiFePO4 12V) + дополнительный БП на 14 вольт для зарядки батареи и питания камеры.
Как это работает
Как известно стандартный 10/100м Ethernet порт использует четыре сигнальные линии: Tx+(б/оранж), Tx-(оранж), Rx+(б/зел), Rx-(зел). MDI(TIA/EIA-568B). При стандартном подключении к порту сетевой платы (например) линии TX соединяются с линиями RX и линк поднимается.
Уберем сетевую плату. Соединим напрямую в патче Rx с Tx. Порт поднимется, но при этом получим так называемую петлю (loop). Ситуация очень не приятная в Ethernet, ее обычно отлавливают с помощью технологии защиты от петель (loop protect у Mikrotik). Но у нас роутер! Не включаем нужный порт в любые бриджи, отключаем loop protect на нем, и ура, порт горит, а широковещательный шторм – отсутствует. Разъединяем одну линию, линк падает – счетчик “Link Downs” на порту прибавляется. Восстанавливаем линию, порт поднимается.
Но не все так просто… При соединении проводников порт не всегда переходит в состояние “Up”. Видимо, это особенность RouterOS. Чтобы гарантированно установить статус порта нужно ненадолго включить “Cable Test” на этом порту, остальные манипуляции не помогают. Но у чипсета есть особенность, что при включении “Cable Test” на одном порту, иногда, все остальные порты switch chip кратковременно уходят в “Down”, что очень неприятно, когда у вас на них что-то подключено, например камера или интернет.
Хорошо, что в роутере много Ethernet портов! Используем два порта. Исключаем их из всех бриджей, отключаем loop protect, соединяем между собой Tx и Rx. Контактами извещателя прерываем одну из линий линка и … все, получили блок сигнализации. Эта схема работает отлично, и не требует дергать “Cable Test”.
Осталось в Scheduler запустить скрипт, который регулярно проверяет “Link Downs” на нужном порту, и шлет оповещение хозяину.
Реализация
Настраиваем микрот для доступа в интернет.
Кратко прокомментирую конфиг, он достаточно стандартен для выхода в интернет через USB модем.
Настраиваем Ethernet интерфейсы: E1 – приходит резервное питание; E2 – подключена Ip камера; E3 – в бридже для настройки роутера; E4 и E5 используются для сигнализации.
Wi-Fi интерфейс на ваш вкус
LTE стандартно для USB модема в режиме PPP (Stik)
В бридж добавляем все порты, кроме E4-E5
Делаем локальную сеть 192.168.5.0/24, создаем DHCP сервер, камере даем фиксированный ip.
ip firewall filter и ip firewall nat все стандартно
# 2026-06-24 10:11:15 by RouterOS 7.23.1# # model = RB951Ui-2nD /interface ethernet set [ find default-name=ether1 ] name=E1-Power12 set [ find default-name=ether2 ] name=E2-Camera set [ find default-name=ether3 ] name=E3 set [ find default-name=ether4 ] advertise=10M-baseT-half,10M-baseT-full arp=disabled loop-protect=off name=E4-Alarm set [ find default-name=ether5 ] advertise=10M-baseT-half,10M-baseT-full arp=disabled loop-protect=off name=E5-AlarmP poe-out=off /interface wireless set [ find default-name=wlan1 ] band=2ghz-onlyn country=russia3 frequency=\ auto max-station-count=10 mode=ap-bridge multicast-buffering=disabled \ multicast-helper=disabled name=WiFi2.4 ssid=<SSID> wireless-protocol=\ 802.11 wps-mode=disabled /interface wireless security-profiles set [ find default=yes ] authentication-types=wpa2-psk group-key-update=1h \ mode=dynamic-keys supplicant-identity=MikroTik /interface lte set [ find default-name=lte1 ] allow-roaming=yes disabled=yes name=MTS-LTE /ppp profile set *0 use-ipv6=no use-mpls=no use-upnp=no add name=MTS-LTE use-compression=no use-encryption=no use-ipv6=default \ use-mpls=no use-upnp=no /interface bridge add name=Bridge protocol-mode=none /interface bridge port add bridge=Bridge interface=E1-Power12 add bridge=Bridge interface=E3 add bridge=Bridge interface=E2-Camera add bridge=Bridge interface=WiFi2.4 /ip address add address=192.168.5.1/24 interface=Bridge network=192.168.5.0 /ip pool add name=Pool ranges=192.168.5.10-192.168.5.200 /ip dhcp-server add address-pool=Pool interface=Bridge lease-time=1d name=DHCP /ip dhcp-server network add address=192.168.5.0/24 dns-server=192.168.5.1 gateway=192.168.5.1 netmask=24 /ip dhcp-server lease add address=192.168.5.2 client-id=1:XX:XX:XX:XX:XX:XX comment=Camera \ mac-address=XX:XX:XX:XX:XX:XX server=DHCP /ip dns set allow-remote-requests=yes cache-max-ttl=1d servers=1.1.1.1,77.88.8.8 /ip firewall filter add action=drop chain=input dst-port=22,23,53,80,443,8291 in-interface=MTS protocol=tcp add action=drop chain=input dst-port=53 in-interface=MTS protocol=udp /ip firewall nat add action=masquerade chain=srcnat out-interface=MTS src-address=192.168.5.0/24 /system clock set time-zone-autodetect=no time-zone-name=Europe/Moscow /system ntp client set enabled=yes /system ntp client servers add address=217.91.44.17
При включении питания, бывают случаи, что USB модем сразу не работает, поэтому с задержкой 40с после включения проверяем интерфейс MTC, если не готов перегружаем USB по питанию. Заодно инициализируем глобальную переменную E4linkDown – число срабатываний;
/system scheduler add name=RebootUSB1\ on-event=":global E4linkDown -1;\ \r\ndelay 40; \r\n :if ( [/interface get [find name=\"MTS\"] run] = false ) \ do={/system routerboard usb power-reset duration=10s};"\ policy=read,write,policy,test start-time=startup
И основная процедура проверки срабатывания сигнализации, отправки уведомлений и проверки кто присутствует на объекте.
:local MacA { "Admin1"="XX:XX:XX:XX:XX:XX"; "Admin2"="XX:XX:XX:XX:XX:XX" }; :local Text ""; :local DT ("-=".[/system clock get date]."=".[/system clock get time]."=-"); :local linkD [/interface get [find name="E4-Alarm"] link-downs] :if ($linkD != $E4linkDown) do={ :foreach ind,mac in=$MacA do={ :if ([:len [/interface/wireless registration-table find mac-address=$mac]]>0) do={set $Text "$Text $ind,"}; }; :local LenText ([:len $Text]-1); :set $Text ([:pick $Text 0 $LenText]); :if ([:len $Text] = 0) do={ :do { /tool fetch url="https://api.telegram.org\ /botXXXXXXXX:XXXXXXXXXXXX/sendMessage\?chat_id=XXXXXXXXXX\ &text=--Mikrot-->%0A$DT%0AAlarm$linkD!" keep-result=no; } \ on-error={ /log info "Error Telegram, send SMS, eMail"; do { /tool sms send port=usb1 phone-number="+7XXXXXXX" message="Mikrot->\n$DT\n\ Alarm:$linkD!"; /tool e-mail send to="XXXXX@XXXX.ru" sub="Mikrot" body="Mikrot- >\n$DT\nAlarm:$linkD!"; }\ on-error={/log info "Error send SMS or eMail";} }; # on-error }; # if ([ len... :global E4linkDown $linkD; }; # if ($linkD... /log info "TestAlarm: $DT; $Text; $E4linkDown; $linkD";
Описание по тексту скрипта:
:local MacA – массив с именами пользователей и их mac адресами Wi-Fi. Используется для идентификации пользователей. Человек приходит на объект, его телефон присоединяется к Wi-Fi роутера и сигнализация выключает режим охраны. Естественно, на телефоне должно быть настроено автоматическое подключение к этому ssid и включена опция “использовать МАС адрес устройства”. Кстати, на телефон будет раздаваться интернет с роутера J.
:local DT Текущие дата и время устройства
:local linkD читаем сколько выключений интерфейса на момент запуска скрипта.
:global E4linkDown сколько выключений интерфейса было до момента запуска скрипта.
Логика работы: Проверяем, были ли срабатывания сигнализации с момента последнего запуска скрипта? Если нет, пишем в лог, обновляем E4linkDown и выходим – сработок не было. Если были, проверяем есть ли маки из таблицы MacA в регистрации Wi-Fi? Если есть пишем в лог, обновляем E4linkDown и выходим – сигналка выключена – хозяева на объекте. Если никого нет, тревога – срабатывание без хозяев – шлем оповещение в телеграмм, если не получилось, дублируем на sms и email.
Скрипт нужно запускать регулярно (у меня 1 раз в минуту) с помощью scheduler
/system scheduler add interval=1m name=TestAlarm on-event="/system script run TestAlarm\r\ \n" policy=read,write,policy,test start-time=startup
Использование камеры
Изображения с камер можно использовать по разному. Самый простой вариант сохранить в нужный момент в память микрота и переслать по email.
:local DT ("-=".[/system clock get date]."=".[/system clock get time]."=-"); /tool fetch url="http://192.168.5.2/ISAPI/Streaming/channels/101/picture" user="admin" password="XXXX" http-auth-scheme=digest dst-path="Obj.jpg" :delay 3s /tool e-mail send to="xxxx@xxx.ru" subject="Foto obj" body="$DT" file="Obj.jpg" :delay 5s /file remove "Obj.jpg"
Но памяти на этой модели не много, да и при интенсивном использовании появляются битые сектора, поэтому вариант не очень хороший. Можно подключить по USB кардридер с внешним питанием, и писать картинки на флешку.
Я делаю по-другому. У меня есть сервер умного дома, и сигнализация подключена к его внутренней сети. Сигнал тревоги вместе с оповещением поступает на сервер, а уже сервер обращается к камере и забирает картинку. Для упрощения конфига эта часть в нем не показана.
Что можно доделать
В один шлейф можно подключить много датчиков (извещателей) последовательно, или параллельно, если контакты нормально разомкнуты.
Так как у нас есть еще три свободных порта, то можно организовать еще один независимый шлейф сигнализации и оповещать, какой контур сработал.
У нас есть PoEout порт, на него можно включить звуковое/световое оповещение.
На свободные порты можно повесить секретную кнопку вкл/выкл сигнализации, или не секретную – вызов охраны.
Скрытый текст


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

ru_vlad
04.07.2026 17:49Вот бы подсказали что делать с подобным Mikrotikом который память не держит (после перезагрузки, все настройки на дефолт).

balamutang
04.07.2026 17:49Если netinstall не помогает то тогда флешку надо на плате, сдуть и новую припаять

aladkoi
04.07.2026 17:49У меня на подобный микротик на usb порт подключен внешний модем L850. Все работает стабильно после любой перезагрузки. Все настройки сделал AI агент вместе со скриптами запуска.

balamutang
04.07.2026 17:49Чего только не придумают лишь бы Ардуино не использовать :)
Кстати на камерах обычно есть служебные контакты которые можно использовать для инициации отправки картинки на почту или на FTP сервер

digrobot
04.07.2026 17:49Да, фича называется "Alarm input", есть в веб-интерфейсе большинства камер, но реально на корпус не выведено, видимо надо на плате искать.

chelaxe
04.07.2026 17:49Можно использовать порт с питанием, вот в моей статье был пример https://habr.com/ru/articles/364593/
Gansterito
Я вот не помню почему, но rx/tx в аналогичной конфигурации я замыкал через резистор.
Small69 Автор
Резистор обычно используется в шлейфе систем ОПС, для того, чтобы различать состояние КЗ и охраны на линии. Как правило 4к7. В ethernet используется стандартный патч без резисторов для соединения порт-порт. По-этому здесь в цепи rx/tx резисторов не использую.