Home Assistant: получаем данные температуры процессора

Home Assistant

Home Assistant — выводим значения температуры жестких дисков, процессора и т.п.

Продолжаю знакомство с Home Assistant, как платформой для «Умного дома».
Домашний сервер живет на балконе в кошмарном климате:).
Поэтому я решил изучить возможность обработки температурных данных.
Прежде всего в этой заметке я расскажу как создавать сенсоры.
Для мониторинга температуры жестких дисков будем использовать hddtemp.
Все примеры были опробованы в Ubuntu 20.04.

Для сенсоров мы будем использовать два типа (platform):

  1. command_line
  2. 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.
Который можно использовать как вывод или в каких-либо сценариях.
Home Assistant CPU Sensor

 

HASS CPU TEMP

Получение значения температуры жесткого диска

Для этого будем использовать установленную программу 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

Есть два варианта решения:

  1. Сделать запись в sudo разрешающую пользователю запускать все без пароля:
    sudo visudo
    homeassistant ALL=NOPASSWD: ALL
    sudo -u homeassistant /usr/sbin/hddtemp -n /dev/sda
    29
  2. Включить SUID бит, что позволит иметь доступ обычным пользователям

Я выбрал второй вариант.

Перенастраиваем hddtemp

sudo dpkg-reconfigure hddtemp

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 ScreenshotПоражает гибкость Home Assistant.
За 5-10 минут мы с вами настроили вывод важных для нас метрик.

Рейтинг
( 2 оценки, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Комментарии: 1
  1. img-10
    Алекс

    А как получить информацию о смонтированном диске?? я знаю о диске все из терминала но хотелось бы вывести в хоум ассист
    /dev/sda1 466G 234G 233G 51% /mnt/Sklad
    вот такое решение не дает результата!
    — type: disk_free
    arg: /dev/sda1

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

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.