Можно ли использовать Raspberry Pi в качестве сервера Home Assistant?

Систему для умного дома Home Assistant можно установить на разные устройства. Можно поставить Home Assistant на настоящий сервер, можно запустить на обыкновенном десктопе, можно запустить на ноутбуке. Еще Home Assistant можно поставить на NAS, многие владельцы Synology устанавливают Home Assistant именно на это устройство.

Но, кажется, самый популярный способ установки — поставить Home Assistant на маленький компьютер Raspberry Pi.

Но нормально ли это работает? Какие проблемы при этом возникают? Может быть лучше не возиться с Raspberry Pi, а сразу поставить что-то более мощное и надежное?

Скорость работы

Можно предположить что Home Assistant на Raspberry Pi будет работать сильно медленнее чем он работает на настоящем компьютере.

У меня есть опыт использования Home Assistant на обычном компьютере и на Raspberry Pi 3B+ Так вот. При штатной работе, разницы в скорости не видно. Я открываю в браузере интерфейс Home Assistant на Raspberry Pi 3B+ или на настоящем компьютере — все работает одинаково быстро.

Я устанавливал Home Assistant на самую первую модель Raspberry Pi. Вот на этом старом устройстве интерфейс Home Assistant действительно работает значительно медленнее. Все притормаживает. Но скорости работы современных Raspberry Pi вполне достаточно для комфортной работы c Home Assistant.

Но все-таки есть вещи которые на Raspberry Pi работают медленнее чем на обычном компьютере. Это перезапуск системы. Home Assistant на Raspberry Pi запускается заметно медленнее чем на настоящем компьютере.

Является ли это проблемой? Это зависит от того как вы будете использовать Home Assistant. Если он у вас просто работает и вы его перезагружаете редко, то никакой проблемы тут нет. Но если вы супер активно постоянно настраиваете и перезапускаете Home Assistant, то, возможно, для вас будет критично время запуска.

Проблема с питанием

Компьютер Raspberry Pi очень требователен к электрическому питанию.

Если Raspberry Pi не получает достаточное количество энергии, то включается специальный режим (это называется "троттлинг"), в этом режиме Raspberry Pi начинает работать медленнее.

Когда я купил себе Raspberry Pi 3B+, я купил только само устройство, без блока питания. Я думал: "зачем еще что-то покупать, у меня в ящике лежит куча usb блоков питания и проводов, возьму любой и все заработает". Действительно, взял первые попавшиеся блок питания и кабель, включил Raspberry Pi и она заработала. А потом я случайно узнал что все это время Raspberry Pi было недостаточно электричества и она работала медленнее чем могла бы.

Для того чтобы знать, работает ли Raspberry Pi в штатном режиме или включается режим троттлинга можно дополнительно поставить в Home Assistant специальный компонент rpi_power. Но я предпочитаю не тащить что-то дополнительно в Home Assistant, а просто создать вот такой сенсор:

sensor:
  - platform: command_line
    name: CPU get_throttled
    command: "cat /sys/devices/platform/soc/soc:firmware/get_throttled"

Если значение sensor.cpu_get_throttled число 0, то тогда все отлично. А вот если значение не 0, то это означает что Raspberry Pi работает в режиме троттлинга.

Решение этой проблемы очень простое. Если вы используете Raspberry Pi, обязательно используйте его с родным блоком питания, а не пытайтесь самостоятельно подобрать блок питания и кабель с которым Raspberry Pi нормально работает.

Проблема с температурой

Raspberry Pi очень требовательна не только к электрическому питанию, но и к температуре.

Если встроенный в Raspberry Pi датчик температуры показывает больше 60 градусов, то включается режим троттлинга и устройство работает медленнее чем оно может работать.

На мой взгляд, стоит создать в Home Assistant сенсор, который показывает текущую температуру устройства:

sensor:
  - platform: command_line
    name: CPU Temperature
    command: "cat /sys/class/thermal/thermal_zone0/temp"
    unit_of_measurement: "°C"
    value_template: '{{ value | multiply(0.001) | round(1) }}'

А для того чтобы понять включался ли троттлинг нужно использовать сенсор из предыдущего раздела, если значение число 0, это значит что все хорошо, если же значение не 0, это означает что включился троттлинг либо по температуре, либо по электричеству (чтобы понять из-за чего включился троттлинг нужно проанализировать число-значение сенсора)

Raspberry Pi продается без кулера и без радиаторов. Просто маленькая платка. Так что если просто взять и включить этот компьютер, то, скорее всего она нагреется выше 60 градусов и будет работать не так хорошо как она могла бы.

Для решения этой проблемы используют специальные корпусы. Вот пример корпуса который весь один большой радиатор.

Проблема с SD картами

Стандартное использование Raspberry Pi — это установить систему на SD карту. Но тут есть проблема. Простые и дешевые SD карты не предназначены для постоянной работы. Они очень быстро выходят из строя. На форумах и чатах можно найти сообщения от людей кто каждый месяц меняет SD карты в Raspberry Pi.

У меня сейчас есть два сервера Home Assistant (один дома, второй на даче). Это Raspberry Pi 3B+ и на обоих серверах система работает на SD картах.

Я готов к тому что в любой момент SD карта сдохнет, но мне пока везет. У меня эти SD карты работают по 10 месяцев.

Стоит покупать SD карты на которых есть маркировка U3 и A1 (пример карты на aliexpress )

Но даже если вы используете хорошие SD карты, все равно нужно быть готовым к тому что в любой момент SD карта может умереть и нужно понимать как вы будете восстанавливать систему в этом случае.

Другой вариант — это подключить к Raspberry Pi жесткий диск (ssd). Это чуть более сложное решение, но оно более надежное.

Жесткие диски — это более надежное решение чем SD карты, но они тоже ломаются. Так что, на самом деле, вне зависимости от того что вы используете SD карту или жесткий диск все равно нужно заранее определиться что вы будете делать если SD карта/жесткий диск выйдут из строя. Готовы ли вы будете все ставить заново, или же настройки нужно куда-то сохранять чтобы была простая возможность их повторно использовать.

Итого

На мой взгляд, Raspberry Pi — это отличное устройство для того чтобы на нем разворачивать Home Assistant.

Но бывают ситуации когда лучше использовать не Raspberry Pi для сервера Home Assistant, а что-то другое. Вот несколько ситуаций в которых, возможно, будет лучше не использовать Raspberry Pi:

Но, достаточно часто, Raspberry Pi — это отличный выбор для сервера Home Assistant. Это очень популяртное устройство для Home Assistant — есть много инструкций и документаций. При возникновении каких-либо вопросов очень велика вероятность что кто-то уже решил эту задачу. Home Assistant работает на специальном выделенном устройстве, то что там работает только система для умного дома добавляет стабильности к работе.

Нельзя дать однозначную рекомендацию (для разных людей в разных ситуациях разные устройства будут предпочтительны), но достаточно часто Raspberry Pi прекрасно подходит для сервера Home Assistant.

Иван Бессарабов
ivan@bessarabov.ru

12 августа 2020

Кстати, у меня есть телеграм канал про Home Assistant: https://t.me/bessarabov_ha