Постоянно получаю вопрос: как убрать фразу “Неизвестная команда”? Обычно такая необходимость появляется после того как вы начинаете использовать модуль API.AI. К сожалению если в шаблонах поведения такая команда не найдена, но она найдена в API.AI, то фраза “Неизвестная команда” всё равно будет выполнена, что не есть хорошо. Самый простой выход, это закомментировать эту строчку. Делается это вот где:
Объекты -> класс "Computer" -> метод "commandReceived", листай в самый низ и комментируем строчку.
В 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 это пришлось сделать вручную. Как для включения так и для выключения.
С чем связана такая выборочная работа я так и не понял. Если у вас есть предположения, то я буду рад выслушать любые соображения. А пока все могут пользоваться моим предложенным решением.
Как режимы могут влиять на статусы можно прочитать в одном из моих предыдущих постов.
Если вы устанавливали Мажордомо используя 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("Оптимизация бд выполнена");