Skysilver
Содержание:
- 3.4 Каким средствами осуществляются голосовые уведомления?
- API
- 1.5 Есть ли коммерческая версия комплекса?
- 4.5 Что значит «связанный» объект/свойство/метод?
- 1.10 Я строю дом и в будущем планирую сделать его «умным», что мне необходимо предусмотреть заранее?
- 1.1 Что такое Умный Дом?
- Управление циклами (сервисами)
- Ценовая политика
- Microsoft Outlook
- Функции и возможности
- Компоненты системы MajorDoMo
- Функциональность
- Запланированные задачи и события
- Что такое MajorDoMo?
- Установка и настройка MajorDoMo
- Шаги
- Общие функции
- Состав и управление системой MajorDoMo
- Итог
3.4 Каким средствами осуществляются голосовые уведомления?
Одна из активно используемых возможностей системы, это голосовое оповещение о тех или иных событиях. Для реализации этого могут быть задействованы следующие средства:
- Движок Google TTS (Windows/Linux) — каждая фраза отправляется в соответствующее API сервиса Google, возвращается звуковой файл, который в последствии воспроизводится. Данный способ требует наличие интернет-соединения, хотя однажды запрошенные фразы «кэшируются» локально и могут быть воспроизведены и без обращения к внешним сервисам
- Windows TTS (Windows) — встроенная в систему Windows универсальная подсистема синтеза речи. Данная подсистема может быть модифицирована покупкой и установкой более современных языковых движков, например Alyona от Acapella Group.
Кроме того, через систему настроек можно интегрировать собственны голосовой движок, описав команды его вызова.
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} — удаление комнаты
1.5 Есть ли коммерческая версия комплекса?
Как таковой, платной версии программного комплекса не существует — система распостраняется абсолютно свободно под лицензией MIT, что подразумевает использование её без каких либо ограничений, кроме обязательного указания авторства, в любых проектах. Необходимо уточнить, что данный факт не исключает возможности оказания платных услуг с использованием платформы как инструмента в реализации проекта Умного Дома на коммерческой основе. При этом вполне возможна покупка/продажа на договорной основе дополнительного оборудования, а так же услуг по настройке системы для конкретного пользователя (программирование сценариев, разработка дизайна, отладка и т.п.). Подробнее о возможностях коммерческого сотрудничества читайте всоответствующем разделе сайта.
4.5 Что значит «связанный» объект/свойство/метод?
В различных частях системы существует функциона «привязки» того или иного элемента с объектом, его свойством или его методом. Объекты являются основой хранения данных системы, а так же описанием функций работы с этими данными. Именно поэтому большинство модулей так или иначе ссылаются на объекты.
Например, элемент меню типа Выключатель используется связанное свойство для хранения данных о своём последнем состоянии, а так же метод объекта, как действие, которое надо выполнить после изменения состояния. С другой стороны, модули работы с оборудованием так же используют связанные свойства и объекты для хранения данных, полученных от соответствующих электронных устройств.
Например, привязав свойство какого-то объекта к свойству выключателя в модуле ZWave можно обращаться к этому свойству для получения последнего состояния физического выключателя, а так же использовать это свойства для установки значения (включения нагрузки), таким образом создаётся прозрачная двухсторонняя связь между физическим устройством и объектом системы MajorDoMo. Одно свойство объекта может быть привязано к нескольким элементам, так, если рассматривать предыдущие два примера, то можно объединить их в один, когда и для привязки выключателя в меню и для привязки выключателя ZWave мы используем одно свойство. В таком случае мы получаем управляемый через меню физический выключтатель.
1.10 Я строю дом и в будущем планирую сделать его «умным», что мне необходимо предусмотреть заранее?
Во-первых, определитесь с тем, где у вас будет основной электро-щит и планируйте проводку так, чтобы провода от настенных выключателей и точек освещения сводились каждый в отдельности в этот щиток. В начале вы сможете всё скоммутировать там по тривиальной схеме (грубо говоря, выключатель пускает ток на лампочку), но в будущем такая коммутация позволит заменить простую схему автоматикой. Для розеток этого не нужно — управлять устройствами, включенными в розетку, проще через дополнительное оборудование, те же wi-fi розетки.
Далее, планируйте провести витую пару (двойные розетки) к местам установки медиа-систем (телевизоры, аудио-центры, спутниковые ресиверы и т.п.). Желательно в любом случае иметь по такой розетке в каждой комнате — их можно будет использовать не только для компьютерной сети, но и для телефонии. Эти кабели так же нужно выводить в общий щиток.
Так же полезно закладывать провода для системы мульти-рум. Если вы планируете встраивать в стену панели управления (те же планшеты), то так же подведите туда питание, чтобы не болтались провода.
Вышеобозначенное не связано с конкретной системой Умного Дома и будет полезно в любом случае, даже если вы решите делать проект на другой платформе.
1.1 Что такое Умный Дом?
Умный дом— это комплекс программных и аппаратных систем, выполняющих функции оптимизации жизнедеятельности и контроля функционирования технологических систем.Основные сферы оптимизации:
- Безопасность— повышение уровня безопасности за счёт постоянного контроля параметров работы технологических систем (отопление, водоснабжение, электричество и т.п.), а так же интеграция охранных компонентов (сигнализация, видео-наблюдение, GPS-трэкинг)
- Экономия— поддержка оптимальных параметров энерго-потребления (электричество/тепло) и автоматический перевод систем в экономичный режим
- Комфорт— централизованное управление всеми системами, автоматические сценарии последовательных действий, работа с мульти-медиа.
Управление циклами (сервисами)
Интерфейс доступен через раздел 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′); — Для включения авто-восстановления (по-умолчанию он всегда выключен)
Ценовая политика
Виртуальный хостинг доступен в двух линейках тарифов: «Базовый» и «Корпоративный». Первый включает три пакета услуг стоимостью от 140 до 425 руб/месяц. Главное различие между ними — количество доступного места. Кроме того, на минимальном тарифе ограничено число сайтов, которые можно создать (не более 10), нет поддержки отдельных веб-технологий и автоматической установки CMS. Старшие тарифы позволяют создавать неограниченное количество проектов.

Корпоративных тарифа два: «Бизнес» и «Бизнес+» за 799 и 999 руб/месяц соответственно. На первом доступно 10 Гб и можно сделать 1 сайт, а на втором — 15 Гб на диске и можно сделать 3 сайта, количество баз данных не ограничено. Также тарифы предлагают упрощённую установку CMS, домен в подарок, SSL, и скидку на логотип. Данные хранятся на отдельных серверах, расположенных на территории РФ. Тестировать все тарифы виртуального хостинга можно бесплатно в течение 14 дней.

Хостинг приложений на базе виртуального хостинга стоит 140 рублей в месяц. При конфигурировании можно добавить на него необходимые технологии: Python, PHP, MySQL, Memcached, Redis. За каждую придётся платить дополнительно — 200 рублей в месяц.
Во все тарифы виртуального хостинга включены:
- неограниченный бесплатный трафик;
- круглосуточная поддержка;
- неограниченное число алиасов;
- самописная панель управления;
- доступ по FTP;
- доступ к логам;
- защита от спама;
- поддержка SSL;
- запуск по crontab.
На виртуальном хостинге есть также дополнительные услуги.
- Дополнительный FTP-доступ (если пользователей больше 3, цена за каждого) — 49 рублей в месяц.
- Уведомления через SMS — 49 рублей в месяц или 499 рублей в год.
- Увеличение размера дискового пространства — 49 рублей за каждые 100 МБ.
- Защита почты от вирусов и спама — 49 рублей в месяц или 499 рублей в год.
- Переадресация домена (до 10 переадресаций, цена за каждую) — 99 рублей в год.
- Расширенное резервное копирование — 99 рублей в месяц или 999 рублей в год.
Отдельных пакетов услуг для CMS нет. Единственное исключение — хостинг для 1С-Битрикс. Место на сервере вы получите в подарок, если купите одну из редакций движка через хостинг Majordomo.
Виртуальные выделенные серверы представлены в 6 конфигурациях. Самый дешевый тариф — «Лайт» в линейке с выключенным удалённым администрированием. Он стоит всего 425 руб/месяц и предлагает одноядерный процессор, 1 Гб ОЗУ и 30 Гб на SSD. Тарифы с удалённым администрированием в 2-3 раза дороже, хотя предлагают те же ресурсы. Самый дорогой пакет услуг VPS будет стоить 2790 руб/месяц. На нём доступен двухъядерный процессор, 4 Гб ОЗУ и 60 Гб на SSD, а также панель ISP Manager 5, три домена в подарок, мониторинг сервера и безлимитный трафик.
Арендовать физический сервер можно в 9 стандартных конфигурациях стоимостью от 2500 до 8990 руб/месяц. Если в готовых пакетов нет подходящего предложения, то его можно сформировать самостоятельно через форму заявки.
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 закончена.
источник
Функции и возможности
Сами по себе модули содержат обширные настройки: в соответствующем разделе интерфейса можно, например, указать цвет пользователя, разрешенные ему компьютеры для входа, и так далее.
Электронный «мажордом» способен управлять многочисленными умными устройствами:
- розетками;
- лампами;
- бытовой техникой;
- домашним мультимедиа;
- кондиционерами;
- отопительными системами;
- охранными комплексами;
- инженерным и сантехническим оборудованием, и так далее.
Умеет он взаимодействовать и с интернет-сервисами (например, для поиска новостей). Кроме того, через глобальную сеть обеспечивается удаленный доступ и своевременное обновление.
Для продвинутых пользователей существует возможность дописывать модули и сценарии на языке программирования PHP. В системе также присутствует встроенный визуальный конструктор Blockly, обеспечивающий простое создание алгоритмов:
Комплекс наверняка станет интересен начинающим и продвинутым программистам. Разработка ПО под MajorDoMo не отличается высоким порогом входа, необходимо лишь обладать пониманием языка PHP и некоторых смежных дисциплин (таких, как JS, CSS). С них и следует начинать осваивающим разработку под эту платформу джуниор-кодерам.
Компоненты системы MajorDoMo
Основное понятие, вводимое цифровым домом «MajorDoMo» – объект, множество которых в свою очередь делится на различные классы. И каждый из них имеет свои свойства и методы взаимодействия. К примеру, класс «лампочки», в который могут относиться объекты «люстра в зале», «подсветка зеркала», «свет на кухне». У каждого есть свойство «статус» со значением «включено» и «выключено», а также метод «зажечь» и «погасить».
Это наиболее простой вид объяснения разделения всего комплекса связанного оборудования в пределах понятий MajorDoMo. То есть, методы и свойства распределяются в зависимости от класса объекта и принадлежат только подобным ему.
Объекты
Объект MajorDoMo в изначальной своей, аппаратной форме –это контроллер с возможностью связи между управляемым устройством или датчиком и центральной системой, на которой находится программный комплекс MajorDoMo.
В качестве аппаратной составляющей выступает как оборудование самостоятельной сборки, так и выпускаемое некоторыми производителями уже в комплекте, к примеру фирмой Xiaomi. «Умный» дом MojorDomo поддерживает массу протоколов обмена – MQTT, Z-Wave, Broadlink (без возврата состояния) и множество других.
Классы
Как уже говорилось, класс объединяет объекты одного типа. К примеру, класс «выключатели» с состояниями (включено/выключено) и двумя методами (включить/погасить). Или класс «датчики движения» со свойством, у которого значения изменяются в пределах «присутствует движение/нет движения».
Есть и возможность дополнительного разветвления в одной общности – введение подкласса. Самым понятным примером станут выключатели. Бывают контроллеры света, которые не только умеют включать и выключать напряжение, но и плавно его изменять. То есть в парадигме понимания системы умного дома мажордомо у класса «выключатели» конкретного типа есть еще и дополнительное свойство «яркость». В общем виде можно расписать эту взаимосвязь следующим образом:
|
Класс «выключатели» |
Свойства: Статус = включен|выключен Методы: Включить|Выключить |
||
|
«Свет в кухне» |
|||
|
«Свет в прихожей» |
|||
|
«Свет в ванной» |
|||
|
Подкласс «ВыключателиСДиммером» |
Наследуемые свойства: Статус = включен|выключен Наследуемые методы: Включить|Выключить собственное устанавливаемое свойство: Яркость = значение |
||
|
«Свет в спальне» |
|||
|
«Свет в зале» |
Свойства
Для большинства устройств в пределах «умного дома» характерно не только следование указаниям контролирующей части, но и возврата своего состояния. Это и есть свойство объекта.
Кроме того, параметрам можно устанавливать значения, которые будут возвращаться в устройство. К примеру, у класса «кондиционеры» можно устанавливать значение свойства «температура», которое будет обрабатываться самим кондиционером, в зависимости от которого он и будет поддерживать режим работы.
Методы
В рамках системы, «методы» — это те управляющие действия, которые могут быть произведены с каким-либо входящим в ее состав устройством. К примеру, у класса «выключатели» это «включить»| «выключить», у «двери» – «открыть»| «закрыть» и тому подобные.
Функциональность
Majordomo — типичный хостер, покрывающий основные потребности вебмастеров. На нём есть несколько тарифов Shared-хостинга, VPS, разные конфигурации серверов, а также возможность зарегистрировать домен — или получить его в подарок при оплате продолжительного периода использования.
Ещё одно интересное предложение — хостинг приложений. На нём доступно использование технологий Python, PHP, MySQL, Redis, Memcached. Основа — виртуальный хостинг, который не нужно администрировать. Удобный конфигуратор позволяет оплачивать только те возможности, которыми вы реально будете пользоваться.
Запланированные задачи и события
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. Кросс платформенный OpenSource проект, активно развивающийся и имеющий достаточно низкий порог вхождения. Основа его удобства – относительно простая страница — конфигуратор всего комплекса на домашнем или рабочем web-сервере.
Несмотря на простоту настройки системы MajorDoMo с нуля после установки, у нее множество возможностей по поддержке различного оборудования и протоколов обмена между ним. К комплексу можно подключить не только выключатели различных видов, но и датчики движения, температуры, освещенности или любые другие, информация от которых будет непосредственно выводиться на управляющей web-страничке или использоваться в скриптах MajorDoMo.
Установка и настройка 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:
Готово.
Шаги
Общие функции
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).
Состав и управление системой MajorDoMo
В сущности, система представлена специализированной web оболочкой, которая работает в пространстве домашнего web-сервера. Причем последний может функционировать под любыми операционными системами, Windows или Linux. Да и сама аппаратная составляющая центрального компьютера значения не имеет. Это вполне может быть не только IBM совместимый компьютер, но и RasberriPi или еще что-либо более экзотическое.
Клиентские устройства могут быть представлены практически всем производимым спектром оборудования, от устройств MQTT и до радиоуправления Broadlink RF (стандарт 433/315мГц). Взаимодействие с сетями Z-Wave, KNX, и оборудованием Sonoff, Livolo или Xiaomi – происходит через дополнительные модули, которые тем не менее объединяют эти устройства в единое пространство имен, классов, объектов и методов.
Итог
Советовать Majordomo можно — хостинг неплохой, проверенный временем. И это не странно, учитывая, что речь идёт о создателе очень популярного конструктора сайтов Nethouse. Хотя и проблем хватает, но это, можно сказать, обычный уровень подобного вида услуг, где без форс-мажорных ситуаций ну никак.
По соотношению цены и качества более или менее адекватные возможности предлагает только использование VPS, который вы можете самостоятельно настроить. На виртуальном хостинге придётся мириться с медленной работой веб-интерфейса, а на выделенных физических серверах — с устаревшими компонентами и невысокой производительностью по сравнению с конкурентами.