Оптимизация БД в Мажордомо

Average Rating
0 out of 5 stars. 0 votes.

Если вы устанавливали Мажордомо используя Windows инсталятор, то скорей всего у вас не был включён в поставку сценарий оптимизации базы данных. Особенно полезно его применение я так подозреваю для тех кто пользуется модулем GPS. Но, если вы откроете метод “onNewMinute”, то сможете обнаружить что он пытается вызвать его каждую ночь в 3 часа.

if (timeIs("03:00")) {
runScript("systemMaintenance");
}

Но если в разделе “Сценарии” у вас нет “systemMaintenance”, то скорей всего он не запускается. Итак, исправляет эту оплошность. Создаём новый сценарий с одноимённым именем и вставляем в него следующий код:

require(ROOT.'scripts/startup_maintenance.php');
// optimize gps
$records=SQLSelect("SELECT ID, DEVICEID, LOCATION_ID FROM gpslog ORDER BY DEVICEID, ADDED DESC");
$total=count($records);
$to_delete=array();
for($i=1;$i<$total-1;$i++) {
if (!$records[$i]['LOCATION_ID']) continue;
if "($records[$i]['LOCATION_ID']=" =$records[$i+1]['LOCATION_ID'] && "$records[$i]['LOCATION_ID']=" =$records[$i-1]['LOCATION_ID']) {
//$to_delete[]=$records[$i]['ID'];
SQLExec("DELETE FROM gpslog WHERE "ID" =".$records[$i]['ID']);
}
}
// optimize phistory
getURL('http://localhost/scripts/optimize_history.php',0);
say("Оптимизация бд выполнена");

Average Rating
0 out of 5 stars. 0 votes.

Про режимы MajorDomo

Average Rating
0 out of 5 stars. 0 votes.

В MajorDomo есть класс “OperationalModes”, который отвечает за логику режимов. В нём по умолчанию есть почти полный набор режимов, который понадобится любому пользователю.

  • DarknessMode – Режим тёмного времени суток
  • EconomMode – Эконом режим
  • GuestsMode – Гостевой режим
  • NightMode – Ночной режим
  • NobodyHomeMode – Режим “никого дома”
  • SecurityArmedMode – Режим безопасности

Если вы используете индикаторы режимов на сценах, то могли заметить что некоторые режимы можно включить\выключить по клику на сцене, а некоторые нет. Я до конца не понял в чём причина, но грешу на инклуды “простых устройств” в методах активации и деактивации режимов. Проблему решил принудительным выставлением свойства active. Например для неработающего выключателя индикатора для режима “никого дома” я дописал в метод deactivate:

/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/nobodyhomemode_deactivate.php');
/* end injection of {SDevices} */
sg("NobodyHomeMode.active","0");

После этого индикатор стал корректно выключаться.

А вот метод активации activate по какой-то причине у меня нормально активировался и дополнительно включать его не требовалось. Но для режима DarknessMode это пришлось сделать вручную. Как для включения так и для выключения.

С чем связана такая выборочная работа я так и не понял. Если у вас есть предположения, то я буду рад выслушать любые соображения. А пока все могут пользоваться моим предложенным решением.

Режимы в Мажордомо

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

Практическое применение режима безопасности я демонстрирую во в этом видео:

Average Rating
0 out of 5 stars. 0 votes.

Как убрать фразу “Неизвестная команда”?

Average Rating
0 out of 5 stars. 0 votes.

Постоянно получаю вопрос: как убрать фразу “Неизвестная команда”? Обычно такая необходимость появляется после того как вы начинаете использовать модуль API.AI. К сожалению если в шаблонах поведения такая команда не найдена, но она найдена в API.AI, то фраза “Неизвестная команда” всё равно будет выполнена, что не есть хорошо. Самый простой выход, это закомментировать эту строчку. Делается это вот где:

Объекты -> класс "Computer" -> метод "commandReceived", листай в самый низ и комментируем строчку.

Average Rating
0 out of 5 stars. 0 votes.

Голосовое управление радио на Xiaomi Gateway

Average Rating
0 out of 5 stars. 0 votes.

Что бы реализовать голосовое управление радио, вам необходимо установить модуль Xiaomi miIO, в настройках для Xiaomi Gateway указать ваш токен. Как получить токен вы можете прочитать вот тут. Далее в разделе “Объекты” создать все свойства, которые перечислены в модуле Xiaomi miIO для устройства Xiaomi Gateway на вкладке “Радио”. После чего в модуле выбрать из выпадающих списков только что созданные свойства, тем самым вы привяжите их.
Уже сейчас можно начать переключать каналы, но нам нужны наши радио станции, а не китайские. Самый просто способ на мой взгляд, это добавить DNS сервер что обеспечит нам наш набор радио в приложении Mi Home. Как это настроить можно прочитать вот тут. После этого, открываете приложение Mi Home,выбираете любимое радио, обновляете страницу модуля Xiaomi miIO и в свойство current_program попадёт номер радио станции. Записываем его. Повторяем процедуру с выбором другого радио и так пока не соберём номера всех нужных нам радио станций. Имея эти номера уже можно писать сценарии и добавлять кнопочки на сцену.

Average Rating
0 out of 5 stars. 0 votes.

Новый модуль Yeelight

Average Rating
0 out of 5 stars. 0 votes.

Написал новый модуль для счастливых владельцев лампочек от компании Yeelight. Опытный пользователь скажет что уже есть замечательный модуль Xiaomi miio, с помощью которого уже можно управлять этими лампочками. Но основная проблема для начинающих заключается в том что необходимо узнать токен для управления этой лампочкой. Но если вы будете использовать модуль Yeelight, то вам не нужно будет узнавать никаких токенов. Вам достаточно будет через официальное приложение добавить лампочку, выставить настройку “управление по локальной сети”.

После этого все лампочки появятся в интерфейсе автоматически и сразу доступны для управления. Модуль даже сам создаст все объекты, поддерживаемые свойства и методы. Но вот многие модули, включая Xiaomi miio, Xiaomi home, реализованы так что, нужно либо с помощью “простых устройств” либо самому ручками создать класс, объект, свойство, метод, а уже потом привязывать их в модулях. Но мой модуль не перекладывает это на пользователя, как и предыдущие мои модули, он делает это за пользователя сам, что бы максимально сузить телодвижения и скрыть процесс настройки. В конечном итоге пользователь получает готовый код, с помощью которого он уже может управлять устройством, создавать контролы на сцене либо нужные ему сценарии.
На скриншоте ниже продемонстрирован вывод красным шрифтом готовых команд для управления в качестве примера.

Если вам понравился модуль, не забудьте кликнуть “спасибо”, вот в этом посте на форуме.

Видео урок, в котором я использовал свой модуль:
Свои сложные сценарии работы для Yeelight ленты и лампочки в Majordomo

Average Rating
0 out of 5 stars. 0 votes.