Всегда приятно, когда "Умный дом" не только понимает своего хозяина, но и входит с ним в некий интерактив. Сегодня мы будем учить наш "Колобок" правильно определять приход домой каждого из членов семьи и включать индивидуальное приветствие. Для реализации данной возможности у меня написана серия из 9 сценариев. Логика их работы относительно проста: Вы приходите домой, открываете дверь и через несколько секунд вы слышите индивидуальное приветствие.
ВАЖНО:
- Данная статья написана в упрощенном виде для объяснения основных принципов задумки умного приветствия, дальнейшего личного усовершенствования и индивидуальной настройки.
- Также следует понимать, что если сам Homey стоит у вас в дальней комнате, за закрытой дверью или в кладовке, то сообщения от него вы не услышите и реализация данных сценариев на своем устройстве, не принесет желаемого результата. В моем случае используется большая активная колонка, которая всегда включена и все сообщения от нее я прекрасно слышу в коридоре. В дальнейшем я планирую реализовать данную задумку через датчик движения в зале.
- Базовая функция определения присутствия пользователя дома на данный момент работает не всегда корректно. Разработчики Athom знают о данной проблеме и обещали исправить данный "баг" с обновлением мобильного приложения летом 2018.
Итак, приступим...
Для реализации данной задумки нам понадобиться:
Естественно сам Athom Homey.Датчик открытия двери (я использую датчик открытия дверей и окон Xiaomi Mi Smart Home Door/Window Sensors).Плагин для работы с переменными из Homey App Store - Better Logic.Плагин озвучивания сообщений Soundboard. (Как научить "колобка" говорить по-русски, более подробно расписано тут)Записанные индивидуальные приветствия в формате mp3 или wavСмартфон с установленным официальным приложением от Anhom Homey Включенная функция обнаружения пользователя в приложении на смартфоне.
Надеюсь все уже научились создавать сценарии (Flow), если нет, то читаем тут и возвращаемся обратно.
Введение - функция определения присутствия
Сценарии построены на основе базовой функции "колобка" определения пользователя в зоне дома (LOCATION и PRESENCE). На основе данных о вашей геопозиции и подключении к домашней Wi-Fi сети, ПО на смартфоне определяет, где вы находитесь и передает информацию на сервер, который в свою очередь отправляет данные в Homey. Все что вам для этого нужно, это указать в ПО Athom на вашем ПК местоположение вашего дома (Setting - Раздел System - Lоcation - Automatically detect my location либо Manually select my location). Далее в настройках приложения на смартфоне включаем функцию определения присутствия (Setting - Use home detection - On) и выставляем радиус определения. Рекомендую использовать 300м, так вы сможете смело выходить в магазин у дома не запуская лишний раз сценарий приветствия.
Если вы планируете определять присутствие нескольких пользователей, то им необходимо установить свое приложение на смартфон, создать свой аккаунт и добавить в ваш Homey. Я регистрировал второго пользователя через его приложение на телефоне. Для добавления нового пользователя водим новый e-mail, указанный при регистрации (Setting - Users) и нажимаем Add User. После чего, в приложении на смартфоне второго пользователя, нужно будет подтвердить тот факт что вас добавили к устройству.
Сценарии 1 и 2 - озвучивание открытия и закрытия двери
Для тех, кому не нравиться частые речевые сообщения, данные сценарии можно пропустить, так как они никак не пересекаются остальными и несут исключительно эстетический характер. В моем случае при открытии двери ВСЕГДА произносится фраза " Внимание дверь открыта", при закрытии - "Дверь закрыта".
Создание переменных
В работе серии сценариев мы будем использовать несколько переменных, в которых будет храниться информация о местонахождении пользователя. Значение переменных: 0 - пользователь вне зоны дома, 1- пользователь вблизи дома, 2 - пользователь внутри дома.
Устанавливаем плагин Betterlogic и в настройках плагина (Setting - Раздел Apps - Betterlogic) для каждого пользователя создаем свою переменную (числового типа). В самом начале присваиваем любое числовое значение для каждой переменной (Например 2)
Создаем столько переменных, сколько пользователей вы планируете задействовать в приветствии. (В моем случае их 2. Я и жена)
Сценарии 3 и 4 - определение ухода
При определении любого пользователя за пределы радиуса дома, делаем значение его переменной = 0 (нулю).
Сценарии 5и 6 - определение в области дома
При определении любого пользователя в пределах радиуса дома, делаем значение его переменной = 1.
Сценарии 7 и 8 - определение прихода домой
Итак, пользователь находиться у дома и его переменная уже = 1. При открытии двери, сравниваем значение переменной, если она меньше 2, то запускаем "приветственное" сообщение для пользователя и делаем значение переменной = 2. Стоит понимать, что если оба пользователя зайдут одновременно, то "приветственное" сообщение будет запущено одновременно, поэтому необходимо сделать отстройку одного сообщение от другого (следует учитывать длительность первого сообщения). В сценарии 7 (для главного пользователя) - сообщение запускается через 10 секунд после открытия двери. В сценарии 8 - сообщение для второго пользователя запускается через 20 секунд после открытия двери. Таким образом сообщения будут воспроизведены последовательно.
Сценарии 9 и 10 открытие двери, когда пользователь находится дома
Если какой-либо из пользователей уже вошел в дом, то его значение переменной приравнено к 2, поэтому данным сценарием мы проверяем значение переменной при следующих открытиях двери. И если оно больше 1, то никакого действия не требуется. Скорее всего данный сценарий необязательный и вся логика приветствия будет работать и без него. Но я в дальнейшем планировал на основе этого сценария сделать озвучивание последующих открытий двери, поэтому он присутствует в данной статье.
Вот собственно и все. Наши индивидуальные приветствия готовы.
PS: Данные сценарии оттестированы на протяжении недели с приложением для iPhone - ложных срабатываний не было. На данный момент не удается победить приложение для Андроид для второго пользователя - "приветствия" выполняются нерегулярно. Скорее всего виной нестабильная работа самого приложения. Если кто-то найдет ошибку в приведенных алгоритмах - буду рад учесть все замечания и поправить.
PSS: На основе данных сценариев можно реализовать уникальные приветствия для каждого пользователя для разного дня недели и времени суток. Нужно всего лишь ввести проверку дня недели или времени. Теперь все зависит только от вашей фантазии.
Удачных экспериментов!
Отличная работа, спасибо за труд ;)
всегда рад , тебе спасибо за все!!!
Интересное решение.
Молодец!!!!!!
красиво статью оформил, молодец!
С картинками немного промахнулся, надо было нарезать под один размер.
спасибо! Очень пригодилось)
Супер! Давно искал подобную информацию
Спасибо, полезная информация!!!
Все, вроде, неплохо и по делу. Но один кейс не учтен и у меня пока нет мыслей как это исправить.
Суть: Один человек (Вася) находится дома. Второй человек (Маша) был далеко от дома и зашел в зону тех самых трехсот метров. Маша позвонила Васе и попросила встретить ее у магазина, помочь донести сумки.
Получаем итог: Маша вошла в зону трехсот метров (переменная стала единицей), когда Вася будет выходить и откроет дверь, через десять секунд, дома Homey произнесет приветствие Маше, а когда они оба вернутся, будет молчать.
Может, чего-то недосмотрел, но очень похоже, что именно так и получится.
Нужен плагин проверяющий присутствие пользователя в вайфай сети. Если добавить этот блок проверки может сработать , но при условии что вайфай в телефоне всегда включен >_<. Надо протестировать плагин Smart Presence, может он впаре с штатным сможет показывать более точный результат.