SVITLOBOT на Mikrotik

SVITLOBOT на Mikrotik

@roman0ff

Біль-менш детальна інструкція як налаштувати взаємодію з сервісом СВІТЛОБОТ ваш домашній роутер Mikrotik.

Дана інформація не претендує на аутентичність. Це швидше каталогізація інфи з чатів та FAQів світлобота з моїми доповненнями.

Для будь-яких варіантів налаштування потрібен пристрій, який буде включений в розетку 220в і який буде підключений до домашньої мережі, щоб роутер міг пінгувати цей пристрій. В моєму випадку - розумна розетка(дешева, 3-4 бакси з алі) що підключена до мережі Wi Fi. Цей пристрій налаштовано і він отримав ip-адресу на роутері. Поки цю адресу видно (IP -> DHCP server -> Leases - тут можна глянути список пристроїв які отримали айпі адресу на роутері) і можете її пінгувати, то можна дальше продовжувати налаштування. Нижче я буду вказувати саме розумну розетку як джерело наявності чи відсутності "сигналу".


Варіант 1.

Цей варіант скинули в одному з FAQів. Пояснення "на пальцях":

По замовчуванню, на мікроті завжди є активне правило, яке дозволяє пінгувати цей роутер. Воно називається "Allow icmp".

IP -> Firewall

Відкриваєте це правило і копіюєте. В полі Src. Address вказуєте IP адресу, з якої на даний момент пінгується ваш домашій роутер (айпі, що вам видав провайдер). Вкладка Action - drop (нижче скрін).

IP -> Firewall

Обзиваєте якось це правило (Comment), для прикладу SVITLOBOT_drop

Увага! Це правило повинно бути вище ніж правило "Allow icmp"! Просто мишкою перетягуєте щоб воно стояло НАД "Allow icmp".

Допоки це правило активне, сервіс СВІТЛОБОТ не зможе пінгувати ваш роутер.

49.12.157.158 - адреса (зі слів адміністратора СВІТЛОБОТ), з якої пінгуються адреси інших роутерів.

Наступний крок - Tools -> Netwatch

Host - вказуєте айпі адресу розумної розетки, для прикладу 192.168.10.15

Interval - 00:01:00 (тобто 1 хв), решта без змін.

Вкладка UP Пишем наступне

/ip firewall filter disable [find comment="SVITLOBOT_drop"];

Вкладка Down Пишем наступне

/ip firewall filter enable [find comment="SVITLOBOT_drop"];
Netwatch


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

Тиснете ОК і все. Допоки цей запис активний у Netwatch, він буде робити наступне:

Кожну хвилину ваш мікрот пінгує розумну розетку (192.168.10.15). Допоки розетка доступна, виконується правило в полі UP. що каже "Вимкнути правило у firerwall з назвою SVITLOBOT_drop. А значить СВІТЛОБОТ успішно пінгує ваш роутер ззовні та, умовно, "бачить", що за вашою адресою є електрика.

Коли пропадає електропостачання, розумна розетка стає недоступною, домашній мікрот більше не може її пінгувати, відповідно у netwatch активується те, що вказано у полі Down - активується правило, що блокує пінг із сервісу СВІТЛОБОТ (49.12.157.158) до вашого роутера ззовні. А значить СВІТЛОБОТ, умовно, "бачить", що у вас зникло світло.

При цьому ваш мікрот і дальше працює від аккумів, інтернет та інші пристрої доступні. Це, мабуть, самий простий варіант налаштування. Завжди працював стабільно.

Але, вже декілька раз були помилкові спрацювання, тому нижче буде інший варіант, в якому не сервіс СВІТЛОБОТ буде пінгувати ваш роутер, а навпаки, ваш роутер буде посилати запит до сервісу СВІТЛОБОТ.


Варіант 2.

System -> Scripts

Створюєе новий скрипт, для прикладу SvitlobotSENDapi

script

В полі скрипта пишете те, що нижче, та після цього зберігаєте його.

/tool fetch url="http://api.svitlobot.in.ua/channelPing?channel_key=BLABLABLA" keep-result=no

Де BLABLABLA - це ваш персональний ключ, який вам виділив СВІТЛОБОТ при реєстрації.


Далі йдемо в System -> Scheduler і створюєте новий запис з назвою, для прикладу SvitlobotAPI з інтервалом 1 хв.

Scheduler

Нижче в полі має бути вказано:

/system script run SvitlobotSENDapi

Де SvitlobotSENDapi - це саме та назва скрипта, який був зроблений вище! Зберігаємо, обзиваємо (comment), для прикладу, SvitlobotAPI і закриваємо.

Що воно робить - кожну 1 хв. запускається скрипт SvitlobotAPI , який відправляє запрос виду

http://api.svitlobot.in.ua/channelPing?channel_key=BLABLABLA

Умовно, - ваш роутер "кричить" сервісу СВІТЛОБОТ, що він доступний, тобто електрика є.


А тепер останній пункт:

Tools -> Netwatch

Знову вказуємо пінгувати розумну розетку (192.168.10.15) з інтервалом 1 хв.

У полі UP вказуємо

/system scheduler enable [find name="SvitlobotAPI"]

У полі DOWN вказуємо

/system scheduler disable [find name="SvitlobotAPI"]


Як воно працює:

Допоки ваша розумна розетка пінгується кожну хвилину, то Netwatch активує в Scheduler виконання скрипта SvitlobotSENDapi, тобто ваш роутер кожну хвилину кричить СВІТЛОБОТу шо він доступний, все файно.

Як тільки розетка перестає пінгуватись(пропала електрика) Netwatch відключає в Scheduler щохвилинне виконання скрипта SvitlobotSENDapi, тобто ваш роутер перестає сигналізувати СВІТЛОБОТу про свою доступність. А значить ви на карті світлобота будете позначені червоним.

Report Page