{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","hash":"257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

Полив цветов, геймификация и умный дом

История про то, как цветы просят пить, пишут об этом в Telegram, говорят голосом Яндекс.Станции и ставят задачи в сервисе геймификации.

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

Для решения этой задачи на очередной распродаже (а будем честны - для того, чтобы поиграться) были куплены датчики качества почвы Mi Smart Flower Monitor (HHCCJCY01).

Mi Smart Flower Monitor - датчик фертильности почвы, влажности, температуры и освещенности

Подключение датчика к умному дому

Увы, штатный режим работы датчика неудобен - через специально приложение к нему нужно подключаться через Bluetooh и только после этого смотреть на влажность, фертильность и температуру почвы. Для того, чтобы он сам сообщал о том, что почва сухая, нужно приобрести отдельный шлюз Xiaomi с Bluetooth. Но такой вариант не устраивает меня по нескольким причинам: - Мне не хотелось покупать еще одно устройство с весьма ограниченным функционалом - Работа осуществляется через приложение от Xiaomi, обладающее неприятной особенностью заваливать рекламными Push сообщениями на китайском языке - Информация о статусе почвы будет приходить в формате Push сообщений, которые я часто игнорирую (особенно с учетом предыдущего пункта) - Совместная работа у MiHome находится на весьма зачаточном уровне - Глобальная привязка процесса к интернету и китайским серверам

Исходя из этого (ага-ага, как будто не сразу) было принято решение подключить к серверу умного дома, работающему на Home Assistant.

Home assistant - один за самых популярных на текущий момент серверов умного дома с открытой лицензией. В отличии от коммерческих продуктов, он не завязан на определенный бренд оборудования, размещается локально и работает в не зависимости от наличия подключения к Интернет

В сервер для работы с Bluetooth устройствами (стралкой, диммерами и весами) уже был воткнут адаптер и установлена HACS интеграция Passive BLE Monitor.

HACS - Home Assistant Community Store - каталог дополнений, созданных сообществом, позволяющий существенно расширить функционал сервера.

Адаптером служит Buro BU-BT532 - один из немногих в нашей рознице с внешней антенной.

Buro BU-BT532 основан на платформе Realtek, поддерживает Bluetooth 5.3

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

С этим уже можно работать, но хочется вывести информацию на панели Home Assistant, используя штатную карточку цветов. Сделать это "в лоб" не получится - подключенный через BLE монитор воспринимается как набор сенсоров. В configuration.yaml были добавлены следующие строки, описывающие какие сенсоры отвечают влажность, температуру, фертильность и освещенность.

Configuration.yaml - основной файл настроек Home Assistant. Большинство изменений можно сделать через веб-интерфейс, но иногда приходится изменять его напрямую.*

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

Стандартная карточка "Цветы" в Home Assistant

Добавление оповещений в Telegram

Но изначальная задача по-прежнему не решена - для проверки состояния нужно заходить в приложение. Это решается при при помощи телеграм-бота: в Home Assistant создана следующая автоматизация:

Переводя на человеческий - дважды в сутки, если влажность почвы на датчике меньше 18% слать уведомление в Telegram бот каждому члену семьи.

Интеграция с Telegram - штатный функционал Home Assistant. У умного дома есть еще несколько способов доставки уведомлений (Push, дискорд, СМС-шлюзы), но этот - самый удобный для меня

Сообщения приходят, цветы спасены:

Бот умного дома назван "Сычиком" в честь одного из персонажей мультфильма "Дом совы"

Добавим немного голоса

Теперь можно немного расширить функционал. Почему бы не задействовать Яндекс.Станцию, пусть она говорит, что происходит с цветами. Я использую интеграцию Yandex.Intents, ключевой фразой будет "Алиса, что с цветами?"

После этого Алиса должна перечислит состояние цветов, для этого создал отдельную автоматизацию:

Чем хороша интеграция Yandex.Intents - она позволяет понять с какой колонки был задан вопрос и отвечать именно на нее, а не на все доступные устройства. За это отвечает параметр entity_id: "{{ trigger.event.data.entity_id }}" - он указывает, какое устройство должно начать говорить.

Геймификация

В целом все работает, но чего-то не хватает. Хоть цветы и пишут в Telegram, но их сообщения можем несколько дней игнорировать, так как некогда, не вовремя и лень. Для глобального решения проблем с мелкими ежедневными делами мы начали использовать сервис геймификации Habitica - это мобильно/браузерная игра-планировщик задач. Игрок в ней ставит ежедневные задачи и выполняя их побеждает монстров и получает награды, прокачивая своего персонажа.

Хоть у Habitica и есть свой api (application programming interface - способ общения сервисов между собой), но он не очень очевиден и основан на вебхуках, что немного усложняет с ним работу. К счастью, у меня на домашнем сервере уже поднят контейнер с n8n, для которого существует неофициальный модуль для интеграции. Так как постановка задач из умного дома будет не только с Рео, то я добавил универсальный процесс, который слушает запросы, получает из них название задачи и человека, кому она упадёт, после чего создается задача в Habitica.

n8n - бесплатная low-code платформа для автоматизации, которую можно разместить на своём сервере. По возможностям ее функционал аналогичен таким продуктам как IFTTT, Zapper, Microsoft Power Automate, но полностью автономен и не накладывает ограничений на количество запусков.

Примерно так выглядит готовый процесс в n8n

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

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

Подключаем Rest интерфейс к Home Assistant и дополняем автоматизацию

Взаимодействие по REST также встроено в сервер умного дома'

Пауза в 3 секунды нужна для того, чтобы на сервере Habitica не срабатывал антиспам - он сильно не любит, когда с одного ip параллельно прилетает создание задачи на 2 аккаунта.

Проверяем - работает!

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

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

0
Комментарии
-3 комментариев
Раскрывать всегда