В качестве введения
Коммуникационное оборудование достаточно быстро устаревает. Еще совсем недавно 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 порт, на него можно включить звуковое/световое оповещение.
На свободные порты можно повесить секретную кнопку вкл/выкл сигнализации, или не секретную – вызов охраны.
Скрытый текст


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

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

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

Dmitr_B
04.07.2026 17:49Все круто, только лицензия привязана к id диска/флешки. И после замены чипа получится в итоге коробочка в которую можно залить только openwrt (как советуют ниже в комментах).

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

Small69 Автор
04.07.2026 17:49У меня иногда отваливался, но это было на RouterOS 6 версии, на семерке не наблюдал пока.

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

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

Small69 Автор
04.07.2026 17:49Сейчас модно esp32 :) Выход типа "Alarm" есть у камер подороже, там нужно настраивать детекцию человека, или пересечение линии.

chelaxe
04.07.2026 17:49Можно использовать порт с питанием, вот в моей статье был пример https://habr.com/ru/articles/364593/

Small69 Автор
04.07.2026 17:49Читал вашу статью, интересно и полезно, я на PoeOut повесил питание извещателя, можно удаленно выключать, когда флудит.

gwathedhel
04.07.2026 17:49Троллейбус_из_хлеба.жпг

Small69 Автор
04.07.2026 17:49Если выкинуть жалко, так пусть еще поработает

randomsimplenumber
04.07.2026 17:49Да, на каком то неответственном участке пусть работает. Сигнализация ведь именно такая вещь, неответственная.

Small69 Автор
04.07.2026 17:49Для домашнего использования вполне подойдет - работоспособность микрота можно мониторить многими способами. На других объекта можно использовать идею для подключения простых датчиков на уже работающем микроте.

randomsimplenumber
04.07.2026 17:49Конечно подойдет. Особенно если в доме нет ничего ценного. Цена отключения сигнализации - 1 кусь кусачками. Интернет пропал - сигнализация превратилась в тыкву.
Ну, или сигнализация показала что какие то люди тырят на вашей даче груши. Ваши действия?

balamutang
04.07.2026 17:49Другой вариант: сигнализация показывает что датчик срабатывает. А на деле никого нет. После N-ного раза уже никто не смотрит - срабатывает она или нет.

5erG0
04.07.2026 17:49Так груши тырить могут и при дорогой сигнализации. Ведь сигнализация она и остаётся сигнализацией. Она не прогонит хулиганов, а только сообщит хозяину. Если это не груши, а ценности из кирпичного дома, то тогда хозя нажмёт красную кнопку и ГБР уже выезжает.

randomsimplenumber
04.07.2026 17:49Кмк настоящая (тм) сигнализация и свма умеет нажать красную кнопку.

Small69 Автор
04.07.2026 17:49Обычно вневедомственная охрана с ГБР ставит свое оборудование, зачем им самодеятельность, они серьезные дядьки и несут мат. ответственность в случае несвоевременного приезда. И ежемесячная оплата, приличная.

randomsimplenumber
04.07.2026 17:49Вот именно. У взрослых дядек взрослые игрушки, 20 копеек экономии им неинтересны.

Small69 Автор
04.07.2026 17:49Про кусачки - можно сделать резервный канал через сотовиков.
Про груши - Все зависит от ситуации.
Можно позвонить соседу или участковому, предварительно договорившись,
Можно успеть приехать самому и навалять, но есть опасность получить срок за нанесение телесных повреждений.
Но это все не про надежность сигнализации...

randomsimplenumber
04.07.2026 17:49Воот.. security это больше процессы чем оборудование.
можно сделать резервный канал через сотовиков.
Для охраны груш избыточно. А если за
забором что то ценное - глушилка в помощь, например.

kirya_vyazemskiy
04.07.2026 17:49Слишком много сложных обходных решений для простой задачи. Как сигнализация это выглядит ненадёжно, может зависнуть или сработать не так в нужный момент. Для эксперимента ок, для реального объекта я бы так не ставил.

alcotel
04.07.2026 17:49Идея рвать провод сама по себе интересна, когда нет других GPIO. Правда, бывает так, что с хорошим Ethernet-фронтендом при обрыве одного из проводов соединению плохеет, но оно не рвётся насовсем. Лучше, наверное, наоборот - закорачивать одну из витых пар.
Но если есть сухой контакт, то им так-то и питание устройству можно включать. Тогда резервного питания хватит на пару лет.

Solar_fox
04.07.2026 17:49Провайдеры давно используют этот трюк для контроля над своими ящиками с коммутаторами, такое реально применяется уже лет двадцать не меньше, конечно там нет стука в телегу но есть системы мониторинга в которых прописано что этот порт потерял линк и аварийная бригада едет выяснять что там случилось.

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