Введение
Итак…вы установили систему. Скачали установщик для windows, или готовый образ Linux — без разницы. Система запустилась и работает.
Возникают вопросы — а что же делать дальше? Что сейчас может система? Что можно в ней поменять? Как что-то добавить?
Данный цикл статей предназначен как раз чтобы ответить на них. А начнем мы, пожалуй с интерфейсов системы. Ведь это то, с чем напрямую взаимодействует пользователь.
Сперва посмотрим на то, что у нас имеется (все скрины и описания приведены для свежего (только что установленного) дистрибутива для windows…в некоторых образах Linux интерфейс немного более наполненный демо-материалами, но сути это не меняет).
Чтобы открыть основной интерфейс системы нужно ввести в браузере
http://127.0.0.1 (или http://localhost), если вы входите с того компьютера, где установлен MajorDomo
http://<ip-адрес компьютера с MajorDomo в сети>,если вы входите с любого другого устройства в сети
и у вас должна открыться главная страница.
Если это ваш первый запуск, то должна открыться страница first_start.html. Если она не открылась (это может произойти, если вы установили готовый образ. Так же в последнем установщике под windows она почему-то тоже не открывается) — можно сделать это вручную, зайдя в настройки (Control Panel->SETTINGS->General settings, и там ищем, к примеру, Time Zone, и нажимаем ссылку Update) или же вбив в браузере после адреса /popup/first_start.html.
С этой страницы и начнем. Она простая, с базовыми настройками. Тут нужно выбрать
- Ваш часовой пояс
- Язык системы
- Цветовую тему интерфейса (Тёмная/Светлая)
Поменять эти настройки так же можно, зайдя повторно на данную страницу.
Теперь взглянем на все доступные интерфейсы. Каждый из этих интерфейсов может быть выбран как приоритетный для управления системой…либо может быть несколько приоритетных, в зависимости от используемых устройств.
1.6 Оправдана ли покупка всего оборудования для использования в системе с экономической точки зрения?
Одна из функций подобных систем, это экономия расхода энерго-ресурсов и при правильной настройке и установке эта экономия начинает ощущаться в самое ближайшее время после ввода системы в эксплуатацию. Однако, действительно ли это выгодно надо считать, сопоставляя затраты и итоговую экономию. К сожалению, не всегда можно сделать однозначный вывод об экономическом эффекте. Тем не менее, было бы не правильно рассматривать данный класс систем только как средство экономии. Скорее, экономия это один из положительных эффектов, возникающий на ряду со многими другими — повышение безопасности, комфорта и качества жизни в целом. Насколько эти плюсы экономически оправданны, каждый решает для себя индивидуально.
Установка и настройка MajorDoMo
MajorDoMo
Устанавливаем git:
apt install git
Скачиваем установочный пакет:
git clone https://github.com/sergejey/majordomo.git
Переносим каталог majordomo в каталог веб-сервера:
mv majordomo /var/www/
Воспользуемся шаблоном конфигурационного файла:
cp /var/www/majordomo/config.php.sample /var/www/majordomo/config.php
Настроим подключение к базе данных:
vi /var/www/majordomo/config.php
Define(‘DB_HOST’, ‘localhost’);
Define(‘DB_NAME’, ‘majordomo’);
Define(‘DB_USER’, ‘majordomo’);
Define(‘DB_PASSWORD’, ‘majordomo123’);
* где DB_NAME majordomo — имя базы данных; DB_USER majordomo — учетная запись; DB_PASSWORD majordomo123 — пароль для учетной записи mysql.
Задаем права:
chown -R www-data:www-data /var/www/majordomo
Настройка PHP
Настраиваем php.ini для apache:
vi /etc/php/7.2/apache2/php.ini
short_open_tag = On
max_execution_time = 90
max_input_time = 180
post_max_size = 200M
upload_max_filesize = 50M
max_file_uploads = 150
Настраиваем php.ini для unix shell:
vi /etc/php/7.2/cli/php.ini
short_open_tag = On
Настройка Apache
Настраиваем виртуальный домен:
vi /etc/apache2/sites-enabled/majordomo.conf
<VirtualHost *:80>
Define root_domain majordomo.dmosk.local
Define root_path /var/www/majordomo
ServerName ${root_domain}
DocumentRoot ${root_path}
<Directory ${root_path}>
AllowOverride All
</Directory>
</VirtualHost>
Проверяем конфигурацию apache и перезапускаем сервис:
apachectl configtest
systemctl restart apache2
Настройка MySQL
Подключаемся к MySQL:
mysql -uroot -p
Создаем базу данных и пользователя:
> CREATE DATABASE majordomo DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON majordomo.* TO majordomo@localhost IDENTIFIED BY ‘majordomo123’ WITH GRANT OPTION;
> \q
Импортируем базу данных:
mysql -v -u root -p majordomo < /var/www/majordomo/db_terminal.sql
Веб установка
Запускаем скрипт в консоли:
php /var/www/majordomo/cycle.php
В браузере открываем сервер по настроенному виртуальному домену (в нашем случае, majordomo.dmosk.local) — в открывшемся окне выбираем русский язык и нажимаем Continue:
Готово.
3.4 Каким средствами осуществляются голосовые уведомления?
Одна из активно используемых возможностей системы, это голосовое оповещение о тех или иных событиях. Для реализации этого могут быть задействованы следующие средства:
- Движок Google TTS (Windows/Linux) — каждая фраза отправляется в соответствующее API сервиса Google, возвращается звуковой файл, который в последствии воспроизводится. Данный способ требует наличие интернет-соединения, хотя однажды запрошенные фразы «кэшируются» локально и могут быть воспроизведены и без обращения к внешним сервисам
- Windows TTS (Windows) — встроенная в систему Windows универсальная подсистема синтеза речи. Данная подсистема может быть модифицирована покупкой и установкой более современных языковых движков, например Alyona от Acapella Group.
Кроме того, через систему настроек можно интегрировать собственный голосовой движок, описав команды его вызова.
Компоненты системы MajorDoMo
Основное понятие, вводимое цифровым домом «MajorDoMo» – объект, множество которых в свою очередь делится на различные классы. И каждый из них имеет свои свойства и методы взаимодействия. К примеру, класс «лампочки», в который могут относиться объекты «люстра в зале», «подсветка зеркала», «свет на кухне». У каждого есть свойство «статус» со значением «включено» и «выключено», а также метод «зажечь» и «погасить».
Это наиболее простой вид объяснения разделения всего комплекса связанного оборудования в пределах понятий MajorDoMo. То есть, методы и свойства распределяются в зависимости от класса объекта и принадлежат только подобным ему.
Объекты
Объект MajorDoMo в изначальной своей, аппаратной форме –это контроллер с возможностью связи между управляемым устройством или датчиком и центральной системой, на которой находится программный комплекс MajorDoMo.
В качестве аппаратной составляющей выступает как оборудование самостоятельной сборки, так и выпускаемое некоторыми производителями уже в комплекте, к примеру фирмой Xiaomi. «Умный» дом MojorDomo поддерживает массу протоколов обмена – MQTT, Z-Wave, Broadlink (без возврата состояния) и множество других.
Классы
Как уже говорилось, класс объединяет объекты одного типа. К примеру, класс «выключатели» с состояниями (включено/выключено) и двумя методами (включить/погасить). Или класс «датчики движения» со свойством, у которого значения изменяются в пределах «присутствует движение/нет движения».
Есть и возможность дополнительного разветвления в одной общности – введение подкласса. Самым понятным примером станут выключатели. Бывают контроллеры света, которые не только умеют включать и выключать напряжение, но и плавно его изменять. То есть в парадигме понимания системы умного дома мажордомо у класса «выключатели» конкретного типа есть еще и дополнительное свойство «яркость». В общем виде можно расписать эту взаимосвязь следующим образом:
Класс «выключатели» |
Свойства: Статус = включен|выключен Методы: Включить|Выключить |
||
«Свет в кухне» |
|||
«Свет в прихожей» |
|||
Подкласс «ВыключателиСДиммером» |
Наследуемые свойства: Статус = включен|выключен Наследуемые методы: Включить|Выключить собственное устанавливаемое свойство: Яркость = значение |
||
Свойства
Для большинства устройств в пределах «умного дома» характерно не только следование указаниям контролирующей части, но и возврата своего состояния. Это и есть свойство объекта.
Кроме того, параметрам можно устанавливать значения, которые будут возвращаться в устройство. К примеру, у класса «кондиционеры» можно устанавливать значение свойства «температура», которое будет обрабатываться самим кондиционером, в зависимости от которого он и будет поддерживать режим работы.
Методы
В рамках системы, «методы» — это те управляющие действия, которые могут быть произведены с каким-либо входящим в ее состав устройством. К примеру, у класса «выключатели» это «включить»| «выключить», у «двери» – «открыть»| «закрыть» и тому подобные.
Время/интервалы
time() — возвращает текущее время в формате timestamp.
timeConvert($tm) — конвертирует время из hh:mm в формат time() на сегодняшнее число
timeNow($tm) — возвращает в текстовом виде время типа «16 часов 40 минут». Если $tm не задан, то возвращает текущее время. $tm в формате time.
isWeekEnd() — выходной да/нет = 1/0
isWeekDay() — будний день да/нет = 1/0
timeIs($tm) — проверяет совпадает ли текущее время с передаваемым в формате hh:mm
timeBefore($tm) — сравнивает время $tm (hh:mm) и текущее. Если текущее меньше, то 1 иначе 0
timeAfter($tm) — сравнивает время $tm (hh:mm) и текущее. Если текущее больше, то 1 иначе 0
timeBetween($tm1, $tm2) — проверяет входит ли текущее время в заданный интервал (каждое hh:mm, причем $tm1 может быть больше чем $tm2, например 23:00 05:00)
recognizeTime($text) — функция пытается из фразы извлечь конкретное время/дату. Например $text может быть «завтра в 9:30» или «через 5 минут»
При вызове любого метода (но не сценария!) доступны переменные:
$prevRun — время последнего вызова (в формате timestamp)
$prevRunPassed — сколько секунд прошло с последнего вызова
$this — Указатель на себя. Используется в методах классов. Например:
PHP
$this->setProperty(«status»,1); // устанавливает свойство status в 1, объекту для которого вызван
1 | $this->setProperty(«status»,1);// устанавливает свойство status в 1, объекту для которого вызван |
3.6 Что такое «циклы системы»?
Циклы — это программный код в файлах /scripts/cycles_ *.php . Данный код обеспечивает функционирование отдельных «фоновых» процессов, не связанных с непосредственным ответом на запрос пользователя, а именно: обновление системного времени, периодические операции, выполнение запланированных задач, опрос показаний отдельного оборудования. Корректный запуск системы предполагает одновременный запуск системных циклов. Часть циклов может быть закрыто автоматически после запуска в виду того, что их работа не актуальна в соответствии с имеющимся оборудованием или настройками пользователя.
Порядок установки системы MajorDoMo
Конечно, можно использовать для «умного» дома любой старый компьютер. Но все же рекомендовано взять отдельно под эти цели RasberriPI. Стоит он не дорого, бесшумен, занимает минимум места. Прекрасная основа для MajorDoMo.
Итак, подразумевается, что система уже на RaberriPI стоит и сконфигурирована под использование интернета. Описаний, как ее поставить и настроить, множество в сети. Далее, нужно подключиться к нему при помощи терминала под root и обновить систему:
# apt-get update && apt-get upgrade
Следом необходимо скачать скрипт установки MajorDoMo (интернет должен быть настроен!) и запустить его:
# wget https://raw.githubusercontent.com/immortalserg/installmd/master/installmd# chmod +x installmd# ./installmd -t -c
После запуска он спросит пароли:
Введите пароль root для MariaDB (MySQL)>
Введите пароль пользователя pi (для системы и базы данных MajorDoMo)>
Кроме как после этих вопросов, нигде пароли устанавливать не нужно. Просто нажимается «ENTER».
По окончании установки система сообщит о необходимости перезагрузки:
Собственно, после установки и перезагрузки RasberriPI можно начинать настройки MajorDoMo. Делается это через любой web-браузер с подключением по адресу местонахождения мини-компьютера в сети.
Техническая поддержка
Медлительность технической поддержки — не единственная претензия, которую можно обнаружить в отзывах разных пользователей. Некоторые клиенты жалуются на то, что ответы были грубыми или некомпетентными. Иногда сотрудники просто отписываются, что ошибка возникла из-за проведения технических работ, при этом никакого предупреждения о них заранее не было, а сроки устранения сбоя остаются неизвестными.
Немного смягчает нестабильную работу службы поддержки качественная база знаний, в которой размещена информация обо всех типах хостинга, способах оплаты и даже решении юридических вопросов. В инструкциях вы найдёте пошаговое описание для отдельных действий, скриншоты и готовые скрипты.
Функции и характеристики MajorDoMo
Основными возможностями систем Majordomo являются:
- быстрая и понятная установка даже для начинающих пользователей;
- поддержка основных платформ (Linux/Windows);
- бесплатное персональное использование вне зависимости от масштабов организации;
- существование сообщества, принимающего активное участие в жизни проекта, разбавляющее его разными интересными нововведениями;
- поддержка всевозможных видов оборудования;
- многоязыковой интерфейс (русский/английский);
- наличие маркета — своеобразного онлайн-магазина, где вы можете приобрести дополнения.
«Мажордомо» является системой адаптации международного уровня. Она может предложить своим пользователям множество приятных бонусов. К ним относятся интеграции с посторонними веб-сайтами и сервисами, мультимедийное управление, уведомления о новоизобретённых новшествах «Умного дома». Majordomo поддерживает модель безопасности с разграничением полномочий пользователей на просмотр информации. Это позволяет каждому сделать настройки конфиденциальности по своему предпочтению.
Список возможностей и преимуществ Majordomo можно перечислять очень долго. Однако основное различие «Умного дома» от обычного вы сможете почувствовать лишь тогда, когда сами окунетесь в этот невероятный мир. Вы самостоятельно будете программировать и регулировать каждый шаг в своей жизни, обеспечите её максимальный комфорт.
Регистрация приватного навыка
Навыки умного дома — специальная категория навыков Алисы, предназначенных для голосового управления домашними устройствами. Навыки создаются в платформы Яндекс Диалогов.
Основные шаги по созданию навыка это:
- Настройка связки аккаунтов OAuth 2.0.
- Добавление навыка и выбор его типа.
- Заполнение информационных полей.
- Модерация навыка.
- Публикация навыка.
Чтобы создать новый приватный навык, открываем и авторизуемся под нужной учетной записью.
В личном кабинете разработчика нажимаем шестеренку и переходим в раздел Настройки, где открываем вкладку Связки аккаунтов.
- Название — понятное вам название связки.
- Идентификатор приложения — значение OAuth2 ID из настроек модуля Yandex Home.
- Секрет приложения — значение OAuth2 KEY из настроек модуля Yandex Home.
- URL авторизации — адрес вебхука авторизации (см. предыдущую статью), например,
- URL для получения токена — адрес вебхука получения токена (см. предыдущую статью), например,
- URL для обновления токена — тот же самый, что и пунктом выше, например,
- Идентификатор группы действий — оставляем пустым.
- Идентификатор OAuth приложения — оставляем пустым.
Сохраняем связку и возвращаемся на главную страницу консоли разработчика, на которой создаем новый навык, кликнув по кнопке Создать диалог.
Тип навыка выбираем Умный дом.
- Название — указываем название навыка.
- Endpoint URL — адрес вебхука обработчика навыка (см. предыдущую статью), например, .
- Приватность — обязательно ставим галочку Не показывать в каталоге.
- Подзаголовок — пишем краткое описание навыка.
- Имя разработчика — фамилия, имя.
- E-mail разработчика — пишем аккаунт Яндекс.Почты.
- Сайт для верификации прав использования бренда — оставляем пустым.
- Описание — произвольное описание нашего навыка.
- Заметки для модератора — оставляем пустым.
- Иконка — логотип навыка в формате PNG или JPG.
Связка аккаунтов — в выпадающем списке выбрать ранее созданную связку.
Сохраняем изменения, после чего становится активной кнопка На модерацию. Кликаем на нее и отправляем наш навык на модерацию. На сегодняшний день модерация автоматическая и происходит мгновенно.
После модерации остается завершающий этап — публикация навыка. Нажимаем кнопку Опубликовать и на главной странице консоли разработчика видим, что навык сменил статус и переместился в раздел Опубликованные.
Опубикованный приватный навык появится в списке навыков умного дома в приложении Яндекс (или в его веб-версии ).
На следующем шаге можно приступать к объединению аккаунтов.
Общие функции
DebMes($errorMessage, $logLevel) — записывает сообщение в главный лог файл. Параметр $logLevel не является обязательным, и по умолчанию установлен как «debug».
say($ph,$level,$from_user_id) — говорит фразу (использует глобальные переменные $voicemode» и $commandLine ).
$level — указывает уровень важности фразы (в зависимости от текущих настроек минимального уровня произношения, фраза может быть либо озвучена голосом либо просто записана в историю сообщений).
$from_user_id — от имени кого будет сказана фраза ($from_user_id в данном случае будет равен идентификатору текущего пользователя). sayTo (ФРАЗА, УРОВЕНЬ, НАЗНАЧЕНИЕ) — в качестве НАЗНАЧЕНИЯ можно использовать системное имя терминала и если это терминал на MajorDroid, то ему отправится команда для произношения
В любом случае из этой функции создаётся событие SAYTO (вида: processSubscriptions(‘SAYTO’, array(‘level’ => $level, ‘message’ => $ph, ‘destination’ => $destination));), которое может быть перехвачено сторонними модулями — на заметку тем, кто захочет создать свой модуль для организации работы с различными устройствами доставки сообщений на определённый канал
sayTo (ФРАЗА, УРОВЕНЬ, НАЗНАЧЕНИЕ) — в качестве НАЗНАЧЕНИЯ можно использовать системное имя терминала и если это терминал на MajorDroid, то ему отправится команда для произношения. В любом случае из этой функции создаётся событие SAYTO (вида: processSubscriptions(‘SAYTO’, array(‘level’ => $level, ‘message’ => $ph, ‘destination’ => $destination));), которое может быть перехвачено сторонними модулями — на заметку тем, кто захочет создать свой модуль для организации работы с различными устройствами доставки сообщений на определённый канал.
sayReply(ФРАЗА, УРОВЕНЬ, ОТВЕТ_НА_ЧТО) — последние два параметра не обязательны. Эта функция ведёт себя следующим образом:
- Если указан параметр ОТВЕТ_НА_ЧТО, то система попытается найти терминал, с которого был запрос, содержащий данную фразу
- Если не указан параметр ОТВЕТ_НА_ЧТО, то система выберет терминал, с которого был любой запрос в течении последних 5 секунд
- Если терминал найден, то ответ будет направлен на него (с помощью той же функции sayTo)
- Если терминал не найден, то ответ будет озвучен в обычном порядке (аналогично просто использованию функции say).
processCommand($command) — отправляет текстовую команду на исполнение (например, «скажи сколько время»). Сами команды настраиваются методе ThisComputer->commandReceived.
getGlobal($varname); — получения значения глобального свойства
setGlobal($varname,$value); — установка глобального свойства
processLine($line); — запуск скрипта синхронизации
getRandomLine($filename); — взятие случайной строки из текстового файла. $filename может быть сокращённым, например file1 и тогда будет браться файл ./texts/file1.txt
playSound($filename); — проигрывание файла (mp3,wav,etc.). $filename может быть сокращённым, например file1 и тогда будет браться файл ./sounds/file1.mp3
playMedia($path); — играть музыку из каталога $path
runScript($id,$data); — выполняет скрипт с заданным id. В качестве id может использоваться имя
runScriptSafe($id,$data); — выполняет скрипт безопасно в фоне
isOnLine($host) — проверяет доступность хоста из Устройства OnLine (1/0).
Публикация обработчиков запросов
Механизм взаимодействия платформы умного дома Яндекс со сторонними системами (провайдерами) реализуется посредством вебхуков (webhook). Облако Яндекс для запроса состояния устройств и управления ими посылает POST- и GET- запросы на конечные точки (endpoint) вебхуков и получает ответы от них. Таким образом, для корректной работы этого механизма необходимо обеспечить постоянную доступность вебхуков из сети Интернет со стороны облака Яндекс.
Согласно API платформы умного дома Яндекс требуется реализовать три типа конечных точек:
- URL авторизации (authorization endpoint) — страница, на которой авторизуется пользователь, чтобы разрешить навыку доступ к своему аккаунту.
- URL для получения и обновления токена (token endpoint) — адрес, на который отправляются запросы с авторизационным кодом, чтобы получить OAuth-токен доступа, и запросы для обновления ранее полученного токена.
- URL обработчика навыка (smarthome endpoint) — основной вебхук, который отвечает непосредственно за работу с устройствами.
В модуле Yandex Home все три типа конечных точек реализованы в виде отдельных файлов: authorize.php, token.php и smarthome.php, размещаемых в директории /modules/yandexhome.
# | Назначение вебхука | URL вебхука |
---|---|---|
1 | URL авторизации | /modules/yandexhome/authorize.php |
2 | URL для получения и обновления токена | /modules/yandexhome/token.php |
3 | URL обработчика навыка | /modules/yandexhome/smarthome.php |
Чтобы опубликовать эти три вебхука в сеть Интернет и обеспечить тем самым их доступность со стороны облака Яндекс, необходимо выполнить ряд условий.
Условие №1. Публичный (глобальный, белый) IP-адрес, выдаваемый интернет-провадером.
Белый IP-адрес при этом может быть как статическим, так и динамическим. В случаях, когда невозможно получить белый адрес у интернет-провайдера, возможны варианты использования сторонних сервисов. Например, некоторые производители роутеров предоставляют их владельцам сервис по доступу к ресурсам домашней локальной сети (KeenDNS от Keenetic и др). Либо использовать VPN-сервисы на подобие vpnki.ru или собственный VPN-сервер, развернутый на VPS.
Условие №2. Доменное имя (DNS), привязанное к публичному IP-адресу.
Это требование в большинстве случаев закрывается классическими сервисами динамических DNS, которых представлено в сети в большом ассортименте, как платных, так и бесплатных. Большинство современных роутеров уже имеют встроенную поддержку сервисов Dynamic DNS. При использовании сервисов удаленного доступа типа KeenDNS или VPNKI это условие выполняется автоматически — доменное имя выбирается и присвается в ходе регистрации и подключения услуги.
Условие №3. Валидный SSL-сертификат на DNS-имя.
По требованиям платформы умного дома Яндекс весь обмен трафиком между их облаком и MajorDoMo должен идти в зашифрованном виде по протоколу HTTPS, что обеспечивается либо установкой SSL-сертификата на веб-сервер с MajorDoMo, либо услугами сервисов удаленного доступа (см. выше). Бесплатный SSL-сертификат можно получить у удостоверяющего центра сроком на 3 месяца, затем его нужно будет регулярно обновлять. Сертификат устанавливается либо на тот же виртуальный сервер Apache, который обслуживает MajorDoMo, либо на отдельный виртуальный сервер (Apache или Nginx), выступающий в роли обратного прокси (reverse proxy) для MajorDoMo.
Корректность установки сертификата и доступность вашего сервера из сети Интернет по HTTPS можно проверить с помощью специализированных сервисов, например:
Функционал Public Calls в Connect-е
В разделе CONNECT панели управления есть закладка Public Calls
Самое важное в настройках — связанный объект и метод, который будет вызван. Ссылка будет с уникальным ключём, но можно дополнительно её защитить заданным паролем
Ссылку можно открывать просто в браузере или даже из скрипта.
К ссылке можно добавлять свои параметры и они будут доступны в методе в массиве $params Важно: очень аккуратно используйте эту опцию и старайтесь не «раскидываться» ссылками, которые могут навредить, попадая в
Идеи использования:
- Обмен данными между несколькими системами MajorDoMo (одна система через getURL может инициировать событие в другой, причём у первой даже может не быть аккаунта в Connect-е)
- Интеграция со сторонними системами и интернет-сервисами (сторонняя система «дёргает» ссылку и MajorDoMo об этом узнаёт)
- Выдача прав на использование некоторых функций системы третьим лицам (передайте ссылку кому-нибудь, попросите добавить в закладки и объясните, что будет происходить при переходе — реализация сценария полностью на ваше усмотрение)
getURLBackground(‘URL’); — Запрос URL в фоне (если не важен результат
4.5 Что значит «связанный» объект/свойство/метод?
В различных частях системы существует функционал «привязки» того или иного элемента с объектом, его свойством или его методом. Объекты являются основой хранения данных системы, а так же описанием функций работы с этими данными. Именно поэтому большинство модулей так или иначе ссылаются на объекты.
Например, элемент меню типа Выключатель используется связанное свойство для хранения данных о своём последнем состоянии, а так же метод объекта, как действие, которое надо выполнить после изменения состояния. С другой стороны, модули работы с оборудованием так же используют связанные свойства и объекты для хранения данных, полученных от соответствующих электронных устройств.
Например, привязав свойство какого-то объекта к свойству выключателя в модуле ZWave можно обращаться к этому свойству для получения последнего состояния физического выключателя, а так же использовать это свойства для установки значения (включения нагрузки), таким образом создаётся прозрачная двухсторонняя связь между физическим устройством и объектом системы MajorDoMo. Одно свойство объекта может быть привязано к нескольким элементам, так, если рассматривать предыдущие два примера, то можно объединить их в один, когда и для привязки выключателя в меню и для привязки выключателя ZWave мы используем одно свойство. В таком случае мы получаем управляемый через меню физический выключатель.
Запланированные задачи и события
AddScheduledJob(‘title’,’commands’,$datetime, $expire=60); — $expire в секундах
ClearScheduledJob(‘title’); — может использоваться маска типа «title%»
SetTimeOut(‘title’,’commands’, $timeout); — $timeout в секундах (аналог AddScheduledJob(‘title’,’commands’,time()+$timeout));
ClearTimeOut(‘title’); — аналог ClearScheduledJob(‘title’);
timeOutExists(‘title’); — возвращает идентификатор запланированной задачи (или 0, в случае отсутствия)
registerEvent($eventName, $details=»,$expire_in=365); — регистрация события $eventName
registeredEventTime($eventName); — возвращает время последней регистрации события $eventName (-1 если еще не было такого события)
Дополнительные услуги
Majordomo предлагает целый ряд дополнительных услуг, полезных бизнесу.
Почта Mail.ru на домене
После регистрации домена вы можете подключить к нему почту. Majordomo предлагает использовать свой почтовый сервис или решение для бизнеса от Mail.ru.
Бесплатный сервис от Mail.ru позволяет создать до 5000 адресов на одном домене. Есть и другие преимущества:
- объём почтовых ящиков не ограничен;
- используется привычный интерфейс Mail.ru;
- каждый пользователь получает 25 ГБ в облаке Mail.ru;
- поддерживается мультиавторизация для удобного переключения между почтовыми ящиками.
SSL-сертификаты
Для шифрования данных при передачи трафика между сервером и клиентом используется SSL-сертификат. Majordomo предлагает приобрести сертификаты Comodo — одного из ведущих центров. Все доступные варианты совместимы с современными браузерами. Стоимость сертификатов — от 990 до 25 000 рублей в год.
Защита от спама и вирусов
В эту услугу входит выполнение сразу трёх задач.
- Антивирусная проверка входящих сообщений.
- Защита от спама. Вы можете установить правила (пропускать или не пропускать спам), а также настроить уровень придирчивости к письмам (слабый, средний, сильный). Также доступны белый и чёрный список адресов.
- Настройка фильтрации писем на сервере. Это позволит получить сообщения в одни и те же папки на разных устройствах.
Защита от спама и вирусов — платная услуга. Стоимость — 49 рублей в месяц.
SEO-аудит сайта
В услугу входит проверка сайта на соответствие требованиям поисковых систем, оценка удобства использования, оптимизация главной страницы, поиск ошибок и подготовка рекомендаций по продвижению. Стоимость SEO-аудита — 5490 рублей.
Рекламные возможности
Majordomo предлагает услуги специалистов по настройке контекстной рекламы и рекламных кампаний в соцсетях.
- Базовая настройка контекстной рекламы — 5990 рублей. Работа в Яндекс.Директ или Google Adwords. Доступно до 30 ключевых запросов и до 20 объявлений.
- Премиальная настройка контекстной рекламы — 12 990 рублей. Работа в Яндекс.Директ или Google Adwords. Доступно до 200 ключевых запросов и до 50 объявлений, плюс 1 месяц ведения и контроля рекламной кампании.
- Настройка таргетированной рекламы во «ВКонтакте» — 12 990 рублей. Услуга включает анализ предложения и аудитории, разработку стратегии продвижения, создание до 50 объявлений и баннеров, запуск до 5 рекламных кампаний, отслеживание эффективности и внесение правок в течение 1 месяца.
Аренда программы 1С в облаке
Majordomo предлагает облако с установленной программой 1С, с которой можно работать с любого устройства, имеющего доступ в интернет. В пакет услуг входит:
- Бесплатный перенос 1С на облако.
- Бесплатная круглосуточная поддержка.
- Финансовые гарантии работоспособности.
- Бесплатные консультации.
Есть два тарифа: «Лайт» и «Оптимальный». Между собой они различаются возможностями для изменения и доработки, доступными клиентами, объёмом дискового пространства и конфигурациями 1С. На тарифе «Лайт» за каждого пользователя нужно платить 950 рублей в месяц (760 рублей в месяц при оплате на год). На «Оптимальном» каждый пользователь обойдётся в 1299 рублей в месяц (1040 рублей в месяц при оплате на год).
Функции и возможности
Сами по себе модули содержат обширные настройки: в соответствующем разделе интерфейса можно, например, указать цвет пользователя, разрешенные ему компьютеры для входа, и так далее.
Электронный «мажордом» способен управлять многочисленными умными устройствами:
- розетками;
- лампами;
- бытовой техникой;
- домашним мультимедиа;
- кондиционерами;
- отопительными системами;
- охранными комплексами;
- инженерным и сантехническим оборудованием, и так далее.
Умеет он взаимодействовать и с интернет-сервисами (например, для поиска новостей). Кроме того, через глобальную сеть обеспечивается удаленный доступ и своевременное обновление.
Для продвинутых пользователей существует возможность дописывать модули и сценарии на языке программирования PHP. В системе также присутствует встроенный визуальный конструктор Blockly, обеспечивающий простое создание алгоритмов:
Комплекс наверняка станет интересен начинающим и продвинутым программистам. Разработка ПО под MajorDoMo не отличается высоким порогом входа, необходимо лишь обладать пониманием языка PHP и некоторых смежных дисциплин (таких, как JS, CSS). С них и следует начинать осваивающим разработку под эту платформу джуниор-кодерам.
Что это такое
Majordomo — свободно распространяемая кроссплатформенная программа, предоставляющая все необходимы инструменты для организации смарт-жилища:
- серверную часть;
- плагины для различного оборудования;
- поддержку сценариев;
- работу с разнообразными существующими протоколами обмена данными.
«Мажордомо» умеет взаимодействовать с умными выключателями, розетками, датчиками и реле. Все элементы настройки и управления сведены в едином простом веб-интерфейсе, устанавливающемся на центральный хаб системы.
Таким образом, MajorDoMo — сервер «умного дома» обеспечивающий согласованную работу прочих его компонентов. Он может быть установлен как на обычный ПК, так и ноутбук или поддерживаемый микрокомпьютер (например, Raspberry Pi, Arduino и прочие). Программа получает данные от сопряженных с ней датчиков и отдает заданные владельцем команды, исполняемые конечными устройствами и контроллерами.
Для понимания работы программы необходимо выяснить ее логическое устройство.
Итог
Советовать Majordomo можно — хостинг неплохой, проверенный временем. И это не странно, учитывая, что речь идёт о создателе очень популярного конструктора сайтов Nethouse. Хотя и проблем хватает, но это, можно сказать, обычный уровень подобного вида услуг, где без форс-мажорных ситуаций ну никак.
По соотношению цены и качества более или менее адекватные возможности предлагает только использование VPS, который вы можете самостоятельно настроить. На виртуальном хостинге придётся мириться с медленной работой веб-интерфейса, а на выделенных физических серверах — с устаревшими компонентами и невысокой производительностью по сравнению с конкурентами.