Добавляем разум устройствам: подключаем красивый аромадиффузор к Home Assistant и Алисе

Доброго времени суток, дорогие читатели! Наконец-то я нашел что-то интересное, о чем могу поведать Вам! Продолжаю наше основное предназначение — интернет вещей или умный дом.

Идея

Наткнулся на просторах YouTube Shorts на такую интересную штуку (https://ozon.ru/t/NGlKadA):

Согласитесь, выглядит красиво и эстетично!

Заказал я эту штуку и добавил в заказ контроллер ESP8266, чтобы сделать ее еще интереснее

Техническая часть — модификации

Позавчера ко мне эта вещь приехала, я ее включил, полюбовался…и раскрутил. Разборка предельно проста: открутить 8 винтов под резиновыми ножками и снять нижнюю часть.

Передо мной открылась куча места, куда установить маленькую ESP, но получилось еще не только установить ESP, но и запитать ее, не прибегая к колхозному врезанию в линию питания и напаиванию проводов на порт Type-C:

Запаялся прямо к родным контактам VCC и GND на плате. В последующем, при написании прошивки перепаял провода к кнопкам на другой контакт, иначе реакции не было, но мы потеряли кнопки. Кнопки все равно расположены не удобно, так что, что они есть, что их нет, ничего не меняется. Кому надо, кнопки просто припаиваем к ESP и с нее наруливаем. А так все аккуратно поместилось внутри и ничего не намекает на стороннюю модификацию

Софт

Для умного дома я использую Home Assistant, который работает на Raspberry Pi 4 прямо у меня дома. Это значит, что у меня есть выбор между MQTT и Native API Home Assistant (ESPHome). Выбрал я второй вариант, так как интересно стало, что за зверь такой.

Прошивка пишется на YAML, все просто описывается. Заливка происходит любыми методами:

  • С браузера(!) прямо с компа
  • Скачиванием и прошиванием вручную
  • Прошивка проводом, подключение прямо к серверу

Я выбрал последний вариант, так как не пользуюсь хромом (а для этого нужен он или эдж). Все прошло гладко, ESP цепанулась к Wi-Fi и я мог разрабатывать прошивку.

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

Прошивка получилась незаурядная, но все работает.

output:
- platform: gpio
id: output1
pin:
number: GPIO4
inverted: true
mode:
output: true

- platform: gpio
id: output2
pin:
number: GPIO5
inverted: true
mode:
output: true

switch:
- platform: output
name: "Освежитель"
id: power
output: output1
on_turn_on:
- output.turn_on: output1
- delay: 100ms
- output.turn_off: output1
on_turn_off:
- output.turn_on: output1
- delay: 100ms
- output.turn_off: output1

button:
- platform: output
id: switch_color
name: "Переключение цвета"
output: output2
duration: 100ms

text_sensor:
- platform: wifi_info
ip_address:
name: "IP Address"
id: IP
ssid:
name: "SSID"
id: SSID

sensor:
- platform: wifi_signal
name: "Signal Strength"
id: Strength
update_interval: 60s

Это описание кнопок и сенсоров, а сверху должна быть автоматически сгенерированная шапка самим ESPHome.

Заливаем прошивку, Home Assistant потом сам находит устройство и предлагает его добавить, соглашаемся с ним. Устройство появляется в списках:

В прошивке также реализовано переключение цвета, правда, с этим тоже приколы…

Магия

В этот парогенератор можно также лить эфирные масла. Решил воспользоваться этой возможностью и сделать подсветки для разных масел.

Алгоритм выбора цвета у этого прибора таков: при включении по стандарту всегда огонь, а потом идет переключение на циклическое переключение цвета.

Как поступил я с конкретикой цветов — создал скрипты в самом Home Assistant и, зная отсечку каждого цвета, предварительно замерив интересные мне цвета секундомером, подставляю их задержку между началом циклической смены и фиксацией цвета. Алгоритм каждого скрипта таков:

  • Для возврата на исходную выключаем аромадиффузор
  • Ждем секунду
  • Включем
  • Запускаем смену цвета
  • Ждем определенное количество времени
  • Останавливаем смену цвета

Мои замеры в секундах (миллисекунды — сотые дроби):

  • 3.81 — Мята
  • 9.20 — Апельсин
  • 4.17 — Чайное дерево
  • 4.80 — Хвойные
  • 11.82 — Лаванда
  • 7.47 — Лимон

Эти скрипты я запускаю по изменению селектора во фронтенде Home Assistant, также эти скрипты можно передать в Умный Дом Яндекс как отдельные устройства и управлять цветом подсветки голосом. Колхоз, но все же, работает.

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

Дорогой читатель, надеюсь тебе было интересно. С тобой был Corvych, не прощаемся, впереди будет много чего интересного, так что, до встречи!