Mazahaka7sk

Содержание

Введение

Итак…вы установили систему. Скачали установщик для 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.

С этой страницы и начнем. Она простая, с базовыми настройками. Тут нужно выбрать

  • Ваш часовой пояс
  • Язык системы
  • Цветовую тему интерфейса (Тёмная/Светлая)

Поменять эти настройки так же можно, зайдя повторно на данную страницу.

Теперь взглянем на все доступные интерфейсы. Каждый из этих интерфейсов может быть выбран как приоритетный для управления системой…либо может быть несколько приоритетных, в зависимости от используемых устройств.

Видео по настройкам примеры работ. — Majordomo

Установка и запуск системы умный дом Алиса (1 Серия) https://www.youtube.com/watch?v=Y_sRdEjl3k4

Подключение Apple устройств умному дому (2 Серия) https://www.youtube.com/watch?v=MexriCv8_xU

Умный дом своими руками (3 серия) https://www.youtube.com/watch?v=T4sUVrlHwQw

Умный дом своими руками (4 серия) https://www.youtube.com/watch?v=Yk4sb9dQ7Rw

Умный дом своими руками (5серия) https://www.youtube.com/watch?v=iFicGnaLqlg

Настройка модуля и телевизора на системе WebOs https://www.youtube.com/watch?v=b0yryhj5SFc

РЕЖИМ ОХРАНА В УМНОМ ДОМЕ https://www.youtube.com/watch?v=sqvaPKUnVoc Настройка Режима Охраны добавления свойств и функционала.

Добавления нового значка в меню статуса системы majordomo https://www.youtube.com/watch?v=U_AhajuGwd4 Всем привет в этом видео я покажу как добавить новый значок в меню статусе системы. Подписывайтесь на мой канал. ставьте лайки.

Автоматическое управления светом Алисой по движению в majordomo https://www.youtube.com/watch?v=AcNL993bkyw Всем привет в этом видео пойдет речь о автоматическом управлении светом Алисой. Чтобы она включала свет когда есть движение в комнате и автоматически выключала его когда в комнате некого нет и вы забыли выключить свет.

Добавления в телеграмм новых функции. В проекте Алиса. (majordomo) https://www.youtube.com/watch?v=IcG3ZjHYO5Y

3д план дома 3D Home, Majordomo https://www.youtube.com/watch?v=NMqruVaVzJM Всем привет в этом видео я показываю как сделать 3д план своей квартиры,дома. Дом проектирование

Esp8266 witi cloud прошивка и настройка Wifi-Iot. majordomo перезалил https://www.youtube.com/watch?v=B4pC4X3P498

Виджет to do дела, задачи в меню и сцены в умном доме majordomo https://www.youtube.com/watch?v=WPsJYsYERpM

Happy Birthday — Алиса поздравляет с Днем Рождения https://www.youtube.com/watch?v=rDiUCXYGEUc Скрипт для поздравления пользователей с Днем Рождения. В этом видео рассказываю как сделать так чтоб Алиса умела поздравлять пользователей с днем рождения.

Отправка графиков в телеграмм в умном доме Majordomo https://www.youtube.com/watch?v=E-HQNlPRsp8

Создание и настройка telegram bot majordomo https://www.youtube.com/watch?v=jdQ—tKGBOU Создание и настройка telegram bot для умного дома majordomo smart home, умный дом своими руками. телеграмм бот для умного дома.

Google Location, GPS трекер через гугл карты. https://www.youtube.com/watch?v=6v1R-NKJ5DY В этом видео я расскажу как использовать Google Location, и отправлять наши гео данные в наш умный дом через приложение гугл карты на андроид.

Xiaomi Gateway для умного дома https://www.youtube.com/watch?v=djConVLIrTs

Включение режима охраны Xiaomi Gateway https://www.youtube.com/watch?v=nHz4rZVGf_k

БЕЗОПАСНОСТЬ УМНОГО ДОМА Majordomo https://www.youtube.com/watch?v=-hDtSCMJz-o

Raspberry Pi 3 модель B для умного дома majordomo https://www.youtube.com/watch?v=4QvH7koK6TA

Xiaomi Aqara Magic Cube Smart Home обзор подключение к majordomo https://www.youtube.com/watch?v=3QtbOQsbarQ

Подключение web камеры к raspberry pi 3 majordomo умный дом. https://www.youtube.com/watch?v=tqjcrI-aXeM

Выключение режима охраны через карту банку или любой Rfid метки в majordomo https://www.youtube.com/watch?v=Q_0JpmNymRY

Обсуждение (0)

Смотрите так же: 03.10.2019 Видео по настройкам примеры работ. — Majordomo 24.08.2019 Идея о терминалах ) 23.06.2019 Включение режима охраны Xiaomi Gateway Видео 17.06.2019 Открытие портов 9898 Xiaomi Gateway (ВИДЕО) 15.12.2018 Создал Свой Ютуб канал.

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

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

Ещё пару моментов, о которых нужно знать

1. Элемент «Объект»

Я специально не стал задерживаться на этом элементе при описании элементов меню. Его так же нет на скрине. Это всё обусловлено тем, что элемент может быть крайне разнообразный. От простой строчки текста до мощного виджета с элементами управления. По факту он чем-то похож на html-блок. Там те же прелести HTML/CSS/JS, с одной лишь разницей — код оформления данного блока пишется в Объектах на вкладке Шаблон Класса. Благодаря этому элемент становится доступен для вставки не только в меню, но так же в сцены и дашборд.

Как он создаётся — не буду отдельно останавливаться, но скрины элементов всё-таки приведу. Найти код элементов вы сможете в соответствующей ветке на форуме…

Пример термостата (код, к сожалению не нашел)

Пример виджета с информацией о пользователе (класс Users, ).

Пример виджетов комнат (класс Rooms, ).

2. Объекты поле выбора (radio, select)

При настройке данных полей допускаются следующие записи в поле данные:

-1|Молчать 0|В лог 1|Говорить

1 2 3

-1|Молчать

|Влог

1|Говорить

При такой записи в полях выбора будут значения справа от черты, а в свойство будут попадать значение слева от черты. Таким образом можно избавиться от дополнительных преобразований в вызываемом методе. В некоторых случаях это вообще может избавить от написания метода.

Ещё одно применение Поля radio — его можно использовать как альтернативу выключателю, если у него 2 состояния.

0|Выкл 1|Вкл

1 2

|Выкл

1|Вкл

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

3. Динамический повтор (Smart Repeat)


Не многие им пользуются (не всегда удобно), но порой очень выручает. Объяснить что это — проще на примере…

Есть у вас класс…пусть будет Relays. Там 16 объектов реле, все одинаковые, только привязаны к разным каналам к примеру. Управляются переключением свойства status в 1/0. Создаём выключатель для 1 объекта в меню, привязываем к статусу. Чтобы создать выключатели для остальных объектов можно, конечно, создавать 16 отдельных пунктов, а можно включить опцию smart repeat в первом. И тогда вы увидите все 16 выключателей у вас в меню (хотя создан по факту будет только 1. Для удобства понимания какой к чему относится — можно, к примеру, создать классовое свойство name, и вписать в каждом объекте в это свойство название выключателя (к примеру «Свет в зале», «Свет на кухне» и т.п.) ну а в названии объекта указать всё ту же конструкцию %Объект.name% чтобы значение из поля name отобразилось в заголовке выключателя.

Логические компоненты

С точки зрения MajorDoMo умный дом состоит из логических элементов. Платформа оперирует четырьмя основными понятиями — объекты, классы, свойства и методы.

Объекты

В терминологии ПО объект представляет собой физический контроллер с обратной связью, обеспечивающий взаимодействие между сервером и управляемым контроллером датчиком. Таким устройством может являться и самостоятельно собранный прибор, и заводской. Умный дом «Мажордомо» поддерживает множество основных протоколов smart home:

  • Z-Wave;
  • Zigbee.
  • MQTT;
  • Broadlink, и прочие.

Классы

Следующая сущность в экосистеме рассматриваемого ПО — класс. В нем объединены однотипные объекты. Например, это может быть класс устройств «выключатели» с двумя состояниями (вкл/выкл) и методами «включить» и «выключить». Или «датчики движения», чье состояние изменяется по детекции перемещения в зоне действия.

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

Свойства

Каждый элемент «умного дома» обладает собственным состоянием, которое он возвращает контроллеру и в MajorDoMo. Это состояние и называется свойством объекта. Его можно не только получать, но и отправлять на устройство, которое обработает команду и вернет некий заданный результат (например, пользователь задаст кондиционеру уровень поддерживаемой температуры, а прибор перейдет в соответствующий режим работы).

Методы

В логике «Мажордомо» метод — некоторое управляющее действие, команда, принятая и обработанная устройством/датчиком.

Настройка веб-сервера

Управление умным домом от 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

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


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

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

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

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

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

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

Добавление и управление устройствами в модуле

Модуль реализует классическую концепцию MajorDoMo для взаимодействия с пользователем через метрики и привязанные к ним свойства объекта. К метрикам (умениям) привязываются уже существующие объекты и свойства, через которые реализовано управление устройствами. К каждому умению устройства можно привязать свое свойство объекта.

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

Дальнейшее конфигурирование выполняется на странице редактирования (настройки) устройства.

Обязательные для заполнения поля устройства:

  1. Название.
  2. Тип.
  3. Местоположение.
  4. Умения.

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

Не обязательные для заполнения поля устройства:

  1. Описание.
  2. Производитель.
  3. Модель.
  4. Версия программного обеспечения (ПО).
  5. Версия аппаратного обеспечения (АО).

Набор умений представлен в виде выпадающего списка.

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

При добавлении устройств в модуле или изменении их свойств для обновления списка устройств в приложении Яндекс необходимо каждый раз выполнять синхронизацию с помощью кнопки Обновить список устройств в окне свойств навыка. Удаляются устройства из приложения Яндекс вручную, либо через отвязывание аккаунта и последующее повторное объединение аккаунтов.

Документация по модулю

  1. MajorDoMo и Яндекс Алиса. Общие сведения.
  2. MajorDoMo и Яндекс Алиса. Публикация вебхуков.
  3. MajorDoMo и Яндекс Алиса. Регистрация приватного навыка.
  4. MajorDoMo и Яндекс Алиса. Объединение аккаунтов.
  5. MajorDoMo и Яндекс Алиса. Модуль Yandex Home.
  6. MajorDoMo и Яндекс Алиса. Алиса, включи свет на кухне.
  7. MajorDoMo и Яндекс Алиса. Алиса, сделай ярче настольную лампу.
  8. MajorDoMo и Яндекс Алиса. Алиса, измени цвет бра на красный.
  9. MajorDoMo и Яндекс Алиса. Алиса, включи канал Карусель.

Поделитесь в соц сетях

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

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

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

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

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

Дашборд

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

Ввод данных (управление)

Для управления (вызова управляющих воздействий на систему) у управляющих элементов предусмотрена привязка к объектам системы. Привязывать у объектов можно свойство и метод.

Например выключатель выставляет привязанное к нему свойство в 1 или 0, в зависимости от его состояния. В зависимости от этого можно выполнить метод объекта 2мя способами:

  1. Связать его в свойстве класса с методом. Тогда запуск метода будет происходить при любой смене значения свойства (даже если значение поменялось на точно такое-же).
  2. Указать метод в поле связанного метода при создании выключателя. Тогда он будет вызываться только при щелчке выключателем. Любые другие манипуляции со свойством (из сторонних скриптов или методов) — не будут приводить к вызову выбранного метода. Но в этих же скриптах или методах можно вызвать ваш метод отдельно.

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

Аналогично привязываются и другие элементы. Просто передают разные значения в выбранное свойство. «Текстовое поле» к примеру передаёт набранный текст, Выбор времени — время, и т.д.

Из html-элементов так же можно вызывать управляющие действия. Вот пример картинки, которая по клику вызывает метод MethodName объекта ObjectName по клику.

<a href=»#» onClick=»$.get(‘/objects/?object=ObjectName&op=m&m=MethodName’);return false;» > <img src=»/img/icons/status/%ObjectName.icon%_%ObjectName.status%.png» align=»absmiddle»> </a>

1 2 3

<ahref=»#»onClick=»$.get(‘/objects/?object=ObjectName&op=m&m=MethodName’);return false;»>

<img src=»/img/icons/status/%ObjectName.icon%_%ObjectName.status%.png»align=»absmiddle»>

<a>

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

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

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

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).

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

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

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

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

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(‘Контекст забыт.’);

Логи системы и модулей

При функционировании MajorDoMo ведется несколько видов логов (журналов событий), которые содержат отладочную информацию или сведения об ошибках.

Условно можно выделить две категории логов – внутренние логи самого MajorDoMo и внешние логи прикладных сервисов и операционной системы, так или иначе связанных с работой MajorDoMo (web-сервер Apache, база данных MySQL/MariaDB).

Состав и размещение внутренних логов почти не различается между инсталляциями на Windows или Linux. Состав и размещение внешних логов зависит от используемой операционной системы.

Внутренние логи

Внутренние логи MajorDoMo представлены логом главного цикла (cycle.php), логами системных циклов и модулей (/scripts/cycle_*.php) и debmes-логами ядра и модулей.

Все внутренние логи, за исключением лога главного цикла, размещаются в каталоге /cms/debmes и хранятся в виде текстовых файлов с расширением *.log или *.txt. Для их просмотра в web-интерфейсе Панели управления необходимо воспользоваться вкладкой Debug модуля X-Ray. В выпадающем списке можно выбрать требующийся лог, и он будет загружен для просмотра.

Также их можно открыть в любом текстовом редакторе, перейдя в файловом менеджере (проводнике) в каталог /cms/debmes.

Лог главного цикла на Windows платформах не пишется в файл, а выводится в реальном времени в окно командной строки (start.bat).

На Linux платформах наличие и место размещения лога главного цикла зависит от конкретного способа реализации его автозапуска (юнит systemd, демон init.d, crontab, rc.local). Как вариант это могут быть файлы majordomo.err и majordomo.log в каталоге /var/log (актуально на официальном образе для Raspberry Pi).

При реализации автозапуска главного цикла через юнит systemd лог можно просмотреть в консоли постранично с помощью команды

journalctl -u majordomo

1 journalctl-umajordomo

или в реальном времени командой

journalctl -f -u majordomo

1 journalctl-f-umajordomo

Следует помнить, что некоторые модули имеют встроенные настройки логирования. Поэтому предварительно требуется их включить, если это необходимо. При штатной работе модулей любое логирование рекомендуется выключать.

Чтобы включить логирование работы циклов, необходимо в файле конфигурации MajorDoMo (config.php) раскомментировать (при наличии) или добавить такую строку.

Define(‘LOG_CYCLES’, 1);

1 Define(‘LOG_CYCLES’,1);

Затем сохранить изменения в файле и перезапустить службу MajorDoMo для применения изменений и перезапуска всех циклов.

Внешние логи в ОС Windows

Лог web-сервера Apache располагается в файле apache_error.log в каталоге c:\_majordomo\server.

Либо в файлах access.log и error.log в каталоге c:\_majordomo\server\Apache\logs (зависит от конфигурации виртуального сервера Apache).

Логирование работы базы данных MySQL/MariaDB по умолчанию не выполняется.

Внешние логи в ОС Linux

Логи web-сервера Apache располагаются в файлах access.log и error.log в каталоге /var/log/apache2.

Логирование работы базы данных MySQL/MariaDB по умолчанию не выполняется, но если его включить в конфигурационном файле БД, то логи будут находиться в каталоге /var/log/mysql.

Заключение

В качестве заключения подытожим.

  1. Список каталогов с логами: — /cms/debmes — c:\_majordomo\server — c:\_majordomo\server\Apache\logs — /var/log — /var/log/apache2 — /var/log/mysql
  2. При обращениях для решения возникающих проблем на форуме, телеграм-чате или в Connect следует прилагать к своему вопросу данные из соответствующих логов.
  3. Следует следить за размером логов и контролировать их ротацию, чтобы не исчерпать свободное место на системном разделе карты памяти или жесткого диска, а также вовремя реагировать на ошибки, фиксируемые в журналах событий.

Поделитесь в соц сетях

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

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

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

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

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

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

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

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

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

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

Сервера «умного дома»

Мажордомо

Сайт проекта MajordomoПреимущества:

  • Ориентировано в основном на бывший СССР, т.к. поддержка на русском.
  • PHP знаком многим.
  • Много модулей, ориентированных на доступные в экс-СССР сервисы и железки.
  • Есть образы под Raspberry Pi
  • Мультиплатформер: Линукс-Винда-АРМы

Недостатки

  • Установка по инструкции — не всегда дает результат, даже если ты систему переставлял сто раз до этого.
  • Образ под Малину имеет некоторые модули, которые автор образа поставил до того, как накатал образ…
  • База для системы разворачивается через PHP MyAdmin…
  • Некоторые модули давно не поддерживаются, некоторые кривовато написаны и могут загнать процессор под 100% нагрузку, при том, что вроде как всего раз в час получают какую-то информацию…
  • «Защита? Какая защита?! Умный дом не должен иметь доступа из инета!»

Home Assistant

Плюсы

  • Просто ставится.
  • Из коробки подхватывает сразу как МиХоум устройства, так и имеющие прошивку ESPHome.
  • Довольно гибкая настройка логики без программирования как такового.
  • Мультиплатформер: Винда, Линь, АРМы

Минусы

  • С документацией напряг, особенно на русском.
  • Концепция настроечных файлов на начальном этапе слегка напрягает.
  • Заточенных под Яндекс погоду, курсы валют и некоторые «местные» сервисы модулей нет, или я их пока не нашел…

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

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

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

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

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

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


С этим читают