Home Assistant — выводим значения температуры жестких дисков, процессора и т.п.
Продолжаю знакомство с Home Assistant, как платформой для «Умного дома».
Домашний сервер живет на балконе в кошмарном климате:).
Поэтому я решил изучить возможность обработки температурных данных.
Прежде всего в этой заметке я расскажу как создавать сенсоры.
Для мониторинга температуры жестких дисков будем использовать hddtemp.
Все примеры были опробованы в Ubuntu 20.04.
Для сенсоров мы будем использовать два типа (platform):
- command_line
- systemmonitor
command_line
Данный тип позволяет работать с командной строкой системы.
На вход мы указываем какую команду надо выполнить.
На выход получаем значение от отработанной команды.
Это позволяет нам получать какие угодные данные из системы.
Так же можно к примеру получать данные из серийного порта и т.п.
Получение значения температуры процессора
В Ubuntu есть виртуальная файловая система sysfs.
Созданная для безопасного получения данных из ядра системы.
С ее помощью мы получим температуру процессора.
Команда:
cat /sys/class/thermal/thermal_zone0/temp 30000
Полученное значение и есть температура процессора — 30C°
Создание сенсора в hass
Открываем на редактирование конфигурационный файл hass:
vi /opt/homeassistant/config/configuration.yaml
Вписываем в раздел sensor, если его нет — создаем его:
sensor: - platform: command_line scan_interval: 300 name: CPU Temperature command: 'cat /sys/class/thermal/thermal_zone0/temp' unit_of_measurement: '°C' value_template: '{{ value | multiply(0.001) }}'
Перезапускаем сервер Home Assistant, если вы устанавливали его по этой статье:
systemctl restart hass
Либо своим методом:)
После этого в объектах у нас появится CPU Temperature.
Который можно использовать как вывод или в каких-либо сценариях.
Получение значения температуры жесткого диска
Для этого будем использовать установленную программу hddtemp.
Home Assistant у меня работает под системной учетной записью homeasssistant.
Для которой нет доступа к файлам блочных устройств /dev/sda и т.п.
Добавления пользователя в группу disk — не меняет ситуацию:
sudo usermod -a -G disk homeassistant sudo -u homeassistant /usr/sbin/hddtemp -n /dev/sda /dev/sda: Permission denied
Есть два варианта решения:
- Сделать запись в sudo разрешающую пользователю запускать все без пароля:
sudo visudo homeassistant ALL=NOPASSWD: ALL sudo -u homeassistant /usr/sbin/hddtemp -n /dev/sda 29
- Включить SUID бит, что позволит иметь доступ обычным пользователям
Я выбрал второй вариант.
Перенастраиваем hddtemp
sudo dpkg-reconfigure hddtemp
Проверяем:
sudo -u homeassistant /usr/sbin/hddtemp -n /dev/sda 29
Добавляем новый сенсор с именем HD Temperature в секцию sensor
- platform: command_line scan_interval: 300 name: HD Temperature command: "/usr/sbin/hddtemp -n /dev/sda" # If errors occur, make sure configuration file is encoded as UTF-8 unit_of_measurement: "°C"
Перезагружаем Home Assistant.
Получаем новый объект HD Temperature.
Используем тип systemmonitor для получения системных данных
Какие данные мы можем получить:
Тип (type:) | Аргумент (arg:) |
disk_use_percent | Точка монтирования, например: /home |
disk_use | Точка монтирования, например: /home |
disk_free | Точка монтирования, например: /home |
memory_use_percent | |
memory_use | |
memory_free | |
swap_use_percent | |
swap_use | |
swap_free | |
load_1m | |
load_5m | |
load_15m | |
network_in | Сетевой интерфейс, например: eno1 |
network_out | Сетевой интерфейс, например: eno1 |
throughput_network_in | Сетевой интерфейс, например: eno1 |
throughput_network_out | Сетевой интерфейс, например: eno1 |
packets_in | Сетевой интерфейс, например: eno1 |
packets_out | Сетевой интерфейс, например: eno1 |
ipv4_address | Сетевой интерфейс, например: eno1 |
ipv6_address | Сетевой интерфейс, например: eno1 |
processor_use | |
process | Запущенный процесс, например: php-fpm |
last_boot |
Набор достаточно обширен:)
Давайте узнаем загрузку процессора и объем использованной памяти
В конфигурационный файл hass в разделе sensor вписываем:
- platform: systemmonitor resources: - type: memory_use - type: processor_use
Опять передергиваем hass.
В объектах у нас добавились:
- Processor use
- Memory use
Которые мы так же можем вывести на панель и (или) использовать в сценариях.
Поражает гибкость Home Assistant.
За 5-10 минут мы с вами настроили вывод важных для нас метрик.
А как получить информацию о смонтированном диске?? я знаю о диске все из терминала но хотелось бы вывести в хоум ассист
/dev/sda1 466G 234G 233G 51% /mnt/Sklad
вот такое решение не дает результата!
— type: disk_free
arg: /dev/sda1