В прошлой статье мы с вами добавляли голосовое управление кофеварке Jura. Но это была лишь тренировка в ожидании по-настоящему космического устройства - умной кровати Ergomotion от Аскона.
Пролог
У моей жены есть суперсила. Почти в любом магазине она выберет самую дорогую вещь из предложенных, не обращая внимания на ценники. Когда пришло время менять кровать - её внимание остановилось на спальной системе Ergomotion. Моей задачей было - определить, что вещь не только красивая, но и функциональная.
Из изучения сайтов и инструкций становится понятно, что основания Ergomotion обычно имеют:
двигатели изменения положения головы и ног;
двигатели массажа головы и ног;
радиопульт;
подсветку и модуль bluetooth (в старшей модели).
Конечно, я сразу же стал искать возможные варианты подключения устройства к умному дому:
Беспроводной пульт, скорее всего, работал на частоте 2.4ГГц и проприетарном протоколе, поэтому как возможный способ интеграции не рассматривался.
Bluetooth-модуль имел шансы расковырять протокол. Но шёл только в комплекте со старшей моделью кровати, а она не устраивала по дизайну из-за лишних массивных бортов.
Совсем недавно Олег (Sprut) анонсировал разработку Zigbee-модуля к этим кроватям. Модуль должен поддерживать весь модельный ряд и выглядел вполне рабочим вариантом интеграции.
Через несколько дней, на мероприятии Sprut.party 2023, мне удалось пообщаться с представителем компании Аскона. Каково было мое удивление, что он, ни на секунду не задумываясь, согласился прислать мне Bluetooth-модуль для экспериментов, без каких-либо гарантий на успешный результат.
Забегая на месяц вперёд, отмечу, что модуль пришёл в пятницу вечером, а в воскресенье вечером на моём Telegram-канале уже было видео голосового управления кроватью.
Лично у меня вызывает восхищение и глубокое уважение, когда в компании находится человек, готовый сотрудничать с представителем open source. Потому что для некоторых брендов вся связь с сообществом заканчивается на "отправить новое устройство какому-нибудь тиктокеру или проплаченному техноблогеру". В конечном счёте такие решения отражают истинное отношении компании к своим пользователям. Ничего личного, просто бизнес.
В итоге, нами была заказана младшая модель основания - Ergomotion 450.
Мобильные приложения
В Google Play у разработчика Ergomotion есть 30 (тридцать) приложений, и в большинство из них встроена функция управления кроватью.
Видимо, каждый раз получая на выходе дешёвую поделку с уродливым интерфейсом, компания заказывала разработку нового приложения у новой команды.
В таком подходе есть и плюс - все возможные bluetooth-команды для управления кроватью находятся за считаные минуты.
Примерно за пару часов весь протокол был как на ладони. Почему так долго? Да потому что, мобильные приложения совершенно не обрабатывают текущее состояние кровати. Его пришлось добывать экспериментальным путём, и там есть много интересного:
текущая позиция моторов головы и ног, в каких-то своих условных единицах.
находятся ли моторы головы и ног в движении, довольно полезный флаг.
выбранные уровни массажа головы и ног, от 1 до 6.
установленный таймер массажа - 10, 20 или 30 минут.
оставшееся количество секунд таймера, обновляется несколько раз в секунду.
состояние подсветки, даже на кроватях, где её нет.
Интеграция Home Assistant
Обязательным требованием к интеграции было последующее управление через Яндекс Алису. Поэтому я целый день подбирал, на каких базовых устройствах реализовать управление кроватью. В итоге остановился на:
двух шторах (cover) для управления позицией головы и ног;
двух вентиляторах (fan) для управления массажем головы и ног;
лампочке (light) для управления сценами (быстрыми позициями) кровати;
и бинарном сенсоре состояния bluetooth-подключения.
Имея на руках позицию и флаг активности мотора, удалось реализовать установку точного положения головы и ног. Компонент сам будет удерживать нужные кнопки, пока моторы не достигнут желаемых позиций. Это гораздо удобнее, чем делать тоже самое вручную через беспроводной пульт.
А ещё можно сохранить своё любимое положение для быстрого доступа, как в дорогих автомобилях.
Забавный факт. В старшей модели кровати массажем головы и ног управляют четыре кнопки на пульте (вверх и вниз для каждой части тела). В младшей - есть только две кнопки вверх. Но через bluetooth-модуль поддерживаются все четыре кнопки.
Компонент сам будет переключать скорости, пока не достигнет заданной через интерфейс Home Assistant.
В массаже, кроме скорости, можно установить режим. Он соответствует таймеру в 10, 20 и 30 минут. По умолчанию он всегда выставляется в 10 минут.
В лампочке, через эффекты, можно задать быстрые позиции кровати. Также лампочка считается включенной, если кровать приподнята. А если её выключить - кровать вернётся в исходное положение. Быстро и удобно.
Основной сложностью было эмулировать нажатия кнопок трёх разных типов:
нажал и держишь - изменение позиции головы и ног, тут очень важно постоянно слать нажатую кнопку без пауз, иначе движение будет дёрганным;
нажал и отпустил (несколько раз) - смена скорости массажа (по очереди), тут очень важно отпускать кнопку, или скорость меняться не будет;
нажал на долю секунды и отпустил - выбор предустановленной позиции головы и ног, тут очень важно задержаться в нажатом положении, или команда не выполнится.
Также пришлось заложить логику определения и запоминания максимальной позиции моторов головы и ног. Ведь они отличаются даже на одинаковых моделях кроватей.
Ссылка на компонент Home Assistant - Ergomotion.
Управление голосом
На этом этапе будет понятно, почему были выбраны штора, вентилятор и лампочка.
В отличии от умной кофеварки, здесь удалось обойтись без Яндекс.Диалогов. Что заметно упрощает настройку и использование, но уменьшает гибкость в доступных голосовых командах.
Штора отзывается на команды "подними" и "опусти". Назвав шторы "голова" и "ноги", можно говорить Алисе:
подними голову на 45;
опусти ноги.
Вентилятор отзывается на команды "включи" и "выключи". А также имеет разные скорости и режимы работы. Назвав вентиляторы "массаж головы" и "массаж ног", можно говорить Алисе:
включи массаж головы;
установи высокий режим для массажа головы;
включи следующий режим на массаже головы;
установи программу два для массажа головы.
Программы 1, 2 и 3 у вентилятора, это значения таймера 10, 20 и 30 минут соответственно. Не очень очевидно, но тут особо вариантов не было.
Лампочка имеет режимы "ночь", "кино", "отдых". Назвав лампочку "кровать", можно говорить Алисе:
включи режим кино на кровати;
выключи кровать.
Выключение лампочки (или в нашем случае кровати) аналогично команде "включи режим ночь на кровати". Можно пользоваться любой из них.
На скриншоте выше видно, что лампочка изображена как выключатель. Это сделано намеренно, чтоб кровать не отзывалась на команду "включи свет в спальне". При этом режимы, которые есть только у лампочек, за ней сохраняются. Пример настройки интеграции Yandex Smart Home:
yandex_smart_home:
entity_config:
light.ergomotion_scene:
type: devices.types.switch
modes:
scene:
night: [ 'flat' ] # Ночь
reading: [ 'lounge' ] # Чтение
movie: [ 'tv' ] # Кино
rest: [ 'zerog' ] # Отдых
One more thing...
Железный профиль в основании кровати отлично подходит для установки подсветки во всю его длину. У меня как раз была в запасе старая лента Sonoff L1 на пять метров.
Но просто подсветка скучно. Веселее, когда она работает синхронно с голосом Алисы и повторяет подсветку колонки Яндекса. Три года назад я показывал, как это можно сделать с помощью компонента YandexStation:
К сожалению, API ленты Sonoff гораздо хуже, чем у устройств Yeelight (на видео выше):
лента не поддерживает локальное управление, поэтому команды выполняются с некоторой задержкой;
лента не поддерживает параметр
transition
, с помощью которого цвет или яркость могут меняться плавно в течении некоторого времени.
Поэтому пришлось реализовывать transition
вручную в компоненте SonoffLAN. Анимация получилась немного дёрганной, но лучше чем ничего. Результат можно посмотреть на видео в начале статьи.
Код автоматизации Home Assistant
automation:
- alias: Alice to LISTENING
trigger:
platform: state
entity_id: media_player.yandex_station_mini2
attribute: alice_state
to: LISTENING
action:
- service: scene.create
data:
scene_id: before_alice
snapshot_entities: light.sonoff_l1
- repeat:
while:
- condition: template
value_template: "{{ state_attr(trigger.entity_id, 'alice_state') != 'IDLE' }}"
sequence:
- repeat:
while:
- condition: template
value_template: "{{ state_attr(trigger.entity_id, 'alice_state') == 'LISTENING' }}"
sequence:
- service: light.turn_on
data:
entity_id: light.sonoff_l1
rgb_color: "{{ [103, 57, 204] if repeat.index%2 else [36, 36, 255] }}"
brightness: 255
transition: 1
- delay: '00:00:01'
- repeat:
while:
- condition: template
value_template: "{{ state_attr(trigger.entity_id, 'alice_state') in ['BUSY', 'SPEAKING'] }}"
sequence:
- service: light.turn_on
data:
entity_id: light.sonoff_l1
rgb_color: [103, 57, 204]
brightness: "{{ 100 if repeat.index%2 else 255 }}"
transition: 1
- delay: '00:00:01'
- service: scene.turn_on
data:
entity_id: scene.before_alice
Подобную автоматизацию для колонок с Алисой несложно переделать в другую популярную функцию - "приглушать звук ТВ, когда разговариваешь с колонкой". Функция много лет есть в устройствах Chromecast и колонках Google Home, но официально в колонки Яндекса пока не попала.
Yet another thing...
Недавно я выпустил новую сборку портативной версии Home Assistant под Windows - HassWP. Она позволяет легко попробовать эту платформу без необходимости покупать и настраивать отдельный сервер, или изучать и разворачивать ПО для виртуализации.
В эту сборку уже встроены компоненты для управления кофеварками Jura и кроватями Ergomotion. До использования важно ознакомиться с тонкостями выбора стабильного bluetooth-адаптера в статье про кофеварку.
В комплекте HassWP нет компонента для интеграции с умным домом Яндекса - Yandex Smart Home, но его несложно установить. Компонент поддерживает лёгкую и быструю настройку на базе собственного навыка умного дома - Yaha Cloud, без необходимости публичного HTTPS-доступа к серверу Home Assistant.
Теперь, при желании, сотрудники Асконы могут установить Яндекс браузер и настроить голосовое управление кроватями на рабочем ноутбуке продавца. Получая при этом бонусы с продаж без каких-либо материальных вложений. Такой вот он open source.
Эпилог
Если кто-то в каждой новости видит рекламу - кровать я покупал за полную стоимость из своих кровных.
Года три назад я выпрашивал скидки у компании Coolkit на устройства Sonoff для развития компонента SonoffLAN. Тогда мне не дали даже жалких 5%. Сегодня они готовы прислать любые свои устройства без ограничений абсолютно бесплатно. Предложением я ни разу не воспользовался. Просто понимаю, что теперь не найду даже времени распаковать посылки, и они будут пылиться в кабинете, раздражая жену.
Как обычно, эти и другие полезные интеграции для Home Assistant можно найти на GitHub. А за новостями проектов - следить на канале в Telegram.
Комментарии (12)
EugeneVRN
09.10.2023 07:14Привет, что надо докупить к такой кровати чтобы она управлялась алисой? У меня только оригинальный радиопульт.
Luuzuk
09.10.2023 07:14+1Я похожую кровать интегрировал в HA с помощью Esp32 и EspHome. Правда bluetooth там не было, так что пришлось пожертвовать пультом (подпаять к кнопкам пульта выводы esp32, чтобы она по моим командам "нажимала" кнопки оригинального пульта). Уместить удалось все в корпус от оригинального пульта.
Обратную связь по состоянию "поднята/опущена" частей кровати получаю с герконов (тоже к esp32 подключены), по свету - с делителя напряжения на фоторезисторе.Датчики вибрации только руки не доходят сделать, по массажа обратной связи нет.
Хуже, чем по BT, но ничего другого не придумал, увы
plutarh
09.10.2023 07:14-5Может быть действительно классная и удобная штука, этого не знаю. Но лично я испытываю чувство недоверия и даже опасения по поводу добровольного окружения себя повсюду электронными приборами, электромагнитными полями, электрическими кабелями и т.п. Я довольно чувствителен к такого рода воздействиям и испытываю ощутимый дискомфорт. Например, работать или находиться рядом с ноутбуком с включенным Wi-Fi тяжело для меня.
WiW
09.10.2023 07:14+2Вспоминается эксперимент, где "ценителям" лампового звука включали ламповый и обычный звук. Как думаете, много таких "ценителей" услышали разницу? Вот так и здесь...
А насчет кровати. Пол года снимал квартиру, досталась такая же. Игрался пару недель, потом спал как на обычной.
Массаж, это просто вибрации. Ну а изменение положения происходит очень долго.
Вообщем такое себе удовольствие. =)
Gmarapet
09.10.2023 07:14+4В любое время года одинаково тяжело или весной и осенью сильнее чувствуется?
HepoH
09.10.2023 07:14+3Сериалы говорят, в таких случаях помогает плащ из фольги и пользование керосином для освещения дома:
Factivist
09.10.2023 07:14Честно говоря, не понял что в этой кровати "умного". Лучше бы встроили датчики давления под матрас, чтобы собирать статистику о качестве сна, как умеют многие фитнес-браслеты.
iig
09.10.2023 07:14+4Тут больше вопрос, что с этой статистикой делать. Посмотрел на график от фитнес-браслета, ничего не понял. Качество сна сколько-то процентов.. Нуок, в следующий раз постараюсь спать лучше.
;)
Lorendrake
Добрый день! Скоро можно будет прикрутить кровати колеса, и добавить BT руль :)
а по существу новичковый вопрос, каким образом можно передать на алису BT команды?
Formyurik
Yaha же. Интеррация Home Assistant и Яндекс