MikroTik Скрипты: отправить уведомление о включении устройства в Telegram

MikroTik скрипт отправляет уведомление о включении устройства, в Телеграм. Позволит узнать о неожиданных перезагрузках устройства или проблемах питания оборудования, дополняя систему мониторинга.
При отправке сообщения в Telegram, так же запишет событие в журнал системы.

🔔 Для работы скрипта вы должны иметь Токен Телеграм бота и ID чата или персональный ID. Создание Telegram бота и получение необходимых ID не является темой этой статьи.

Сообщение Телеграм содержит:

  1. идентификатор устройства;
  2. информационное сообщение о запуске устройства.

Статья на других языках:
🇺🇸 — Mikrotik Scripts: sending power on notification to Telegram
🇪🇸 — Mikrotik Scripts: envío de notificación de encendido a Telegram
🇫🇷 — Scripts Mikrotik: envoi d’une notification pour allumer l’appareil dans Telegram
🇩🇪 — MikroTik-Skripte: Senden Sie eine Benachrichtigung, um das Gerät im Telegramm einzuschalten
🇳🇱 — MikroTik-scripts: melding over het inschakelen van het apparaat, bericht in Telegram

Изменить идентификатор устройства

Измените идентификатор устройства, чтобы понять, какое устройство присылает сообщение.

[System] -> [Identity]

или

/system identity set name="WhiteHouseMikroTik"

Создать скрипт уведомление о запуске устройства

Скрипт создает переменную RebootStatus. Если переменная RebootStatus не имеет значения (что случается при первом запуске скрипта) происходит отправка сообщения в Телеграм. После чего переменной RebootStatus присваивается значение True.

Для работы скрипта необходимо установить следующие разрешения: read, write, policy, test.

[System] -> [Scripts] -> [+] -> [Name: CheckPowerOn] -> [Policy: read, write, policy, test]

Код скрипта:

# Func: Telegram send message
:local TGSendMessage do={
    :local tgUrl "https://api.telegram.org/bot$Token/sendMessage?chat_id=$ChatID&text=$Text&parse_mode=html";
    /tool fetch http-method=get url=$tgUrl keep-result=no;
}

# Constants
:global RebootStatus;
:local TelegramBotToken "987654321:AAFJIVTAWodBwzGX2CLne6-PK4RFNSy-8OY";
:local TelegramChatID "987654321";
:local DeviceName [/system identity get name];

:local TelegramMessageText "\F0\9F\9F\A2 <b>$DeviceName:</b> start after Power Off.";

# Program
:if ($RebootStatus != true)  do={
    $TGSendMessage Token=$TelegramBotToken ChatID=$TelegramChatID Text=$TelegramMessageText;
    :set RebootStatus true;
    :log info "Script CheckPowerOn send Telegram message."
}
MikroTik Скрипты: Telegram уведомление о включении устройства

Добавить запуск скрипта в расписание

Для работы скрипта необходимо установить следующие разрешения: read, write, policy, test.

[System] -> [Schedule] -> [+] -> [Name: CheckPowerOn script] - > [Interval: 00:05:00] -> [Policy: read, write, policy, test]

Код скрипта:

/system script run CheckPowerOn
 Добавление скрипта проверки запуска устройства и отправки сообщения Телеграм, в планировщик заданий MikroTik

Теперь каждые 5 минут устройство будет проверять переменную перезагрузки и отправлять уведомление в Телеграм, если устройство было перезагружено.


🟢 Mikrotik скрипт для отправки уведомления о включении устройства в Телеграм обсуждался в этой статье. Я надеюсь, это поможет увеличить контроль над вашим устройством MikroTik. Однако, если вы столкнетесь с каким-то проблемами при настройке, не стесняйтесь написать в комментариях. Я постараюсь помочь.

Комментарии 9

  • Удалось отладить скрипт перенес из # Constants значения botID и ChatID в # Func после этого заработало.

    # Func: Telegram send message
    :local TGSendMessage do={
    :local botID «bot1696680810:AAFWQ-RLZ5vdeTo3c0k2yuk-PiYfWXSfNPE» ;
    :local ChatID «-1001400941310″ ;
    /tool fetch http-method=get url=»https://api.telegram.org/$botID/sendmessage?chat_id=$ChatID&text=$Text&parse_mode=html» keep-result=no;
    }

    # Constants
    :global RebootStatus;
    :local DeviceName [/system identity get name];

    :local TelegramMessageText «\F0\9F\9F\A2 $DeviceName: start after Power Off.»;

    # Program
    :if ($RebootStatus != true) do={
    $TGSendMessage Text=$TelegramMessageText;
    :set RebootStatus true;
    :log info «Script CheckPowerOn send Telegram message.»
    }

  • У меня не работает не могу настроить скрипт Микротик Hap ac

    • Какое значение переменной RebootStatus у вас?

      • Значение переменной RebootStatus true , может я скриншот проверки синтаксиса скрипта скину а вы посмотрите что не так ?

        • Если у вас этот статус True, скрипт отработал успешно, проблема при отправке Telegram сообщения. Попробуйте отправить простой текст, только английский язык, без спецсимволов, кавычек и пр.

        • Отправка в Telegram работает из другого скрипта с теми же значениями botID и ChatID что и в вашем скрипте а из вашего не работает.

  • Приветствую, попытался упростить исходный скрипт с учётом уже объявленной функции MyTGBotSendMessage из следующей статьи но он не хочет работать… Подскажите, где ошибся? — для меня это всего третий скрипт, загруженный в Mikrotik, пытаюсь по наитию править.

    # Constants
    :global RebootStatus;
    :local DeviceName [/system identity get name];
    :local MessageText «\F0\11\9F\A2 $DeviceName: start after Power Off.»;
    :local SendTelegramMessage [:parse [/system script get MyTGBotSendMessage source]];

    # START Send Telegram Module
    :if ($RebootStatus != true) do={
    $SendTelegramMessage MessageText=$MessageText;
    :set RebootStatus true;
    :log info «Script CheckPowerOn send Telegram message.»
    }
    # END Send Telegram Module

    • Здравствуйте, вы молодец, что оптимизируете.
      Это будет вот так:
      :global RebootStatus;
      :local DeviceName [/system identity get name];
      :local MessageText "\F0\9F\9F\A2 $DeviceName: start after Power Off.";

      :if ($RebootStatus != true) do={
      :local SendTelegramMessage [:parse [/system script get MyTGBotSendMessage source]];
      $SendTelegramMessage MessageText=$MessageText;
      :set RebootStatus true;
      :log info "Script CheckPowerOn send Telegram message."
      }

      • Гыгыгы, спасибо, а я там ещё и скрипт подключения устройства немного модернизировал, теперь он уведомляет и при отключении устройства сразу же! — для этого уменьшил время аренды адреса до 1 минуты, чтобы сразу же фиксировать когда произошёл дисконнект.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector