Ще один спосіб відправляти сповіщення про відсутність електропостачання за допомогою ZeroTier та Monit

На доу й поза ним багато украйтівців змагаються у способах отримання сповіщень про відключення світла.

Свій спосіб я описав тут

Його недоліком є певна надлишковість — тут і UPS, і raspberry pi

Подумав, а який простіший спосіб можна для таких цілей?

Можна пінгувати свій публічний IP з певного пристрою, а що коли його немає або роутер має резервне живлення? Тоді потрібно:

  1. Мати внутрішню мережу між пристроями
  2. Мати пристрій, який гарантовано буде втрачати електроживлення, але матиме статичний IP у внутрішній мережі
  3. Зовнішній пристрій, який знаходиться поза межами квартири, має мати доступ до внутрішніх пристроїв

Тут на допомогу приходить ZeroTier — безкоштовна система, що дозволяє створити глобальну внутрішню мережу без білої IP адреси.

Тож мережа виглядає так:

  1. VPS на одному з хостерів закордоном, можна брати найдешевший варіант, навіть без білої IP. На VPS потрібно встановити один з linux дистрибутивів
  2. Роутер з підтримкою ZeroTier (наприклад Mikrotik або OpenWRT-based) або мікрокомп’ютер, на який встановити ZeroTier
  3. Пристрій у внутрішній мережі, який гарантовано вимикається при зникненні електрики. Телевізор, tv-box, wifi-лампочка — все, що має IP адресу.

Для доступу до пристрою (3) потрібно налаштувати маршрути в ZeroTier мережі (описано тут zerotier.atlassian.net/...​ier and Physical Networks )

На VPS потрібно становити безкоштовну систему моніторингу, наприклад monit

Так як VPS тепер має доступ до внутрішніх пристроїв, правило можна налаштувати так

check host homeserver with address 10.10.0.10
    if failed ping then exec /etc/monit/sendnoconnection
    else if succeeded then exec /etc/monit/sendconnectionrestored

Потрібно створити два bash скрипти, в яких і відправляти сповіщення

/etc/monit/sendnoconnection

Для сповіщень у телеграм, підійде такий

source /etc/monit/bot.secret
CHATID=-10000020220224


MESSAGEURL="https://api.telegram.org/bot${TOKEN}/sendMessage?chat_id=${CHATID}"

curl -s -X POST $MESSAGEURL -d chat_id=$CHATID -d text="$MESSAGE" -d disable_notification=true

Якщо у вас немає резервного живлення на роутері, то у схемі вистачить VPS і роутера, без додаткового пристрою.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі