Найти в Дзене

Автомониторинг температур + оповещение в telegram

Оглавление

В данной статье будет приведен код для bat скрипта выводящего данные с температурных датчиков датчиков с ПО aida64 business и поиск определенных значений, при успешном нахождении строки со значением происходит вывод оповещения в чат телеграмм.

Пример оповещения в чате telegram
Пример оповещения в чате telegram

Необходимо установить aida64 business - кликабельно.

Создадим текстовый файл 1.bat в каталоге C:\Sensors\ со следующим содержимым

https://github.com/Aleksandr7xXx/TGBotSensorsTemp/blob/main/1.bat
Содержимое доступно по ссылке выше

Также создадим файл aida64.rpf в каталоге C:\Sensors\ со следующим содержимым

ReportProfile="Custom"
ProfileFile=""
ReportFormat="txt"
RemoteReportFolder="Reports"
RemoteReportFileName="$HOSTNAME"
InfoPage="Computer;Sensor"

Далее для использования мониторинга необходимо лишь добавить свои значения

SET TOKEN=Token_вашего_бота
SET CHAT_ID=-ID_вашего_чата

После запустить файл 1.bat и скрипт соберет и при необходимости оповестит вас.

Как получить данные Token_вашего_бота и ID_вашего_чата можно прочитать в статье.

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

Чтобы бот автоматически ограничивал максимальную температуру железок необходимо применить знания из статьи.

Автозапуск скрипта с помощью scheduler windows.

Для выполнения скрипта в определенный период времени необходимо добавить его, например в scheduler windows(планировщик заданий) следующим образом:

Настройка автозапуска скрипта через планировщик заданий Windows
Настройка автозапуска скрипта через планировщик заданий Windows
Настройка автозапуска скрипта через планировщик заданий Windows
Настройка автозапуска скрипта через планировщик заданий Windows
Настройка автозапуска скрипта через планировщик заданий Windows
Настройка автозапуска скрипта через планировщик заданий Windows

Разбор кода скрипта:

"C:\Program Files (x86)\AIDA64\aida64.exe" /R C:\Sensors\1.txt /SILENT /IDLE /TEXT /CUSTOM C:\Sensors\aida64.rpf

Указывается путь до aida и файла шаблона для вывода данных, также параметры описанные в документации

setlocal enabledelayedexpansion

Включаем расширенную обработку команд

set nd=32& set kd=53& set nd2=1& set kd2=20
for /l %%a in (%nd%,1,%kd%) do set "ns=!ns! /c:"^\[%%a\]""
for /l %%a in (%nd2%,1,%kd2%) do set "ns=!ns! /c:"^\[%%a\]""
<"C:\Sensors\1.txt">"C:\Sensors\2.txt" (for /f "tokens=2 delims=[]" %%a in ('find /n /v ""^|findstr/rv%ns%') do echo %%a)

Обрезаем с 1 по 20 и с 32 по 53 строки файла содержащие лишнюю информацию после чего записываем полученный результат в файл 2.txt

FINDSTR "[8-9][0-9]" C:\Sensors\2.txt > C:\Sensors\4.txt
::@<"C:\Sensors\2.txt">"C:\Sensors\4.txt" (for %%i in ("75" "76" "77" "78" "79" "80" "81" "82" "83" "84" "85" "86" "87" "88" "89" "90" "91" "92" "93" "94" "95" "96" "97" "98" "99" "100" "101" "102") do @find %%i)
::@<"C:\Sensors\2.txt">"C:\Sensors\4.txt" (for %%i in ("85" "86" "87" "88" "89" "90" "91" "92" "93" "94" "95" "96" "97" "98" "99" "100" "101" "102") do @find %%i)

Первый параметр FINDSTR "[8-9][0-9]" производит поиск в файле со значениями 80-99 и выводит их в файл 4.txt

Также для более детального поиска значений например 75-102 или 85-102 приведены 2 закомментированные "::" строки ниже , можно раскомментировать одну из них убрав "::".

For /F "delims=" %%a in (C:\Sensors\4.txt) do (
set /A count+=1
if !count!==1 curl -s -X POST %URL% -d chat_id=%CHAT_ID% -d text="%%a"

Если скрипт нашел данные (температуры) заданные в предыдущем шаге, то скрипт запишет их в файл 4.txt и данная часть команд отправит заданные строки if !count!==1 if !count!==2 и т.д. в телеграмм канал с помощью curl.

Максимум можно отправить 20 строк, после чего происходит 30 секундный таймаут на отправку сообщений. В скрипте реализован таймаут строками

::TIMEOUT 30
::SetLocal EnableExtensions EnableDelayedExpansion
::set count=0
::For /F "delims=" %%a in (C:\Sensors\1.txt) do (
:: set /A count+=1
:: if !count!==21 curl -s -X POST %URL% -d chat_id=%CHAT_ID% -d text="%%a"
::)

При необходимости отправки более 20 строк из файла раскомментировать и задать отправку необходимых строк добавив строку

if !count!==21 curl -s -X POST %URL% -d chat_id=%CHAT_ID% -d text="%%a"

и изменив значение 21 на номер отправляемой строки.