Софт majordomo для организации умного дома
Содержание:
- Состав и управление системой MajorDoMo
- Функциональность
- 4.5 Что значит «связанный» объект/свойство/метод?
- Функционал Public Calls в Connect-е
- Компоненты системы MajorDoMo
- Работа с объектами
- Microsoft Outlook
- Дополнительные услуги
- Настройка веб-сервера
- Добавление устройства в систему MajorDoMo
- Функции и возможности
- Безопасность
- Что такое MajorDoMo?
- Обозначения
- API
- Общие функции
- Управление циклами (сервисами)
- Итог
Состав и управление системой MajorDoMo
В сущности, система представлена специализированной web оболочкой, которая работает в пространстве домашнего web-сервера. Причем последний может функционировать под любыми операционными системами, Windows или Linux. Да и сама аппаратная составляющая центрального компьютера значения не имеет. Это вполне может быть не только IBM совместимый компьютер, но и RasberriPi или еще что-либо более экзотическое.
Клиентские устройства могут быть представлены практически всем производимым спектром оборудования, от устройств MQTT и до радиоуправления Broadlink RF (стандарт 433/315мГц). Взаимодействие с сетями Z-Wave, KNX, и оборудованием Sonoff, Livolo или Xiaomi – происходит через дополнительные модули, которые тем не менее объединяют эти устройства в единое пространство имен, классов, объектов и методов.
Функциональность
Majordomo — типичный хостер, покрывающий основные потребности вебмастеров. На нём есть несколько тарифов Shared-хостинга, VPS, разные конфигурации серверов, а также возможность зарегистрировать домен — или получить его в подарок при оплате продолжительного периода использования.
Ещё одно интересное предложение — хостинг приложений. На нём доступно использование технологий Python, PHP, MySQL, Redis, Memcached. Основа — виртуальный хостинг, который не нужно администрировать. Удобный конфигуратор позволяет оплачивать только те возможности, которыми вы реально будете пользоваться.
4.5 Что значит «связанный» объект/свойство/метод?
В различных частях системы существует функциона «привязки» того или иного элемента с объектом, его свойством или его методом. Объекты являются основой хранения данных системы, а так же описанием функций работы с этими данными. Именно поэтому большинство модулей так или иначе ссылаются на объекты.
Например, элемент меню типа Выключатель используется связанное свойство для хранения данных о своём последнем состоянии, а так же метод объекта, как действие, которое надо выполнить после изменения состояния. С другой стороны, модули работы с оборудованием так же используют связанные свойства и объекты для хранения данных, полученных от соответствующих электронных устройств.
Например, привязав свойство какого-то объекта к свойству выключателя в модуле ZWave можно обращаться к этому свойству для получения последнего состояния физического выключателя, а так же использовать это свойства для установки значения (включения нагрузки), таким образом создаётся прозрачная двухсторонняя связь между физическим устройством и объектом системы MajorDoMo. Одно свойство объекта может быть привязано к нескольким элементам, так, если рассматривать предыдущие два примера, то можно объединить их в один, когда и для привязки выключателя в меню и для привязки выключателя ZWave мы используем одно свойство. В таком случае мы получаем управляемый через меню физический выключтатель.
Функционал Public Calls в Connect-е
В разделе CONNECT панели управления есть закладка Public Calls
Самое важное в настройках — связанный объект и метод, который будет вызван. Ссылка будет с уникальным ключём, но можно дополнительно её защитить заданным паролем
Ссылку можно открывать просто в браузере или даже из скрипта.
К ссылке можно добавлять свои параметры и они будут доступны в методе в массиве $params Важно: очень аккуратно используйте эту опцию и старайтесь не «раскидываться» ссылками, которые могут навредить, попадая в
Идеи использования:
- Обмен данными между несколькими системами MajorDoMo (одна система через getURL может инициировать событие в другой, причём у первой даже может не быть аккаунта в Connect-е)
- Интеграция со сторонними системами и интернет-сервисами (сторонняя система «дёргает» ссылку и MajorDoMo об этом узнаёт)
- Выдача прав на использование некоторых функций системы третьим лицам (передайте ссылку кому-нибудь, попросите добавить в закладки и объясните, что будет происходить при переходе — реализация сценария полностью на ваше усмотрение)
getURLBackground(‘URL’); — Запрос URL в фоне (если не важен результат
Компоненты системы MajorDoMo
Основное понятие, вводимое цифровым домом «MajorDoMo» – объект, множество которых в свою очередь делится на различные классы. И каждый из них имеет свои свойства и методы взаимодействия. К примеру, класс «лампочки», в который могут относиться объекты «люстра в зале», «подсветка зеркала», «свет на кухне». У каждого есть свойство «статус» со значением «включено» и «выключено», а также метод «зажечь» и «погасить».
Это наиболее простой вид объяснения разделения всего комплекса связанного оборудования в пределах понятий MajorDoMo. То есть, методы и свойства распределяются в зависимости от класса объекта и принадлежат только подобным ему.
Объекты
Объект MajorDoMo в изначальной своей, аппаратной форме –это контроллер с возможностью связи между управляемым устройством или датчиком и центральной системой, на которой находится программный комплекс MajorDoMo.
В качестве аппаратной составляющей выступает как оборудование самостоятельной сборки, так и выпускаемое некоторыми производителями уже в комплекте, к примеру фирмой Xiaomi. «Умный» дом MojorDomo поддерживает массу протоколов обмена – MQTT, Z-Wave, Broadlink (без возврата состояния) и множество других.
Классы
Как уже говорилось, класс объединяет объекты одного типа. К примеру, класс «выключатели» с состояниями (включено/выключено) и двумя методами (включить/погасить). Или класс «датчики движения» со свойством, у которого значения изменяются в пределах «присутствует движение/нет движения».
Есть и возможность дополнительного разветвления в одной общности – введение подкласса. Самым понятным примером станут выключатели. Бывают контроллеры света, которые не только умеют включать и выключать напряжение, но и плавно его изменять. То есть в парадигме понимания системы умного дома мажордомо у класса «выключатели» конкретного типа есть еще и дополнительное свойство «яркость». В общем виде можно расписать эту взаимосвязь следующим образом:
Класс «выключатели» |
Свойства: Статус = включен|выключен Методы: Включить|Выключить |
||
«Свет в кухне» |
|||
«Свет в прихожей» |
|||
«Свет в ванной» |
|||
Подкласс «ВыключателиСДиммером» |
Наследуемые свойства: Статус = включен|выключен Наследуемые методы: Включить|Выключить собственное устанавливаемое свойство: Яркость = значение |
||
«Свет в спальне» |
|||
«Свет в зале» |
Свойства
Для большинства устройств в пределах «умного дома» характерно не только следование указаниям контролирующей части, но и возврата своего состояния. Это и есть свойство объекта.
Кроме того, параметрам можно устанавливать значения, которые будут возвращаться в устройство. К примеру, у класса «кондиционеры» можно устанавливать значение свойства «температура», которое будет обрабатываться самим кондиционером, в зависимости от которого он и будет поддерживать режим работы.
Методы
В рамках системы, «методы» — это те управляющие действия, которые могут быть произведены с каким-либо входящим в ее состав устройством. К примеру, у класса «выключатели» это «включить»| «выключить», у «двери» – «открыть»| «закрыть» и тому подобные.
Работа с объектами
addClass(‘ESP8266’); // Создаем класс
addClassObject($class, $objName); — Создать объект от родительского класса. Передаются строки$obj=getObject($name); — получает объект по имени $name. с полученным объектом можно работать используя следующие методы:
$obj->callMethod(‘method_name’,$params); $obj->setProperty(‘property_name’,$value);
$obj->getProperty(‘property_name’);
$obj-> description; Доступ к описанию объекта
$this->object_title; — Доступ к имени объекта
callMethod(‘Object.Method’, $params); — вызывает метод объекта с заданными параметрами (последнее указывать не обязательно). Параметры передаются массивом, например array(«value»=>0)
PHP
$command=’Сколько время’;
callMethod(‘ThisComputer.commandReceived’,array(‘command’=>$command));
1 |
$command=’Сколько время’; callMethod(‘ThisComputer.commandReceived’,array(‘command’=>$command)); |
cm — альтернативное имя предыдущей функции
$value=getGlobal(‘Object.Property’); — получения значения свойства объекта
gg — альтернативное имя предыдущей функции
setGlobal(‘Object.Property’,$value); — установка значения свойства объекта
sg — альтернативное имя предыдущей функции
$objects=getObjectsByClass(‘class_name’); — возвращает массив объектов указанного класса в виде название.Пример перебора объектов в цикле и установки значения свойств:
PHP
$objects=getObjectsByClass(«class_name»);
foreach($objects as $obj) {
setGlobal($obj.».property_name»,1);
}
1 |
$objects=getObjectsByClass(«class_name»); foreach($objectsas$obj){ setGlobal($obj’TITLE’.».property_name»,1); } |
getObjectsByProperty($property_name,$condition=,$condition_value=); — возвращает массив названий объектов, имеющих свойство $property_name. опционально можно задать условие, под которое попадает значение. Условия могут быть == (или =), >=, >, <=, <, <> (или !=)
Microsoft Outlook
Рассмотрим настройку почтового клиента Microsoft Outlook 2016.
Запустите Microsoft Outlook. Перейдите в меню «Файл»:
В диалоговом окне «Выбор службы» отметьте Протокол POP3 или IMAP . Нажмите кнопку «Далее»:
В следующем окне «Параметры учетных записей IMAP и POP » в разделе «Сведения о пользователе» введите Ваше имя и имя почтового ящика с указанием доменного имени. Если вы создаете, например, ящик test , то ваш адрес будет test@sitetest.ru, где sitetest.ru — имя вашего домена.
В разделе «Вход в систему» введите полностью имя создаваемого почтового ящика, например, test@sitetest.ru, а в поле «Пароль», соответственно, создайте пароль к этому почтовому ящику.
В разделе «Сведения о сервере», если был выбран протокол POP3 , в поле «Сервер входящей почты» укажите: pop3.majordomo.ru либо pop3.ваш_домен.ru Если Ваш потовый клиент требует указывать порт, укажите 110.
Если для работы учетной записи был выбран протокол IMAP , в поле «Сервер входящей почты» укажите: imap.majordomo.ru При необходимости указывать порт, введите значение 143.
В поле «Сервер исходящих сообщений» ( SMTP ) также введите smtp. majordomo . ru
Затем нажмите кнопку «Другие настройки». В открывшемся окне необходимо выбрать вкладку «Сервер исходящей почты» и поставить галочку «SMTP-серверу требуется проверка подлинности». После этого отметьте пункт «Аналогично серверу для входящей почты» и нажмите кнопку «OK»:
Затем нажмите кнопку «Далее». В появившемся окне «Проверка настройки учетной записи» Microsoft Outlook выполнит проверку корректности выставленных параметров и отправит тестовое письмо:
После успешно выполненного тестирования нажмите кнопку «Закрыть» . Настройка Microsoft Outlook закончена.
источник
Дополнительные услуги
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 рублей в месяц при оплате на год).
Настройка веб-сервера
Управление умным домом от Majordomo осуществляется с помощью веб-интерфейса и для его работы необходим веб-сервер.
Установка Apache
Устанавливаем веб-сервер Apache и дополнительные компоненты:
apt install apache2 apache2-bin apache2-data apache2-utils
Разрешаем автозапуск apache и стартуем сервис:
systemctl enable apache2
systemctl start apache2
Открываем браузер и вводим IP-адрес сервера — мы должны увидеть страницу Apache по умолчанию:
Apache + PHP
Устанавливаем php и дополнительные компоненты:
libapache2-mod-php libapache2-mod-php php-bz2 php-cli php-common php-curl php-gd php-json php-mbstring php-mysql php7.2-opcache php-readline php-xml php-dev libmcrypt-dev gcc make autoconf libc-dev pkg-config
Устанавливаем компонент mcrypt:
pecl install mcrypt-1.0.1
Включаем компонент mcrypt в Apache:
vi /etc/php/7.2/apache2/conf.d/mcrypt.ini
extension=mcrypt.so
Разрешаем модуль rewrite для apache:
a2enmod rewrite
Перезапускаем apache:
systemctl restart apache2
Для проверки, удаляем index.html, создаем index.php:
rm /var/www/html/index.html
vi /var/www/html/index.php
<?php phpinfo(); ?>
Снова в браузере открываем страницу сервера — мы должны увидеть страницу информации о PHP:
СУБД
Устанавливаем сервер баз данных MySQL с необходимыми компонентами:
apt install dbconfig-mysql mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server mysql-server-5.7 mysql-server-core-5.7 php-mysql php-mysql
Перезапускаем apache:
systemctl restart apache2
Включаем автозапуск mysql и запускаем демона:
systemctl enable mysql
systemctl start mysql
Задаем пароль для root пользователя MySQL:
mysqladmin -u root password
Добавление устройства в систему MajorDoMo
Добавление любых устройств через web-интерфейс достаточно единообразно, поэтому рассмотрим процедуру на примере выключателя Xiaomi.
После выполнения монтажа проводки и аппаратного подключения выключателя к лампам необходимо скачать программу MiHome на телефон, которой и будут производиться все первоначальные настройки устройства для подключения его к MajorDoMo.
Итак, после установки и запуска выбирается в программе регион «материковый Китай» (это важно). Язык самого интерфейса – устанавливается любой.. Далее настройка самого шлюза
Жмем «+» сверху, справа. Потом заполняем все, что запрашивает мастер по установке. В главном окне создается кнопка с названием шлюза. Заходим в нее, потом выбираем «Дополнительные опции».
Далее настройка самого шлюза. Жмем «+» сверху, справа. Потом заполняем все, что запрашивает мастер по установке. В главном окне создается кнопка с названием шлюза. Заходим в нее, потом выбираем «Дополнительные опции».
На открывшейся странице, сверху справа необходимо тапнуть на три точки и выбрать «сведения». Внизу есть надпись «Plug-in version», на которую необходимо несколько раз потапать, пока не создастся новая вкладка «Wireless communication protocols». Необходимо в нее зайти, активировать доступ по протоколу WIFI. Пароль будет указан внизу на этой же странице.
Далее выполняется настройка уже самого MajorDoMo. Открываем браузер, подключаемся к установленному серверу с программой, управляющей умным домом. Добавляем модуль «Xiaomi Home». Переходим в разделе Устройств «Xiaomi Home».
Видим в списке гейт к самому выключателю. Производим нажатие на изображение карандаша и попадаем в свойства соединения. В «Key:» указывается пароль из MiHome. Следом «Сохранить». Подключенные устройства будут видны в разделе «Устройства» → «Xiaomi Home» MajorDoMo.
Функции и возможности
Сами по себе модули содержат обширные настройки: в соответствующем разделе интерфейса можно, например, указать цвет пользователя, разрешенные ему компьютеры для входа, и так далее.
Электронный «мажордом» способен управлять многочисленными умными устройствами:
- розетками;
- лампами;
- бытовой техникой;
- домашним мультимедиа;
- кондиционерами;
- отопительными системами;
- охранными комплексами;
- инженерным и сантехническим оборудованием, и так далее.
Умеет он взаимодействовать и с интернет-сервисами (например, для поиска новостей). Кроме того, через глобальную сеть обеспечивается удаленный доступ и своевременное обновление.
Для продвинутых пользователей существует возможность дописывать модули и сценарии на языке программирования PHP. В системе также присутствует встроенный визуальный конструктор Blockly, обеспечивающий простое создание алгоритмов:
Комплекс наверняка станет интересен начинающим и продвинутым программистам. Разработка ПО под MajorDoMo не отличается высоким порогом входа, необходимо лишь обладать пониманием языка PHP и некоторых смежных дисциплин (таких, как JS, CSS). С них и следует начинать осваивающим разработку под эту платформу джуниор-кодерам.
Безопасность
При покупке виртуального хостинга вы можете рассчитывать на целый ряд инструментов защиты. В первую очередь речь идёт о противодействии DDoS-атакам и спаму. Это бесплатные системы, доступные в базовой функциональности. Если их недостаточно для защиты вашего проекта, то есть выбор среди дополнительных услуг:
- Защита от вирусного заражения и взлома.
- Проект под наблюдением специалистов, которые в течение двух суток реагируют на обнаруженную угрозу и устраняют неприятные последствия.
- Дополнительные средства борьбы с вирусами и спамом за 49 руб/месяц.
- Сканер вредоносного кода за 99 руб/месяц.
Резервные копии создаются автоматически и хранятся неделю. Увеличить количество дней можно, но это платная услуга. Также можно приобрести доступ к резервным копиям, которые были сделаны за последний месяц. Всё это актуально для Shared-хостинга. Пользователи с проектами на VPS и физических серверах могут настроить сохранение бэкапов на сторонних облачных хранилищах.
Что такое MajorDoMo?
Высокие технологии все глубже входят в жизнь человека. Это касается не только его труда, медицины или городской инфраструктуры. Абсолютно все жизненное окружение получает определенный «ум»: выключатели, системы климат-контроля помещений, различные датчики (открывания-закрывания, дыма, движения). Все объединяется в стройные логические системы при помощи цифровых управляющих контуров и контроллеров оборудования. Общность такого слияния называется «умный дом», который и предоставляет возможности единого управления и наблюдения за всем комплексом устройств в него входящего. Причем контроль может осуществляться как в ручном режиме через какой-либо общий интерфейс, так и автоматическими возможностями, наподобие выполнения определенных сценариев, реакции на показания датчиков или даже голосовыми командами.
Самое, наверное, простое и удобное, что стоит вспомнить про «умные» системы в быту – это управление светом. К примеру, выключатель, как ручной прибор, становится не нужен (хотя и возможен). Можно представить себе, что свет включается сам, если датчик в помещении определил наличие человека. Причем, в зависимости от времени суток, включается только то освещение, которое в текущий момент необходимо.
Самое простое – человек один, вечер. Зашел в зал. Зачем зажигать люстру? Автоматически загорается только бра. А вот если зашло несколько людей – тогда да, включается люстра. Опять же. Ночью пошел человек в туалет. Зачем зажигать все освещение? Достаточно включить подсветку ему по дороге, да свет в самом туалете.
Или такой пример: в будние дни люди на работе. Можно запустить робот-пылесос, который к их приходу уберет и встанет на подзарядку. А вот в выходные надобности в этом нет. Соответственно центральный контроллер и действует. Вот это и есть система «умный» дом, которая сама, в зависимости от определенных параметров, производит те или иные действия.
Одна из наиболее доступных, открытых и удобных из подобных – умный дом MajorDoMo. Кросс платформенный OpenSource проект, активно развивающийся и имеющий достаточно низкий порог вхождения. Основа его удобства – относительно простая страница — конфигуратор всего комплекса на домашнем или рабочем web-сервере.
Несмотря на простоту настройки системы MajorDoMo с нуля после установки, у нее множество возможностей по поддержке различного оборудования и протоколов обмена между ним. К комплексу можно подключить не только выключатели различных видов, но и датчики движения, температуры, освещенности или любые другие, информация от которых будет непосредственно выводиться на управляющей web-страничке или использоваться в скриптах MajorDoMo.
Обозначения
В нотной записи также могут быть обозначения, которые ставятся рядом с определенной нотой и относятся к ней непосредственно.
Так, если рядом с какой-нибудь нотой стоит цифра в кружочке, это означает, что данную ноту нужно играть на струне, соответствующей этой цифре:
Лады обычно обозначают римскими цифрами. Ноту проигрывают на той струне, которую зажимают на обозначенном ладу.
Зачастую указывают, каким из пальцев нужно играть определенную ноту. Рассмотрим обозначения, которые предусмотрены для пальцев правой руки:
- p – большой палец;
- a – безымянный палец;
- m – средний палец;
- i – указательный палец.
Для обозначения пальцев левой руки применяются арабские цифры, которые не обводятся кружками: 1, 2, 3, 4. Цифра 0 обозначает, что звучание указанной ноты извлекается на открытой струне.
Описанные правила и инструкции подходят, прежде всего, для новичков. Для облегчения уроков игры на гитаре существует большой ассортимент программных продуктов.
API
GET
/api/data/<OBJECT> — список всех свойств и значений объекта <OBJECT>/api/data/<OBJECT>.<PROPERTY> — значение свойства <OBJECT>.<PROPERTY>/api/method/<OBJECT>.<METHOD> — вызов метода <OBJECT>.<METHOD>/api/method/<OBJECT>.<METHOD>?param1=value1¶m2=value2 — вызов метода <OBJECT>.<METHOD> с параметрами/api/script/<SCRIPT> — вызов сценария <SCRIPT>/api/script/<SCRIPT>?param1=value1¶m2=value2 — вызов сценария <SCRIPT> с параметрами/api/events/<PATH/TO/EVENT>?param1=value1¶m2=value2 — сохранения события с параметрами/api/devices — список (простых) устройств/api/rooms — список комнат/api/rooms/<ID> — детали комнаты с кодом <ID>
/api/history/<OBJECT>.<PROPERTY>/<PERIOD> — история значений свойства за указанный период
<PERIOD> может принимать значения: N (число, кол-во часов), day, week, month, year, Ndays, Nweeks, Nmonths, Nyears
например, ссылка /api/history/switch1.status/2days вернёт все значения switch1.status за два дня
/api/history/<OBJECT>.<PROPERTY>/<PERIOD>/max — максимальное значение за период/api/history/<OBJECT>.<PROPERTY>/<PERIOD>/min — минимальное значение за период/api/history/<OBJECT>.<PROPERTY>/<PERIOD>/avg — среднее значение за период/api/history/<OBJECT>.<PROPERTY>/<PERIOD>/sum — сумма значений за период/api/history/<OBJECT>.<PROPERTY>/<PERIOD>/count — количество значений за период
POST
/api/data/ — получение значений нескольких свойств (по полному названию типа <OBJECT>.<PROPERTY> или только по названию объекта <OBJECT>)
Request:
JavaScript
{«properties»: }
1 | {«properties»»ThisComputer.timeNow»,»Relay10″} |
Response:
JavaScript
{
«data»: {
«ThisComputer.timeNow»: «10:56»,
«Relay10.isActivity»: «0»,
«Relay10.groupEco»: «0»,
«Relay10.groupSunrise»: «0»,
«Relay10.loadType»: «curtains»,
«Relay10.groupEcoOn»: «0»,
«Relay10.icon»: false,
«Relay10.groupSunset»: false,
«Relay10.status»: «0»,
«Relay10.alive»: «1»,
«Relay10.linkedRoom»: «Bedroom»,
«Relay10.updated»: «1555607461»,
«Relay10.updatedText»: «20:11»,
«Relay10.aliveTimeout»: «»,
«Relay10.StatusLowBattery»: false
}
}
1 |
{ «data»{ «ThisComputer.timeNow»»10:56», «Relay10.isActivity»»0», «Relay10.groupEco»»0», «Relay10.groupSunrise»»0», «Relay10.loadType»»curtains», «Relay10.groupEcoOn»»0», «Relay10.icon»false, «Relay10.groupSunset»false, «Relay10.status»»0», «Relay10.alive»»1», «Relay10.linkedRoom»»Bedroom», «Relay10.updated»»1555607461», «Relay10.updatedText»»20:11», «Relay10.aliveTimeout»»», «Relay10.StatusLowBattery»false } } |
/api/data/<OBJECT>.<PROPERTY> — установка значения свойства <OBJECT>.<PROPERTY>
/api/rooms/setOrder — изменение очерёдности комнат
Request
JavaScript
{«id»: «7»,»priority»: 0},
{«id»: «4»,»priority»: 1}
1 |
{«id»»7″,»priority»}, {«id»»4»,»priority»1} |
Response
JavaScript
{result: true}
1 | {resulttrue} |
result — true/false
/api/room — добавление/редактирование комнаты
Request
JavaScript
{«id»: «2»»title»: «Название комнаты»}
1 | {«id»»2″»title»»Название комнаты»} |
(если в request задан id, то происходит)
Response
JavaScript
{«id»: «2»,»title»: «Название комнаты»,»object»: «Room2″,»priority»: 1}
1 | {«id»»2″,»title»»Название комнаты»,»object»»Room2″,»priority»1} |
DELETE
/api/room/{id} — удаление комнаты
Поделитесь в соц сетях
Общие функции
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).
Управление циклами (сервисами)
Интерфейс доступен через раздел 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′); — Для включения авто-восстановления (по-умолчанию он всегда выключен)
Итог
Советовать Majordomo можно — хостинг неплохой, проверенный временем. И это не странно, учитывая, что речь идёт о создателе очень популярного конструктора сайтов Nethouse. Хотя и проблем хватает, но это, можно сказать, обычный уровень подобного вида услуг, где без форс-мажорных ситуаций ну никак.
По соотношению цены и качества более или менее адекватные возможности предлагает только использование VPS, который вы можете самостоятельно настроить. На виртуальном хостинге придётся мириться с медленной работой веб-интерфейса, а на выделенных физических серверах — с устаревшими компонентами и невысокой производительностью по сравнению с конкурентами.