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

Что я хотел сделать

  1. Автоматическое отключение воды в случае аварии.
  2. Выключите вентиляцию в случае пожара.
  3. Уведомлять об аварийных ситуациях.
  4. Поддерживайте оптимальную температуру и влажность (приточная вентиляция, кондиционирование, теплые полы).
  5. Управляйте освещением (шторы и свет).
  6. Экономьте электричество.
  7. Получите локальную систему (только локальные серверы, чтобы в случае «апокалипсиса» все оставалось в рабочем состоянии).

Бэкэнд и Фронтенд

Существует несколько основных систем домашней автоматизации. Есть и платные, и бесплатные решения - все зависит от платформы. Это могут быть ПЛИС (программируемое логическое устройство), контроллеры в форм-факторе маршрутизатора или просто программное обеспечение.

Изначально я выбрал контроллер FIBARO Home Center 2 в качестве основного концентратора. Несмотря на то, что интерфейс приятный и много настроек, аппаратное обеспечение было плохим. Прошивка, судя по отзывам, иногда выходила из строя. А другие типы протоколов использовать сложно.

Из бесплатных вариантов рассматривал OpenHUB и Home Assistant. OpenHUB казался слишком мощным и сложным для расширения: например, сложно добавить новый модуль Z-Wave, если его нет в конфигурациях OpenHUB. Home Assistant легко расширить, но вы можете использовать только YAML, который сложно отлаживать и поддерживать. Также плохая интеграция с Z-Wave. Итак, я выбрал еще один бесплатный аналог, о котором расскажу дальше.

Я выбрал Node-RED в качестве бэкэнд-решения, потому что он предоставляет множество готовых интеграций с различными протоколами, является бесплатным и позволяет нам писать логику автоматизации прямо в JavaScript в браузере без перекомпиляции. С его помощью легко отлаживать и внедрять скрипты.

Node-RED использует NodJS под капотом, поэтому остальная часть бандлинга была написана на нем тоже. Node-RED - это просто редактор сценариев и интегратор для разных протоколов. Интерфейс элемента управления, как и в Home Assistant, отсутствует. Есть несколько плагинов, которые добавляют возможность управления устройствами из браузера, но их не очень легко настроить и требуется, чтобы код внешнего интерфейса был написан также в браузере (node-red-dashboard).

Каждый поток в моей системе автономен, и вся связь между различными потоками осуществляется через MQTT. Я также могу переместить загруженные потоки на отдельные серверы для распределенной обработки.

Протоколы связи с конечными устройствами

Моя квартира не очень большая, и места для коммутационного блока было не так много, поэтому я решил использовать беспроводные модули.

Система использует скрытые реле управления, чтобы физические кнопки оставались в том же виде, что и физические кнопки. Также они нужны как для прямого управления, так и на случай выхода из строя центрального контроллера. Выбирал между беспроводными системами Z-Wave и ZigBee.

На момент интеграции системы технология Z-Wave была наиболее полной из требуемых устройств. В разных странах Z-Wave использует разные частоты, в России официально можно использовать 869 МГц. Так как большинство датчиков я покупал в России, я решил использовать официальную частоту для всей системы.

Помимо Z-Wave, в системе используется модуль BroadLink IR и Modbus TCP.

Для интеграции Z-Wave в Node-RED я выбрал библиотеку C ++ OpenZWave и node-red-contrib-openzwave.

Для интеграции Modbus я использую node-red-contrib-modbus, для управления BroadLink - node-red-contrib-broadlink-control.

Базы данных

Я выбрал MongoDB в качестве основной базы данных: она сохраняет текущие данные с датчиков и конечных устройств, а также хранит ИК-коды для кондиционирования воздуха и мультимедиа.

InfluxDB используется в качестве базы данных для хранения временных рядов. По этим данным вы можете просматривать графики влажности, температуры и группировать их.

Внешний интерфейс

Переднюю часть решил написать сам, чтобы добиться максимальной гибкости системы. При работе с Dashboard используются две системы:

  • MQTT-сервер на базе aedes;
  • Сервер авторизации.

Сервер аутентификации выдает токен JWT по имени пользователя и паролю или членству в локальной сети, после чего сервер MQTT проверяет токен каждый раз, когда отправляется или принимается сообщение для передней системы.

Интерфейс написан на ReactJS, в качестве протокола связи с сервером используется MQTT over WebSockets (MQTT.JS). MobX используется для статистики. Также используется TypeScript, и Webpack все это собирает.

Приложение состоит из двух страниц:

В панели администрирования вы можете добавлять и удалять устройства, настраивать их параметры и ассоциации.

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

С точки зрения программного обеспечения каждое устройство представляет собой отдельный модуль, который вводится в систему через интерфейс (Typescript). Это позволяет довольно легко расширять и легко интегрировать новые устройства в Dashboard.

Аппаратное обеспечение

Я использую Intel NUC NUC7PJYH с Ubuntu Server в качестве контроллера. Для подключения к сети Z-Wave я выбрал USB-накопитель Z-Wave.Me.

Планшет Android, который я заказал на сайте Alibaba.com, используется в качестве основного пульта дистанционного управления умным домом. А планшет пришел прямо с завода: с насадкой Vesa, блоком питания PoE и вилкой питания (не USB). Планшет питается от блока питания 12 В, расположенного на DIN-рейке в шкафу управления. Батареи в планшете нет.

Заказал планшет по своим характеристикам.

Климатическая система

Для поддержания комфортного климата использую:

  • Электрический теплый пол в трех зонах.
  • Кондиционирование жилых помещений.
  • Центральная приточная вентиляция.
  • Увлажнители.
  • Центральное отопление.

Вентиляция

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

Изучая разные варианты решения проблемы вентиляции без открытия окна, я составил шорт-лист из трех вариантов:

  • Установка ветриков в каждую комнату.
  • Установка наружного блока и разводка каналов к внешней стене.
  • Центральная система вентиляции.

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

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

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

Во внешней стенке с помощью алмазного сверла просверливали отверстие диаметром 160 мм и устанавливали внешнюю решетку. Входная труба была изолирована изоляцией K-flex. Затем труба проходит вдоль кухонной стены и входит в главный вентиляционный блок.

Выбираю вентиляционную установку Бризарт. Учла стоимость установки, габариты и возможность подключения к системе автоматизации. Агрегат имеет максимальную мощность 550 м³ в час.

В системе есть тихий вентилятор с 10 скоростями и электрический нагреватель. На входе установлен электромеханический клапан, который закрывается при выключении агрегата, чтобы холодный воздух не проходил по квартире. Со стороны электроники система имеет три порта Modbus, датчики температуры и датчики давления для обнаружения загрязнения фильтров. Фильтр грубой очистки G4 входит в комплект поставки.

Фильтр грубой очистки был заблокирован на 70% после года использования. Но, по данным датчика CO₂, вентиляция уже не работала на малой скорости.

За приточно-вытяжной установкой следует фильтр тонкой очистки F7. Не рекомендую использовать HEPA-фильтры: они быстро забиваются. Также производители не рекомендуют превышать перепады давления на фильтре.

После фильтра тонкой очистки устанавливаются два механических регулятора расхода воздуха, а затем несколько гибких воздуховодов SONODEC в комнаты. Этот тип воздуховодов был выбран для того, чтобы не устанавливать громоздкий глушитель и в то же время глушить монтажный шум. После закрытия потолка систему вентиляции можно услышать только с 8 скоростей (440 м³ в час) и только из коридора. На выходе из системы вентиляции установлены решетки с двусторонней регулировкой.

Один из портов Modbus подключен к пульту дистанционного управления от комплекта, второй порт - к серверу Modbus TCP HF2211.

Этот сервер позволяет подключаться к внутренней сети через Wi-Fi или Ethernet с одной стороны и к устройству Modbus RTU с другой. Затем он может поднять сервер с необходимыми настройками и уже получить доступ к вентиляционной установке по сети. Установка опрашивается каждые 300 мс: проверяются ошибки и контрольные суммы, и только после этого данные могут быть записаны в регистры. Связь с установкой осуществляется через плагин node-red-contrib-modbus.

На веб-сайте производителя есть подробный справочник по регистру и общее описание Modbus для этой установки (извините, только на русском языке), но вам следует проверить контроллер и версию прошивки. Приточно-вытяжная установка управляется в автоматическом режиме по времени и датчику CO₂ MH-Z19b.

Датчик CO₂ портативный. Он основан на датчике MH-Z19b, двух батареях 18650, ESP32 и IRF520 (для отключения питания датчика, когда контроллер спит).

В зависимости от скорости монтажа устанавливается комфортная температура приточного воздуха и обогреватель нагревается.

На более высоких оборотах требуется более высокая температура - иначе будет ощущаться поток холодного воздуха. Чтобы не потреблять много электроэнергии зимой, когда на улице холоднее -7 ° C, установка ограничена скоростью 3. Ночью установка ограничена скоростью 4. Если никого нет дома, система автоматически переключается на скорость 1. По команде «Отпуск» происходит полное отключение.

Есть режим подогрева после отпуска, проветривание на полной скорости и переключение на первую скорость по таймеру. Если в системе есть датчики CO₂, можно дополнительно настроить скорость в соответствии с глобальными пределами.

Кондиционирование воздуха

В систему встроено несколько кондиционеров с режимами охлаждения и обогрева. Идея заключалась в установке центрального кондиционирования воздуха, но все системы слишком велики и не позволяют регулировать температуру в каждой комнате. К сожалению, мои кондиционеры управляются только через ИК-порт. Итак, я купил панель управления Broadlink RM Mini3.

Если вы используете собственное приложение, этот пульт дистанционного управления будет подключаться к китайским серверам, поэтому все команды настройки и управления передаются напрямую из Node-RED с помощью модуля node-red-contrib-broadlink-control.

Поскольку я не нашел никаких чистых ИК-кодов для кондиционеров, а пульт дистанционного управления передает все состояние (скорость, режим, температура), все возможные состояния нагрева и охлаждения были скопированы с пульта дистанционного управления в базу данных с помощью Broadlink. Четких команд включения и выключения тоже не было.

Но я узнал, как использовать таймеры для включения и выключения кондиционера. Я надел их на 10 секунд и скопировал в базу данных. Теперь при включении сначала команда включения таймера, а затем команда установки режима вместе с температурой.

Скрипт проверяет погоду на улице и, если допустимые значения (более -7 ° C), включает кондиционер на обогрев или охлаждение - в зависимости от времени суток и температуры в помещении. Показания датчика температуры снимаются один раз в час.

Если все вышли из дома, кондиционеры выключаются. Если никого нет дома и температура слишком высокая или слишком низкая, но радиаторы отопления еще не включены, каждый час происходит 15-минутное охлаждение или обогрев для поддержания климата в комнате.

Пол с подогревом

В системе есть три контура электрического теплого пола. Они управляются тремя термостатами HeatIt Z-Wave.

Термостат позволяет нам настраивать разные параметры сопротивления для разных типов нагревательных элементов, имеет защиту от детей, два сохраненных режима нагрева и другие настройки.

В холодное время года температура пола устанавливается на 1 ° C больше, чем летом. Когда дома никого нет и ночью, полы отключаются для экономии энергии и включаются либо утром, либо как только кто-то приходит домой. В ванной пол поднимает температуру, когда горит свет, дверь закрыта, было движение, пока дверь не закрылась и влажность резко не поднялась. Через час пол возвращается в прежнее состояние или отключается (если наступает ночь).

Центральное отопление

Поскольку отопление в Москве не всегда выключается или включается вовремя в зависимости от температуры за окном, было решено установить терморегулятор Danfoss Living Connect на каждый радиатор.

Этот терморегулятор питается от 2-х батареек АА по протоколу Z-Wave. С момента его установки прошел год, а батарейки еще не разрядились. Максимально настраиваемая температура 28 ° C. Поскольку датчик находится близко к батарее и не может быть подключен удаленно, он иногда выходит из строя.

Летом термостат всегда находится в «открытом» положении и полностью закрывается каждые две недели, чтобы стержень не закисал. Первые две недели датчик откалиброван (что не очень обрадовало жену, так как батарейки время от времени отключались), но после этого все заработало. Перед началом отопительного сезона в течение двух недель проверяется средняя наружная температура, и если она ниже 10 ° C, термостаты переходят в режим обогрева. Если температура в помещении выше заданной комфортной температуры, терморегуляторы снижают температуру или полностью отключают аккумулятор.

Увлажнители воздуха

Для увлажнения воздуха в квартире рассматривались центральные увлажнители воздуха. Есть два основных типа: пароувлажнители и традиционные увлажнители. Паровой увлажнитель воздуха требует много электроэнергии для постоянного нагрева воды. Оба типа увлажнителей сливают много воды в канализационную систему, чтобы она не зацвела. Также следует учитывать, что центральные увлажнители воздуха дороги и занимают много места.

Я решил использовать ультразвуковые увлажнители воздуха в каждой комнате. Они быстро поднимают влажность, но для них требуется очищенная вода, желательно после обратного осмоса. Влажность можно установить на самих увлажнителях или контролировать с помощью ИК-излучения.

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