В этом проекте домашней автоматизации основное внимание уделяется экономии средств, несмотря на необходимость дополнительных усилий при настройке. Проект потребовал значительных временных затрат и изучения материалов, процесс настройки еще продолжается.
Исследование началось с просмотра серии видео на YouTube от Bruh Automation , где была представлена платформа Home Assistant . В видео используется Raspberry Pi в качестве сервера, но в данном случае уже применялся Wintel Pro CX-W8 Smart TV Box , выполняющий роль сервера для нескольких служб: три сервера Minecraft, Emby Server, iSpyConnect DVR (с двумя IP-камерами), контроллер Unifi Wi-Fi, а также сервер MQTT и Home Assistant. На скриншоте ниже показана нагрузка в состоянии простоя.
Без iSpy нагрузка обычно составляет 5-10%. Наиболее ресурсоемким является транскодирование в Emby, но оно используется редко. Приобретение Raspberry Pi с блоком питания и корпусом по стоимости приближается к покупке бокса на z8300. Недостаток — автоматические перезагрузки из-за обновлений Windows, что было отключено . При использовании Windows-бокса рекомендуется 64-битная версия. Преимущество Raspberry Pi — наличие предварительно настроенного образа Home Assistant для записи на SD-карту.
Настройка серверной части
Подробности установки опущены. Были установлены Python, Mosquitto и Home Assistant (по руководству с официального сайта для Windows)
. Установка Python прошла гладко — использовался исполняемый файл с настройками по умолчанию (версия 3.5.2 64-bit, сейчас доступны новее). Наибольшие сложности возникли с Mosquitto; использовалось это руководство с заменой на Win32OpenSSL_Light-1_0_2j.exe (~2 МБ). Home Assistant был установлен через pip.
Рождественские гирлянды
Исследования начались незадолго до Рождества. На CNX были обнаружены недорогие устройства Sonoff , а на GitHub — проект с пользовательской прошивкой от arendst для управления через MQTT. (При получении ссылки обнаружен новый проект с дополнительными функциями здесь ). В связи с активным украшением дома к Рождеству (три ёлки и множество гирлянд) и необходимостью таймеров, устройства были заказаны немедленно. После получения за пару ночей была реализована простая автоматизация включения/выключения гирлянд по расписанию. Одно устройство осталось для экспериментов, остальные после Рождества были размещены по дому.
MQTT
Изначально MQTT может быть непонятным, и его освоение требует времени. Можно использовать облачный MQTT-сервис, но предпочтительнее локальное развертывание. MQTT — это служба обмена сообщениями между устройствами. Основные элементы: топики и полезные нагрузки. Например, для включения переключателя отправляется полезная нагрузка «on» в топик «cmnd/testbench/power». Устройство подтверждает действие, отправляя в топик «stat/testbench/POWER» сообщение о включении и получении команды. Каждому устройству требуется уникальный топик, учитывающий регистр символов. Для отладки создан пакетный файл подписки на все топики (символ # обозначает все подтопики).
"C:\Program Files (x86)\mosquitto\mosquitto_sub" -t stat/# -t tele/# -t cmnd/# -t home/# -v"
pause
Sonoff
Выбрана модель Sonoff basic, хотя существуют и другие варианты с дополнительными функциями, поддерживаемые прошивкой arendst.
Разработчик arendst активно развивает проект, ежедневно внося улучшения. При первой прошивке была обнаружена ошибка, о которой ему сообщили — исправление загрузили в течение часа. На Wiki доступны детальные инструкции. Перед прошивкой необходимо припаять контактные разъемы (изначально изогнутые, но их легко выровнять). Для загрузки через Arduino IDE потребуется адаптер USB-TTL с поддержкой 3.3 В и 5 В. После настройки Arduino в скетче указываются SSID и пароль Wi-Fi. После первичной загрузки устройство подключается к сети. Далее через IP-адрес в роутере открывается веб-интерфейс для настройки: ввод учетных данных MQTT-сервера и топика. Сервер MQTT был настроен без аутентификации. После программирования устройство подключается к сети 220 В. Внимание: не подключайте сеть 220 В при подсоединенном TTL-адаптере. Использованы разрезанные удлинители с зачищенными на 6 мм проводами. Многожильные провода залужены припоем для исключения замыканий и закреплены на клеммах с соблюдением полярности.

YAML
YAML требователен к синтаксису — это формат конфигурации Home Assistant. Лишний пробел может заблокировать запуск. В последней версии при перезапуске через браузер конфигурация проверяется автоматически. Для демонстрации на строке 54 добавлен пробел.
Для редактирования в Windows рекомендуется Notepad++, позволяющий сворачивать неактивные блоки. Конфигурацию можно разбить на файлы, но удобнее единый файл.
Новые элементы добавляются поочередно с проверкой после каждого изменения. Рекомендуется сохранять резервные копии рабочей конфигурации. В примере настроены 5 устройств Sonoff и автоматизация включения/выключения по расписанию. Это базовая реализация. При добавлении устройств важно единообразие имен: после успешной настройки параметры копируются с заменой имен через поиск.
На скриншотах показаны свернутые блоки и полная конфигурация (без персональных данных).
homeassistant:
# Name of the location where Home Assistant is running
name: Home
# Location required to calculate the time the sun rises and sets
latitude: 36.0
longitude: -80.0
# Impacts weather/sunrise data (altitude above sea level in meters)
elevation: 278
# metric for Metric, imperial for Imperial
unit_system: imperial
# Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
time_zone: America/New_York
# Show links to resources in log and frontend
#introduction:
# Enables the frontend
frontend:
####################################################################
http:
# Uncomment this to add a password (recommended!)
api_password: password
# Turn on built in mqtt broker
mqtt:
broker: 10.0.0.200
port: 1883
client_id: home-assistant-1
#####################################################################
# Checks for available updates
updater:
# Discover some devices automatically
discovery:
# Allows you to issue voice commands from the frontend in enabled browsers
conversation:
# Enables support for tracking state changes over time.
history:
# View all events in a logbook
logbook:
# Track the sun
sun:
# Weather Prediction
light:
- alias: Living Room
platform: mqtt
name: "Living Room"
state_topic: "stat/livingroom/1/POWER"
command_topic: "cmnd/livingroom/1/power"
payload_on: "ON"
payload_off: "OFF"
- alias: Karson
platform: mqtt
name: "Karson"
state_topic: "stat/karson/1/POWER"
command_topic: "cmnd/karson/1/power"
payload_on: "ON"
payload_off: "OFF"
- alias: Master Bedroom
platform: mqtt
name: "Master Bedroom"
state_topic: "stat/masterbedroom/1/POWER"
command_topic: "cmnd/masterbedroom/1/power"
payload_on: "ON"
payload_off: "OFF"
- alias: McKayla
platform: mqtt
name: "McKayla"
state_topic: "stat/mckayla/1/POWER"
command_topic: "cmnd/mckayla/1/power"
payload_on: "ON"
payload_off: "OFF"
- alias: Test Bench
platform: mqtt
name: "Test Bench"
state_topic: "stat/testbench/POWER"
command_topic: "cmnd/testbench/power"
payload_on: "ON"
payload_off: "OFF"
group:
All_Lights:
- light.living_room
- light.karson
- light.master_bedroom
- light.test_bench
- light.mckayla
automation:
- alias: Lights On
hide_entity: true
trigger:
platform: time
after: '16:30:00'
action:
service: light.turn_on
entity_id: group.all_lights
- alias: Lights Off
hide_entity: true
trigger:
platform: time
after: '20:30:00'
action:
service: light.turn_off
entity_id: group.all_lights
Обратите внимание: test bench использует новую прошивку с измененным MQTT-топиком.
Следующие шаги
Текущая система не считается «умным домом». Управление светом через расписание, смартфон или кнопку Sonoff функционально аналогично выключателю. Расписание приводит к нерациональному расходу энергии, а использование телефона непрактично. Ниже приведена ориентировочная стоимость компонентов (без учета сервера и доставки). Сервер на Windows — самая дорогая часть; альтернатива — Linux на S905x.
Затраты
Стоимость сервера и доставка не включены.
Item | Qty | Price | Total |
Sonoff Basic | 5 | $4.85 | $24.25 |
Headers | 1 | $1.50 | $1.50 |
USB to TTL | 1 | $2.54 | $2.54 |
Total | $28.29 |
Если тема интересна или нужны детали по аспектам — оставляйте комментарии. Настройка системы приносит удовлетворение, объединяя работу с «железом» и ПО. Надеемся, это пробудит интерес к домашней автоматизации: она доступна по цене и сложности. Упомянутые продукты приобретались самостоятельно.
Планируется цикл из 3 частей. В следующей части будут интегрированы недорогие датчики движения и открытия на 433 МГц, а также их модификация с добавлением датчика освещенности.
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.