В этом проекте домашней автоматизации основное внимание уделяется экономии средств, несмотря на необходимость дополнительных усилий при настройке. Проект потребовал значительных временных затрат и изучения материалов, процесс настройки еще продолжается.
Исследование началось с просмотра серии видео на 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» сообщение о включении и получении команды. Каждому устройству требуется уникальный топик, учитывающий регистр символов. Для отладки создан пакетный файл подписки на все топики (символ # обозначает все подтопики).
1 2 |
"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 и автоматизация включения/выключения по расписанию. Это базовая реализация. При добавлении устройств важно единообразие имен: после успешной настройки параметры копируются с заменой имен через поиск.
На скриншотах показаны свернутые блоки и полная конфигурация (без персональных данных).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
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.
Оригинал статьи вы можете прочитать здесь.