Проект домашней автоматизации Карла – Часть 1: Home Assistant и YAML, MQTT, Sonoff и рождественские гирлянды

В этом проекте домашней автоматизации основное внимание уделяется экономии средств, несмотря на необходимость дополнительных усилий при настройке. Проект потребовал значительных временных затрат и изучения материалов, процесс настройки еще продолжается.

Исследование началось с просмотра серии видео на 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.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments