А вы знали что простыми устройствами можно управлять командами из коробки?

Average Rating
0 out of 5 stars. 0 votes.

А вы знали что если добавить девайс через “простые устройства” то им можно автоматически управлять без создания дополнительных шаблонов поведения или как я это делаю в модуле api.ai? Мажордомо автоматически будет искать в списке устройств указанный в команде девайс и если он будет найден, то действие будет выполнено. Например если вы добавили реле, которое включает и выключает ночник, а в простых устройствах вы назвали это реле “ночник”, то по команде “включи ночник” его статус будет переключён на значение “1”. Детальнее про обработчик вы можете посмотреть вот в этом файле /modules/devices/processCommand.inc.php

Average Rating
0 out of 5 stars. 0 votes.

А вы знали что NobodyHomeMode.deactivate вызывается автоматически?

Average Rating
0 out of 5 stars. 0 votes.

Открываю рублику “А вы знали что …” наверно в основном для себя. Буду описывать всякие мелкие фишечки работы Мажордомо, потому как запомнить их все невозможно. Но возможно кому-то тоже окажется полезным.

И так, а вы знали что если добавить датчик движения используя модуль “Простые устройства” и выставить в нём переключатель “Игнорировать события от устройства, когда никого нет дома” в значение “нет“, то при каждом срабатывании движения автоматически будет вызываться метод NobodyHomeMode.deactivate ?

Модуль Простые Устройства

Это можно использовать в своей логике для которой важно знать есть ли кто-то в доме или нет. Про другие способы определения нахождения кто дома я уже писал, рекомендую ознакомиться.

Average Rating
0 out of 5 stars. 0 votes.

Учим Мажордомо определять конкретного пользователя умного дома для создания более интеллектуальных персонализированных сценариев

Average Rating
0 out of 5 stars. 0 votes.

Задача определения хозяев дома уже более менее решена. Подключив почти любое устройство к Majordomo через модуль “Простые устройства” можно выставить настройку “Изменение означает активность в помещении”.
Изменение означает активность в помещении
Что бы активность срабатывала, нужно выбрать помещение где работает девайс. Это делается в выпадающем списке “Местоположение”.
Местоположение Majoedomo
Но мы же хотим приблизится что бы у нас была не домашняя автоматизация, а умный дом. Но дом действительно будет умным когда научится элементарно отличать вас от другого члена семьи. Для человека это достаточно простая задача, а вот с машину всё чуть-чуть сложней. Я попытался решить этот вопрос, кто и где именно из пользователей “умного дома” находится в данный момент. Решив эту задачу можно будет сделать сценарии более интеллектуальными.

Итак, что нам может помочь на раннем этапе решить эту задачу? Первое чем можно воспользоваться это индикатор подключения личного телефона к домашней сети. Как правило роутеры присваивают один и тот же IP адрес одному и тому же устройству в момент соединения по WI-FI. Если это не так в вашей среде, то погуглите как переконфигурировать ваш роутер. Что бы заработала эта схема идём в раздел “Устройства Online” и добавляем туда все личные устройства и их IP адреса.
Устройства Online

Далее в разделе “Объекты” находим класс “Users” и добавляем туда всех членов семьи. У всех будет автоматически создано свойство “atHome”. Если оно равно “1”, то Majoedomo считает что пользователь находится дома. Поэтому возвращаемся в раздел “Устройства Online” выбираем телефон, выбираем “Код” для пункта “Действие при переходе в Online” и вставляем туда команду:

sg("admin.atHome",1);
Для “Действие при переходе в Offline”, вставляем:

sg("admin.atHome",0);
Такую же процедуру проделываем со всеми устройствами, не забывая заменить “admin” на имя пользователя из класса “Users”.

Далее я советую поставить модуль “Статусы системы”. В разделе “Устройства” вы увидите все ваши добавленные телефоны. Для каждого из них выбираете желтый статус и вписываете текст, который будет отображаться в левом верхнем углу главной страницы. В моём случае если моё устройство будет офлайн, то будет отображаться текст “Телефон Алекс вне сети”.

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

Второе что мне пришло на ум это NFC метки. Что это такое и как работает я рассказывать не буду. Ютуб в помощь. Расскажу лишь применение этой технологии для решения моей задачи. Я подразумеваю что у всех кто пользуется “умным домом” есть телефон с модулем NFC. Устанавливаем любое приложение, которое умеет отправлять HTTP запросы при сопряжении с NFC меткой. Например “Trigger writer” под Android. Далее приклеиваете на двухсторонний скотч NFC метки везде где вы часто оставляете телефон. У меня в наличии было 2 метки и я одну приклеил под рабочий стол, а вторую на прикроватную тумбочку. Затем в приложении создал 2 NFC события. Что бы при срабатывании на каждую метку в Мажордомо отправлялся HTTP запрос, который говорит кто и где находится. Вот пример запроса для пользователя admin, который находится в спальне:

http://192.168.1.101:80/objects/?op=set&object=Bedroom&p=User&v=admin

NFC application

Теперь нам нужно обрабатывать этот HTTP запрос. В классе “User” добавляем свойства: “Location” и “LocateUpdated”, а в классе “Rooms” добавляем метод “CheckUser”, потом добавляем свойство: “User” и выставляем настройку запускать метод “CheckUser” на изменение свойства “User”. В исходный код метода “CheckUser” вставляем:

$objectsRooms=getObjectsByClass("Rooms");
$time=date('H:i');
foreach($objectsRooms as $obj) {
$user = getGlobal($obj['TITLE'].".User");
$location = getGlobal($obj['TITLE'].".Title");
if ($user == "admin"){
sg("admin.Location",$location);
sg("admin.LocateUpdated",$time);
cm($obj['TITLE'].".onActivity");
sg($obj['TITLE'].".User","");
SetTimeOut("ClearAdminLocation","sg('admin.Location','');", 10*60);
SetTimeOut("ClearAdminLocateUpdated","sg('admin.LocateUpdated','');", 10*60);
}
else if ($user == "Vika"){
sg("Vika.Location",$location);
sg("Vika.LocateUpdated",$time);
cm($obj['TITLE'].".onActivity");
sg($obj['TITLE'].".User","");
SetTimeOut("ClearVikaLocation","sg('Vika.Location','');", 10*60);
SetTimeOut("ClearVikaLocateUpdated","sg('Vika.LocateUpdated','');", 10*60);
}
}

Добавляете столько блоков “else if”, сколько у вас пользователей, ну и замените имена в блоке сравнения. Имена должны совпадать с теми, которые вы передаёте в HTTP запросе из мобильного приложения и те что у вас в классе “User”.
В результате, после того как сработает коннект с NFC меткой заполняется свойство “admin.Location” и “admin.LocateUpdated”. Тем самым Мажордомо понимает кто и где и когда находится. Такую информацию можно выводить в “State” (левый верхний угол). Это можно делать например вот так:

%admin.fullName% -- %Admin.Location% (%admin.LocateUpdated%)
Мажордомо state

 

Ещё один способ определять нахождение пользователя по GPS, но он так сильно садит батарею что я отказался от него. Но вы можете его добавить в качестве дополнительно способа определения. Единственная проблема с GPS в том что вы сможете достаточно приблизительно определять дома тот или иной пользователь или нет. Зато с его помощью можно определять нахождение пользователей вне дома. Но это уже совсем другая задача.

И заключительный четвёртый и самый крутой способ определять пользователя – это с помощью нейронной сети. Об этом способе я снимал демонстрационный ролик. Пока у меня всего одна камера и она может определять пользователя только в одном месте. Если вы хотите что бы Мажордомо смогло определять ваше нахождение во всех помещениях, то вам понадобится столько камер, сколько у вас помещений. Я купил ещё одну камеру, жду доставки и буду пробовать интегрировать её в свою логику.
Алгоритм определения пользователя следующий. Добавляю IP камеру через “Простые устройства”, так же добавляем любой датчик движения либо если возможно использовать встроенный датчик движения в камеру. Как только сработал датчик, делаем снепшот, сохраняем его на файловой системе, запускам нейронную сеть и скармливаем ей фото. Результаты работы сети отправляются в Мажордомо в видео определённого числа. В зависимости от значения принимается решение кто на фото. Если на фото есть человек, который является пользователем системы, то выставляем свойства “Location”, “atHome” и “LocateUpdated” как в примере с NFC. Большой минус определения лица в том что он требует процессорное время и на малинку такую штуку особо не интегрируешь. К тому же мой способ использует питон, а это тоже требует установки дополнительного интерпретатора.

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

Average Rating
0 out of 5 stars. 0 votes.

Свои сложные сценарии работы для Yeelight ленты и лампочки в Majordomo

Average Rating
0 out of 5 stars. 0 votes.

На видео ниже я демонстрирую один из примеров работы светодиодной ленты Yeelight Stripe, который невозможно создать в стандартном приложении Xiaomi MiHome или в официальном приложении Yeelight. Для начала вам необходимо завести ваши ленты и лампочки в Majordomo. Пока полноценного модуля нет, но всё работает если проделать по инструкции из этой темы, то устройства автоматически появятся в объектах класса со всеми необходимыми свойствами и ими можно будет управлять. К сожалению добиться нужных мне скоростей не удалось, видимо из-за того что управление происходит через сингапурский клауд. Я намучился с подборкой тайм аутов для нормальной реакции ленты. И что бы вы не тратили своё время на это привожу готовый код на сценарий для:

Вам остаётся только заменить имя объекта на свой и вставить код в нужный метод.


Лампочку Yeelight купил тут.

Светодиодную ленту Yeelight Led Strip купил тут.

Average Rating
0 out of 5 stars. 0 votes.

Как подружить Amazone Echo (Alexa) и Majordomo

Average Rating
0 out of 5 stars. 0 votes.

Для тех кто хочет управлять своим умным домом не с помощью планшета, что по моему мнению является ближайшим родственником ИК пультов, а с помощью современного подхода – голосовыми командами, существует проблема – как всё это настроить. Коммерческие компании пачками выпускают свои решения:

и другие.
Есть попытки создать своё собственное решение. Конкретно для Мажордомо, вот тут обсуждается как реализовать такой проект. Но до сих пор ни кто не представил работающий концепт. Но лично я очень надеюсь что кому-нибудь это удастся.
У меня уже есть Amazon Echo (Alexa) и стояла главная проблема, как её прикрутить к Мажордомо? Сама по себе Amazon Alexa может управлять любыми совместимыми с ней смарт устройствами. Но для этого производитель должен написать специальное приложение для неё. Хочу заметить что компания Yeelight, которая входит в эко систему Xiaomi написала такое приложение, поэтому её устройствами можно управлять голосом без проблем. Как это настраивать я показывал в своих видео:

Так же есть смарт розетка, которая тоже совместима с Амазон Алекса – Голосовое управление любой светодиодной лентой за 3 бакса с помощью смарт розетки Smart Socket. Есть и другие устройства, но их не так много. Например для очень популярных устройств семейства Xiaomi работающего приложения нет. В маркете приложений Amazon я нашёл плагин Xiaomi, но он очень старый и не рабочий к сожалению.

Что же делать с остальными устройствами? Мажордомо частично решает эту проблему, он позволяет объединить все приложения и создавать сценарии для устройств разных производителей из разных эко систем. Но к сожалению сам Мажордомо пока не поддерживает ни один из голосовых ассистентов. Выход есть. Энтузиасты написали приложение, которое эмулирует работу смарт розетки Wemo. Т.е. Алекса будет думать что она управляет смарт розеткой Wemo, но на самом деле будет выключать или выключать совсем другие устройства. Как всё настроить я показываю в видео ниже. На данный момент настройка достаточно сложная. Могут возникнуть сложности с запуском питон скрипта. Облегчить жизнь пользователям может создание специального модуля для Мажоржомо, но сложность в том что эмулятор розетки написан на питоне. Необходимо либо переписывать его на php, либо устанавливать интерпретатор питона. Либо нужно писать своё приложение для Алексы, которое будет работать с Мажордомо. Это вопрос времени. Как только достаточно большое количество людей обзаведутся голосовыми автономными асситентами, то через некоторое время будет создан и софт. А пока используем что есть. :)
Приятного просмотра.

Average Rating
0 out of 5 stars. 0 votes.