Часть#2: Компьютерное зрение в умном доме

Average Rating
0 out of 5 stars. 0 votes.

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

Нейронная сеть и исходные коды: https://github.com/Gelezako/FaceDetectMajordomo

Кто не видел первую часть, советую ознакомится:

Average Rating
0 out of 5 stars. 0 votes.

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

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.

Голосовое управление радио на 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.

Сообщения “Никого нет дома” и “Кто-то есть”

Average Rating
0 out of 5 stars. 0 votes.

С текстом “Никого нет дома” и “Кто-то есть” у пользователей Мажордомо возникает часто вопрос, наподобие такого: “Почему Мажордомо пишет что “Никого нет дома”, но на самом деле я дома?”. Давайте разбираться. Для начала необходимо понять какое свойство у вас используется для отображения этого состояния. Для этого необходимо зайти в раздел “Меню управления”, далее выбрать “State”. В разделе “Данные” необходимо найти отвечающую за отображение нашего текста переменную. Это может быть либо %ThisComputer.somebodyHomeText% либо %ThisComputer.HomeStatus%. Оба эти свойства инициализируются похожими состояниями. Что заметил лично я? Например если добавить датчик движения через “Простые устройства”, привязать его к определённому помещению, например Гостиная, то при срабатывания датчика в свойство ThisComputer.somebodyHomeText будет дописано значение “Активность: 15:39 (Гостиная)”. Такое же поведение будет для датчика открытия, если он добавлен через простые устройства и в настройке “Изменение означает активность в помещении” выставлено значение “Да”. Подозреваю что такое же поведение будет для реле, но у меня нет ни одного. Если вы знаете другие способы инициализации этих свойств, то поделитесь знаниями в комментариях.

Average Rating
0 out of 5 stars. 0 votes.

А вы знаете как выключить режим “Ни кого нет дома”?

Average Rating
0 out of 5 stars. 0 votes.

Для того что бы выключить режим “Ни кого нет дома” необходимо выполнить:
sg("NobodyHomeMode.active",0);
либо зайти в раздел “Объекты“, найти класс “OperationalModes“, открыть объект “NobodyHomeMode” и поменять ему свойство “active” в значение ноль. После этого Алиса просигнализирует в чат: “Режим Никого нет дома выключен”. Стоит заметить что бы Мажордомо правильно указывал в чате режим, необходимо вписать его название в свой свойство “title“. Так же через это свойство вы можете изменить название режима по-умолчанию, либо добавить свой режим.

Точно так же будет работать изменение значения свойства “active” для любого другого объекта из класса “OperationalModes“.

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

 

Average Rating
0 out of 5 stars. 0 votes.