Поиск по базе знаний

Мониторинг состояния домашнего сервера и оповещения через Алису

Круглосуточная работа домашнего сервера автоматизации (на базе микрокомпьютера Raspberry Pi, мини-ПК или NAS) требует постоянного и пристального контроля его технического состояния. Внезапный перегрев процессора из-за забившейся пылью системы активного или пассивного охлаждения, а также критическое переполнение системного накопителя логами и временными файлами могут полностью парализовать работу всех умных устройств в вашем доме. Намного надежнее узнать о надвигающейся системной аварии заблаговременно, получив громкое голосовое предупреждение от голосового ассистента Алисы.

В этом подробном практическом руководстве мы настроим надежную систему автоматического мониторинга аппаратных ресурсов сервера Linux в среде Node-RED. Мы научим систему считывать текущую температуру процессора, отслеживать свободное место на жестких дисках и отправлять тревожные голосовые сообщения на Яндекс Станцию в случае превышения безопасных рабочих параметров.


Шаг 1: Чтение температуры процессора в Linux системах

В операционных системах семейства Linux (включая дистрибутивы Debian и Ubuntu, на которых чаще всего разворачивается среда Node-RED) текущие показатели системных датчиков температуры экспортируются ядром в виртуальную файловую систему. Это позволяет считывать их как обычные файлы без установки тяжелого стороннего софта.

Для чтения температуры процессора мы можем применить стандартную ноду exec, которая позволяет выполнять системные команды терминала Bash прямо из интерфейса Node-RED:

  1. Перетащите узел exec из левой панели палитры на рабочий холст редактора.
  2. В поле команды (Command) вставьте точный системный путь к файлу аппаратного датчика: cat /sys/class/thermal/thermal_zone0/temp.
  3. Настройте периодический запуск этой ноды каждые 5 минут с помощью входящей ноды inject в режиме циклического интервального таймера.

Выходом ноды exec будет являться текстовая строка, содержащая температуру процессора в тысячных долях градуса Цельсия (например, число 48000, что соответствует 48°C). Для перевода этого значения в стандартные градусы мы разделим полученное число на 1000 в следующей ноде обработки данных.


Шаг 2: Проверка свободного места на жестком диске сервера

Вторая частая причина неожиданных сбоев домашнего сервера умного дома — переполнение файловой системы. Логи Node-RED, базы данных истории и кэш мультимедийных устройств могут быстро забить карту памяти MicroSD или локальный SSD.

Для быстрой проверки диска мы выполним в ноде exec классическую консольную команду Linux df.

  1. Добавьте вторую ноду exec на рабочее поле.
  2. Пропишите команду df -h / | awk 'NR==2 {print $5}'. Эта команда считывает информацию о корневом разделе / и с помощью утилиты awk вырезает процент его заполнения (например, 78%).
  3. Подключите выход ко входу общей аналитической ноды function.

NOTE

Если вам требуется интегрировать полученную системную статистику с внешними системами мониторинга (например, пересылать предупреждения на удаленный сервер Zabbix или отправлять вебхуки), вы можете использовать стандартные HTTP-ноды ввода и вывода в Node-RED. Это превратит ваш сервер в полноценный API-клиент.


Шаг 3: Логика обработки данных и установка аварийных лимитов

Теперь нам необходимо объединить собранные данные и проанализировать показатели. Добавьте ноду function и соедините с ней выходы нод контроля CPU и диска.

Нам нужно написать алгоритм, проверяющий превышение критических порогов: температура CPU выше 75°C или заполнение диска более 90%.

Вставьте следующий JavaScript-код:

// Проверяем тип входящих данных и распределяем их
if (msg.payload.includes("%")) {
    // Обработка данных диска
    const diskUsage = parseInt(msg.payload.replace("%", ""), 10);
    flow.set("diskUsage", diskUsage);
} else {
    // Обработка температуры CPU
    const cpuTemp = parseFloat(msg.payload) / 1000;
    flow.set("cpuTemp", cpuTemp);
}

const currentTemp = flow.get("cpuTemp") ?? 0;
const currentDisk = flow.get("diskUsage") ?? 0;

let alarmMessage = "";

// Проверяем пороговые значения
if (currentTemp > 75) {
    alarmMessage += `Внимание! Зафиксирован перегрев процессора домашнего сервера. Текущая температура ${Math.round(currentTemp)} градусов. `;
}
if (currentDisk > 90) {
    alarmMessage += `Внимание! Заканчивается свободное место на системном диске. Заполнено ${currentDisk} процентов памяти. `;
}

if (alarmMessage !== "") {
    msg.payload = alarmMessage;
    return msg;
}
return null; // Если всё в норме, гасим цепочку

Шаг 4: Голосовое вещание тревоги через Яндекс Станцию с Алисой

Чтобы Станция произнесла текст предупреждения, мы будем использовать отправку команды TTS (Text-to-Speech) через локальный плагин управления или ноду yandex-station-tts.

Подключите к выходу ноды function управляющий узел Яндекс Станции. В настройках укажите тип действия TTS и передайте полученное сообщение msg.payload. В случае перегрева Алиса громко и четко озвучит проблему в гостиной.

IMPORTANT

Если температура процессора поднимется выше критической отметки 85°C, это может вызвать необратимый тепловой пробой чипа. Добавьте в схему умную розетку, питающую сервер. В случае фиксации температуры >85°C Node-RED должен отправить команду на полное обесточивание розетки сервера для его физического спасения, предварительно отправив экстренную команду выключения через SSH.

WARNING

Во избежание постоянного голосового спама от колонки в процессе отладки, обязательно используйте ноду trigger или delay после ноды function. Ограничьте отправку сообщений так, чтобы Алиса произносила предупреждение не чаще одного раза в 30 минут, даже если температура процессора продолжает оставаться высокой.

TIP

Для снижения нагрева сервера настройте автоматическое включение USB-вентилятора охлаждения через дополнительную умную реле-розетку, когда температура процессора превышает 60°C, и отключайте его при снижении температуры до 45°C. Это создаст гистерезис и избавит вас от лишнего шума.

Инструкция по настройке

1

Сбор системной информации сервера

Настройте чтение файлов системной телеметрии процессора и свободного пространства в Linux.

2

Обработка и парсинг данных

Используйте JavaScript для выделения критических показателей из вывода консольных утилит.

3

Настройка порогов срабатывания

Задайте аварийные границы для перегрева CPU и критического заполнения накопителей.

4

Голосовое вещание через Станцию

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

Совет эксперта: Управляйте домом с компьютера

Установите Яндекс Браузер, чтобы управлять умными розетками и светом прямо со стартовой страницы, не отвлекаясь от работы.