Привет!
Наверное, многие из вас знают, насколько важно поддерживать качественный микроклимат в доме, одним из важных параметров которого является относительная влажность воздуха. Вот и я, года три назад, озаботился данным вопросом и приобрел увлажнитель воздуха Xiaomi Deerma Humidifier DEM-F628S (полный аналог DEXP HD-440). Увлажнитель оказался удачной конструкции и приемлемой ценной, что обеспечило ему «народную» популярность. Но, к сожалению, данный увлажнитель не поддерживает интеграцию в системы умного дома и вообще не имеет коммуникационных интерфейсов, я решил исправить этот недостаток и что у меня получилось — об этом далее.
❯ Итак, что мы хотим?
Для начала, нам нужно определиться, что мы хотим делать с увлажнителем с помощью умного дома:
- Получать статусы увлажнителя (Вкл/выкл, режим работы, данные датчика, уровень воды в баке);
- Управлять питанием устройства, то есть включать и выключать;
- Выбирать уровень мощности увлажнителя.
❯ Вскрытие покажет
Чтобы найти варианты реализации задуманного, нам необходимо вскрыть объект и изучить, как он работает. Ну что ж, давайте приступим, с детства люблю разбирать различные устройства. Разобьем на этапы разборки:
Сперва нам нужно удалить резиновые уплотнители, они же ножки, под ними скрываются шурупы, которые нам нужно вывернуть.
Выкручиваем шурупы.
Затем нужно аккуратно удалить верхнюю крышку и вуаля, нам доступен внутренний мир увлажнителя!
«Мозгом» нашего увлажнителя является вертикально расположенная плата, в которую подключены разъемы.
Чтобы беспрепятственно её демонтировать и изучить, необходимо убрать панель с ультразвуковым излучателем. Откручиваем четыре больших шурупа, которыми прикреплен модуль.
Затем аккуратно отключаем все разъёмы от платы и осторожно вынимаем светофильтр индикатора, предварительно отщелкнуть защелки, которые показаны на фото.
Ура! Мы достали плату и теперь можем её изучить. Как можно видеть, пружины выполняют роль антенн сенсорных кнопок управления.
Так выглядит плата с обратной стороны.
❯ Настало время волшебства
Изучив немного плату, видим, что для отображения информации используется светодиодный индикатор с динамической индикацией, где используется несколько разрядов с общим катодом.
Немного подумав, я пришел к выводу, что наиболее простой способ получить необходимые сигналы, это взять их со светодиодного индикатора. После измерений определились следующие точки подключения.
Описание точек подключения:
- Анод необходимого разряда;
- Катод индикации «Уровень воды минимум»;
- Катод индикации «Уровень мощности минимальный»;
- Катод индикации «Уровень мощности средний»;
- Катод индикации «Уровень мощности максимальный».
Точка J1-1 — это антенна сенсорной кнопки питания, она же выбор мощности. Алгоритм следующий:
Долгое нажатие включает или отключает увлажнитель, короткие нажатия изменяют режим мощности.
Эксперименты показали, что банальное замыкание антенны на GND вызывает срабатывание кнопки, то есть используя оптрон, припаяв его как можно ближе к антенне, мы можем управлять включением, выключением и выбором уровня мощности увлажнителя. К сожалению, варианты подключения ко встроенному датчику температуры/влажности я не смог найти, поэтому самым простым решением будет установка дополнительного датчика DHT22. В результате у меня вырисовывается следующая схема модуля для интеграции в Home Assistant, как вы могли догадаться, данный модуль построен на базе микроконтроллера esp8266, а так как мы извлекаем необходимые сигналы с динамического индикатора, то наиболее простым вариантом будет применение оптронов.
На фото вариант подключения шлейф и проверка моей концепции с помощью тестового навесного монтажа.
Ниже вариант изготовления печатной платы.
Немного магии и упорства и плата готова.
Подключаем её к нашему увлажнителю, согласно принципиальной схеме.
И крепим её на боковой стенке корпуса с помощью двухстороннего скотча.
Не забываем про датчик DHT22. Разместим его на крышке, как показано на фото.
Теперь дело за малым — собрать всё в обратной разборке последовательности.
❯ Прошивка устройства
Микро ПО модуля разрабатывалось в среде Arduino IDE. Для конфигурации устройства используется web интерфейс. При первом включении устройство создаст Wi-Fi точку доступа, при подключении к ней, пользователя автоматически «перенесёт» на страницу конфигурации устройства, благодаря технологии Captive Portal. Станица входа, по умолчанию пароль «Admin».
После входа, первым делом необходимо настроить подключение к вашей Wi-Fi сети и перезагрузить устройство. Далее, используя присвоенный IP адрес, повторно войти для дальнейшей конфигурации. Ниже несколько скриншотов интерфейса.
При включении увлажнителя появляется функция выбора мощности увлажнителя.
Страница конфигурации подключения с использованием протокола MQTT.
❯ Интеграция в Home Assistant
Чтобы интегрировать наш увлажнитель в Home Assistant, необходимо настроить MQTT подключение и разрешить отправку данных при конфигурации модуля. Затем в Home Assistant отредактировать файл configuration.yaml, добавив в секцию mqtt следующий код:
sensor:
- name: "Датчик температуры увлажнителя"
unique_id: 5bc54f8b-7d41-4774-bfce-e98e92409d3e
state_topic: "humiditer/jsondata"
unit_of_measurement: "°C"
value_template: "{{ value_json.temp }}"
device_class: temperature
- name: "Датчик влажности увлажнителя"
unique_id: 5bc54f8b-7d41-4774-bfce-e98e92409d3f
state_topic: "humiditer/jsondata"
unit_of_measurement: "%"
value_template: "{{ value_json.hum }}"
device_class: humidity
switch:
- name: "Питание увлажнителя"
unique_id: 5bc54f8b-7d41-4774-bfce-e98e92409d38
state_topic: "humiditer/jsondata"
command_topic: "humiditer/control"
value_template: "{{ value_json.chanel1 }}"
payload_on: "0"
payload_off: "0"
state_on: "On"
state_off: "Off"
- name: "Режим мин"
unique_id: 5bc54f8b-7d41-4564-bfce-e98e92409d38
state_topic: "humiditer/jsondata"
command_topic: "humiditer/control"
value_template: "{% if value_json.chanel1 == 'On' and value_json.level2 == '0' and value_json.level3 == '0' %} On {% else %} Off {% endif %}"
payload_on: "1"
state_on: "On"
state_off: "Off"
- name: "Режим сред"
unique_id: 5bc54f8b-7d41-4764-bfce-e98e92409d38
state_topic: "humiditer/jsondata"
command_topic: "humiditer/control"
value_template: "{% if value_json.chanel1 == 'On' and value_json.level2 == '1' and value_json.level3 == '0' %} 1 {% else %} 0 {% endif %}"
payload_on: "2"
state_on: "1"
state_off: "0"
- name: "Режим макс"
unique_id: 5bc54f8b-7d41-4784-bfce-e98e92409d38
state_topic: "humiditer/jsondata"
command_topic: "humiditer/control"
value_template: "{% if value_json.chanel1 == 'On' and value_json.level2 == '1' and value_json.level3 == '1' %} 1 {% else %} 0 {% endif %}"
payload_on: "3"
state_on: "1"
state_off: "0"
#конец увлажнителя
Теперь добавим карточку нашего увлажнителя на панель управления Home Assistant, предварительно создав карточку «Объекты» и в текстовом редакторе вставить следующий код:
type: entities
entities:
- entity: sensor.datchik_temperatury_uvlazhnitelia
- entity: sensor.datchik_vlazhnosti_uvlazhnitelia_2
- entity: binary_sensor.uroven_vody
- entity: switch.rezhim_min
- entity: switch.rezhim_sred
- entity: switch.rezhim_maks
- entity: switch.status_uvlazhnitelia
title: Увлажнитель воздуха
state_color: true
В итоге, мы должны получить что-то подобное:
В данном примере используется имя корня топика «humiditer», что указывается при конфигурации устройства.
❯ Подводим итоги
У нас получилось достаточно простое и бюджетное решение для интеграции «народного» увлажнителя воздуха в системы умного дома. Описанная в статье схема управления без нареканий проработала уже более двух лет, использовался навесной монтаж, но для статьи я решил изготовить полноценную печатную плату. Теперь давайте подсчитаем наши затраты:
Комплектующие:
- Микроконтроллер esp8266 — 1 шт $1.15;
- Оптрон EL817 — $2.42 (цена за 100 шт);
- Линейный стабилизатор HT7333-A SOT23 — $1.9 (цена за 20 шт);
- Датчик DHT22 (он же AM2302) — 1 шт $1.4;
- Прочие компоненты < $1.
Итого, примерный бюджет на реализацию: $8.
На этой ноте можно и завершать статью. Спасибо всем кто уделил свое время на прочтение, надеюсь мой опыт будет вам полезен.
Ссылки к статье:
Автор: Valeriy