Софт majordomo для организации умного дома

Содержание

Порядок установки системы 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-браузер с подключением по адресу местонахождения мини-компьютера в сети.

Управление циклами (сервисами)

Интерфейс доступен через раздел XRay->Services
Для управления циклом использются глобальные переменные.
Например, есть цикл ./scripts/cycle_ping.php. Чтобы его остановить, достаточно выполнить команду в коде:setGlobal(‘cycle_pingControl’,’stop’); — ОстановкаsetGlobal(‘cycle_pingControl’,’start’); — запускsetGlobal(‘cycle_pingControl’,’restart’); — рестартsetGlobal(‘cycle_pingDisabled’,’1′); — Для запрета автозапуска (по-умолчанию он всегда разрешён)setGlobal(‘cycle_pingAutoRestart’,’1′); — Для включения авто-восстановления (по-умолчанию он всегда выключен)

Функционал Public Calls в Connect-е

В разделе CONNECT панели управления есть закладка Public Calls

Самое важное в настройках — связанный объект и метод, который будет вызван. Ссылка будет с уникальным ключём, но можно дополнительно её защитить заданным паролем

Ссылку можно открывать просто в браузере или даже из скрипта.

К ссылке можно добавлять свои параметры и они будут доступны в методе в массиве $params Важно: очень аккуратно используйте эту опцию и старайтесь не «раскидываться» ссылками, которые могут навредить, попадая в

Идеи использования:

  1. Обмен данными между несколькими системами MajorDoMo (одна система через getURL может инициировать событие в другой, причём у первой даже может не быть аккаунта в Connect-е)
  2. Интеграция со сторонними системами и интернет-сервисами (сторонняя система «дёргает» ссылку и MajorDoMo об этом узнаёт)
  3. Выдача прав на использование некоторых функций системы третьим лицам (передайте ссылку кому-нибудь, попросите добавить в закладки и объясните, что будет происходить при переходе — реализация сценария полностью на ваше усмотрение)

getURLBackground(‘URL’); — Запрос URL в фоне (если не важен результат

Работа с шаблонами

PHP

$new_pattern=array();
$new_pattern=1; // флаг того, что шаблон будет одноразовый
$new_pattern=1; // флаг того, что шаблон не будет реагировать на системные уведомления, только пользовательские
$new_pattern=’say(«‘.$matches.'»,0,’.$from_user_id.’);’; // код реакции нашего шаблона
addPattern($matches,$new_pattern,1); // добавляем описанный шаблон
say(«Добавлена реакция на слово \»».$matches.»\»»,2); // подтверждаем то, что реакция добавлена

1
2
3
4
5
6

$new_pattern=array();

$new_pattern’ONETIME’=1;// флаг того, что шаблон будет одноразовый

$new_pattern’SKIPSYSTEM’=1;// флаг того, что шаблон не будет реагировать на системные уведомления, только пользовательские

$new_pattern’SCRIPT’=’say(«‘.$matches2.'»,0,’.$from_user_id.’);’;// код реакции нашего шаблона

addPattern($matches1,$new_pattern,1);// добавляем описанный шаблон

say(«Добавлена реакция на слово \»».$matches1.»\»»,2);// подтверждаем то, что реакция добавлена

context_activate($id); — Активировать вручную нужный контекст (ступень шаблона) (вместо $id нужно вставить цифровой код шаблона — он виден в ссылке при редактировании шаблона/контекста). context_clear(); — позволяет сбросить текущий контекст у текущего пользователя.clearTimeOut(‘user_’.context_getuser().’_contexttimeout’); — удаление таймера события при не ответеcontext_getuser(), по всей видимости возвращает id текущего пользователя.
Если нам для чего то потребуется имя, то зная id достать его из базы данных не трудно.
Полный код команды Забудь:

PHP

context_clear();
clearTimeOut(‘user_’.context_getuser().’_contexttimeout’);
say(‘Контекст забыт.’);

1
2
3

context_clear();

clearTimeOut(‘user_’.context_getuser().’_contexttimeout’);

say(‘Контекст забыт.’);

Дашборд

Дашборд по факту является одним из типов домашних страниц (новые дашборды создавать надо именно там), но заслуживает отдельного внимания, как самостоятельный интерфейс. Сделан он на базе freeboard.io. Его уникальность в том, что с ним удобно работать как на больших устройствах, так и с мобильных версий браузеров. Интерфейс плиточный, и подстраивается под размер экрана регулируя количество столбцов по ширине экрана. Степень кастомизации, как и у меню — довольно таки низкая. Допустимо использовать сторонние виджеты данного проекта, но чтобы их интегрировать — потребуются некоторые знания.

Функции и возможности

Сами по себе модули содержат обширные настройки: в соответствующем разделе интерфейса можно, например, указать цвет пользователя, разрешенные ему компьютеры для входа, и так далее.

Электронный «мажордом» способен управлять многочисленными умными устройствами:

  • розетками;
  • лампами;
  • бытовой техникой;
  • домашним мультимедиа;
  • кондиционерами;
  • отопительными системами;
  • охранными комплексами;
  • инженерным и сантехническим оборудованием, и так далее.

Умеет он взаимодействовать и с интернет-сервисами (например, для поиска новостей). Кроме того, через глобальную сеть обеспечивается удаленный доступ и своевременное обновление.

Для продвинутых пользователей существует возможность дописывать модули и сценарии на языке программирования PHP. В системе также присутствует встроенный визуальный конструктор Blockly, обеспечивающий простое создание алгоритмов:

Комплекс наверняка станет интересен начинающим и продвинутым программистам. Разработка ПО под MajorDoMo не отличается высоким порогом входа, необходимо лишь обладать пониманием языка PHP и некоторых смежных дисциплин (таких, как JS, CSS). С них и следует начинать осваивающим разработку под эту платформу джуниор-кодерам.

1.5  Есть ли коммерческая версия комплекса?

Как таковой, платной версии программного комплекса не существует — система распостраняется абсолютно свободно под лицензией MIT, что подразумевает использование её без каких либо ограничений, кроме обязательного указания авторства, в любых проектах. Необходимо уточнить, что данный факт не исключает возможности оказания платных услуг с использованием платформы как инструмента в реализации проекта Умного Дома на коммерческой основе. При этом вполне возможна покупка/продажа на договорной основе дополнительного оборудования, а так же услуг по настройке системы для конкретного пользователя (программирование сценариев, разработка дизайна, отладка и т.п.). Подробнее о возможностях коммерческого сотрудничества читайте в соответствующем разделе сайта.

2.1  Всё оборудование будет завязано на централизованный сервер? Это надёжно?

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

Установка

Аппаратная часть

Прежде, чем начать развертывание, следует подобрать оборудование для системы. Под «Мажордомо» допустимо использовать практически любой не очень старый компьютер или ноутбук. Но, как правило, при реализации смарт-дома используют одноплатные миникомпьютеры: они бесшумны, надежны, дешевы и достаточно производительны

Для этой задачи хорошо подходят платы Raspberry Pi 2/3, на примере которых мы далее рассмотрим основные моменты установки и конфигурирования.

Развертывание программы

Версии ПО существуют и под Windows, и для Linux. Неискушенному пользователю стоит выбрать Windows-вариант, поскольку он проще в настройке и конфигурации. В рамках данной статьи мы приведем базовые шаги в случае с Linux и RPI.

Win-версия устанавливается как обычное приложение. Для RPI разработчики создали и поддерживают специально собранный образ, доступный на странице https://mjdm.ru/skachat-majordomo/:

Существует возможность развертывания и с нуля на «чистый» Raspbian (или другую версию Linux). Для этого необходимо присутствие в ОС:

  • сервера базы данных MySQL (MariaDB);
  • веб-сервера, например, Apache;
  • интерпретатора php с некоторыми модулями и оболочки PhpMyAdmin.

Установка MajorDoMo и его тонкая настройка подробно описаны в официальной документации к Windows- и Linux-вариантам. Энтузиасты также создали скрипт автоматизации, который развертывает весь программный комплекс самостоятельно. Получить его и запустить инсталляцию можно следующими командами:

Результаты появятся в командной строке. Красный цвет выводимого текста отмечает критические предупреждения.

Скрипт запросит пароль пользователя root создаваемой БД MySQL и учетной записи Pi. Данные аккаунта Pi вводить необходимо в любом случае, даже если такого пользователя в системе нет.

Иных действий не понадобится. После завершения работы скрипта будет выдано сообщение «Готово».

На этом этапе следует перезагрузить компьютер, после чего интерфейс умного дома MajorDoMo станет доступен для настройки через браузер по IP-адресу или имени узла md.lan. Имеется также доступ по протоколу SSH и проброс vlc over http.

Пример главной страницы:

Дополнительно потребуется установить PhpMyAdmin:

А также Java и сервер Blynk (нужен для разработки и функционирования приложений на iOS/Android).

Для добавления расширенной конфигурации выполняется команда:

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

После этого можно приступать к тонкой настройке и сопряжению с периферией.

Запланированные задачи и события

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

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

Если возможностей стандартного интерфейса кому-либо не хватит, то можно, в рамках комплекса, дописывать свои части сценариями на языке PHP. Причем обращение к устройствам будет производиться в рамках его синтаксиса и их объектных имен.

Если же кто-то не умеет программировать, то можно воспользоваться функцией создания своих сценариев при помощи внутреннего конструктора Blockly. Это инструментарий так называемого «визуального программирования», когда вместо создания кодовых последовательностей применяются графические их представления, а для построения алгоритма достаточно составить их в необходимом порядке.

Пример кода в Blockly:

Хотелось бы вспомнить и о такой возможности MajorDoMo, как интеграция с компьютерным помощником «Алиса». Благодаря ей, в диалоговом режиме можно задавать расписания включения, управлять оборудованием при помощи голоса или производить еще миллион действий, которые в своей основе будут выполняться в качестве дополнительных, возможностями умного помощника. В общем виде голосовая команда «Алиса. Завтра в 7 утра мигнуть 5 раз лампой у кровати», при правильно настроенной системе, приведет к созданию в расписании аналога представленного выше кода.

Это еще не все, что может MajorDoMo. В рамках системы представлена возможность осуществлять парсинг с других web-страниц. То есть брать данные из сети и использовать их в сценариях оболочки. Это пригодиться может, к примеру, если на синоптическом сайте в прогнозе потепление. Можно настроить MajorDoMo, чтобы в зависимости от этих данных он давал команду на общее или частичное снижение температуры в здании, для избегания общей духоты.

Что такое «Умный дом»

Система «Умный дом» Majordomo — проект по адаптации и автоматизации жилого помещения, который пока что доступен только небольшому кругу людей из-за довольно высокой стоимости.

Понятие «Умный дом» («Мажордомо») или smart home можно — это простой набор контроллеров и датчиков. Такие приспособления могут срабатывать на движения (например, автоматическое открытие дверей в торговых центрах) либо же на тепловую энергию. Обычно такие наборы контролируют работу бытовой и кухонной техники внутри дома, системы коммуникации или безопасности. Но и это ещё не всё. Системы уровнем выше способны сами включать и выключать отопление в определённое время года или суток, включать нагревание воды или готовить еду без вмешательства человека.

Cистема домашней автоматизации MajorDoMo

Работа таких датчиков и контроллеров мало чем отличается от работы обычных систем безопасности, таких как «сигнализация», которые так же реагирует на движение. Оборудование же «Умного дома» может считывать информацию с движения, резких звуков, температуры. После этого система обрабатывает его при помощи специальной программы и передаёт команду непосредственно на техническое устройство, отвечающее за выполнение операции.

Majordomo — это бесплатная общедоступная программа, которая поможет быстро обучиться комплексному управлению «Умным домом». Благодаря поддержке двух основных платформ (Windows или Linux) такая система может быть установлена фактически на любой персональный компьютер, поскольку потребляет относительно мало ресурсов. Даже имея малопроизводительный ПК, вы сможете позволить себе пользоваться этой системой.

Система управления “Умным домом” MajorDoMo

Сделать из своего дома «умный» объект довольно просто — вам не нужно обладать какими-либо знаниями языков программирования или прилагать к этому особые усилия. С системой «Мажордомо» вы можете программировать просто с помощью мышки, перетаскивая готовые блоки команд. Либо найти на официальном сайте Majordomo в разделе объявлений исполнителя, который будет готов помочь вам с вашим проектом на базе нашей адаптационной платформы Majordomo.

1.6  Оправдана ли покупка всего оборудования для использования в системе с экономической точки зрения?

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

3.6  Что такое «циклы системы»?

Циклы — это программный код в файлах /scripts/cycles_ *.php . Данный код обеспечивает функционирование отдельных «фоновых» процессов, не связанных с непосредственным ответом на запрос пользователя, а именно: обновление системного времени, периодические операции, выполнение запланированных задач, опрос показаний отдельного оборудования. Корректный запуск системы предполагает одновременный запуск системных циклов. Часть циклов может быть закрыто автоматически после запуска в виду того, что их работа не актуальна в соответствии с имеющимся оборудованием или настройками пользователя.

Установка и настройка 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:

Готово.

4.5  Что значит «связанный» объект/свойство/метод?

В различных частях системы существует функциона «привязки» того или иного элемента с объектом, его свойством или его методом. Объекты являются основой хранения данных системы, а так же описанием функций работы с этими данными. Именно поэтому большинство модулей так или иначе ссылаются на объекты.

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

Например, привязав свойство какого-то объекта к свойству выключателя в модуле ZWave можно обращаться к этому свойству для получения последнего состояния физического выключателя, а так же использовать это свойства для установки значения (включения нагрузки), таким образом создаётся прозрачная двухсторонняя связь между физическим устройством и объектом системы MajorDoMo. Одно свойство объекта может быть привязано к нескольким элементам, так, если рассматривать предыдущие два примера, то можно объединить их в один, когда и для привязки выключателя в меню и для привязки выключателя ZWave мы используем одно свойство. В таком случае мы получаем управляемый через меню физический выключтатель.

1.10  Я строю дом и в будущем планирую сделать его «умным», что мне необходимо предусмотреть заранее?

Во-первых, определитесь с тем, где у вас будет основной электро-щит и планируйте проводку так, чтобы провода от настенных выключателей и точек освещения сводились каждый в отдельности в этот щиток. В начале вы сможете всё скоммутировать там по тривиальной схеме (грубо говоря, выключатель пускает ток на лампочку), но в будущем такая коммутация позволит заменить простую схему автоматикой. Для розеток этого не нужно — управлять устройствами, включенными в розетку, проще через дополнительное оборудование, те же wi-fi розетки.

Далее, планируйте провести витую пару (двойные розетки) к местам установки медиа-систем (телевизоры, аудио-центры, спутниковые ресиверы и т.п.). Желательно в любом случае иметь по такой розетке в каждой комнате — их можно будет использовать не только для компьютерной сети, но и для телефонии. Эти кабели так же нужно выводить в общий щиток.

Так же полезно закладывать провода для системы мульти-рум. Если вы планируете встраивать в стену панели управления (те же планшеты), то так же подведите туда питание, чтобы не болтались провода.

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

Общие функции

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(ФРАЗА, УРОВЕНЬ, ОТВЕТ_НА_ЧТО) — последние два параметра не обязательны. Эта функция ведёт себя следующим образом:

  1. Если указан параметр ОТВЕТ_НА_ЧТО, то система попытается найти терминал, с которого был запрос, содержащий данную фразу
  2. Если не указан параметр ОТВЕТ_НА_ЧТО, то система выберет терминал, с которого был любой запрос в течении последних 5 секунд
  3. Если терминал найден, то ответ будет направлен на него (с помощью той же функции sayTo)
  4. Если терминал не найден, то ответ будет озвучен в обычном порядке (аналогично просто использованию функции 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).

Компоненты системы MajorDoMo

Основное понятие, вводимое цифровым домом «MajorDoMo» – объект, множество которых в свою очередь делится на различные классы. И каждый из них имеет свои свойства и методы взаимодействия. К примеру, класс «лампочки», в который могут относиться объекты «люстра в зале», «подсветка зеркала», «свет на кухне». У каждого есть свойство «статус» со значением «включено» и «выключено», а также метод «зажечь» и «погасить».

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

Объекты

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

В качестве аппаратной составляющей выступает как оборудование самостоятельной сборки, так и выпускаемое некоторыми производителями уже в комплекте, к примеру фирмой Xiaomi. «Умный» дом MojorDomo поддерживает массу протоколов обмена – MQTT, Z-Wave, Broadlink (без возврата состояния) и множество других.

Классы

Как уже говорилось, класс объединяет объекты одного типа. К примеру, класс «выключатели» с состояниями (включено/выключено) и двумя методами (включить/погасить). Или класс «датчики движения» со свойством, у которого значения изменяются в пределах «присутствует движение/нет движения».

Есть и возможность дополнительного разветвления в одной общности – введение подкласса. Самым понятным примером станут выключатели. Бывают контроллеры света, которые не только умеют включать и выключать напряжение, но и плавно его изменять. То есть в парадигме понимания системы умного дома мажордомо у класса «выключатели» конкретного типа есть еще и дополнительное свойство «яркость». В общем виде можно расписать эту взаимосвязь следующим образом:

Класс «выключатели»

Свойства: Статус = включен|выключен

Методы: Включить|Выключить

«Свет в кухне»

«Свет в прихожей»

«Свет в ванной»

Подкласс «ВыключателиСДиммером»

Наследуемые свойства: Статус = включен|выключен

Наследуемые методы: Включить|Выключить

собственное устанавливаемое свойство: Яркость = значение

«Свет в спальне»

«Свет в зале»

Свойства

Для большинства устройств в пределах «умного дома» характерно не только следование указаниям контролирующей части, но и возврата своего состояния. Это и есть свойство объекта.

Кроме того, параметрам можно устанавливать значения, которые будут возвращаться в устройство. К примеру, у класса «кондиционеры» можно устанавливать значение свойства «температура», которое будет обрабатываться самим кондиционером, в зависимости от которого он и будет поддерживать режим работы.

Методы

В рамках системы, «методы» — это те управляющие действия, которые могут быть произведены с каким-либо входящим в ее состав устройством. К примеру, у класса «выключатели» это «включить»| «выключить», у «двери» – «открыть»| «закрыть» и тому подобные.

1.1  Что такое Умный Дом?

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

  • Безопасность — повышение уровня безопасности за счёт постоянного контроля параметров работы технологических систем (отопление, водоснабжение, электричество и т.п.), а так же интеграция охранных компонентов (сигнализация, видео-наблюдение, GPS-трэкинг)
  • Экономия — поддержка оптимальных параметров энерго-потребления (электричество/тепло) и автоматический перевод систем в экономичный режим
  • Комфорт — централизованное управление всеми системами, автоматические сценарии последовательных действий, работа с мульти-медиа.

3.8  Какие средства диагностики есть у системы?

Для отладки и диагностики в систему встроено сразу несколько функциональных возможностей. Во-первых, работа основных циклов протоколируется в лог-файлы и складывается в папку /debmes/ , там же хранится общий лог системы с отдельным файлом за каждый день. Кроме того, в панели управления имеется модуль XRay, основная задача которого показать состояние системы на текущий момент во всех подробностях (значения свойств, история запуска сценариев, таймеры и т.п.). Дополнительно в панели управления есть модуль «Ошибки системы», в который сохраняется большинство случаев некорректного поведения системы (ошибки кода, базы данных и т.п.).

Вывод данных (информация)

Вывод информации в меню в большинстве случаев осуществляется через стандартную конструкцию вида

%Объект.Свойство%

1 %Объект.Свойство%

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

Вышеприведённая конструкция, как правило применяется в html-блоках, надписях и тексте ссылок…но ничего не мешает её использовать, скажем, в тексте выключателя. Она универсальна. Может располагаться внутри html-тегов, и даже в качестве свойств (классов, стилей) этих тегов (например таких, как цвет текста).

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий