Если вы устанавливали Мажордомо используя 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("Оптимизация бд выполнена");
Ребята, вы молодцы, видео набрало более 100 лаков и я как обещал выпустил вторую часть видео про компьютерное зрение в Мажордомо. Теперь любой у кого есть камера, датчик двери или датчик движения может настроить компьютерное зрение в своём умном доме абсолютно бесплатно.
Нейронная сеть и исходные коды: https://github.com/Gelezako/FaceDetectMajordomo
Этот модуль реализует поддержку протокола SSDP для поиска устройств в сети, после того как сервер и рендер обнаружены необходимо узнать какие сервисы они предоставляют. Этим занимается протокол UPnP, он так же реализован в рамках модуля. Далее в работу вступает стандарт DLNA, который так же частично реализован, но пока работает не со всеми устройствами. С помощью него можно с сервера передавать на рендер медиа ресурс для воспроизведения. Другими словами включать фильм, музыку или просматривать фото. Есть множество производителей, которые используют этот стандарт, но каждый производитель поставляет свой интерфейс и не всегда корректно работает с устройствами других производителей. Этот модуль оппытка создать единый интерфейсс для управления всеми устройствами с одного места.
Мажордомо модуль
Типы устройств
После установки модуля и сканирования сети модуль может найти несколько устройств, которые поддерживают выше описанные стандарты, но вы даже не подозревали что они у вас есть. Итак, существует несколько типов устройств:
рендер (телевизор, ресивер, смарт динамик типа Google Home, Sonos, не смарт динамик если подключён Chromecast, совместимый плеер на компьютере
сервер (медиа танк, медиа хранилище (synology, plex), компьютер с установленным софтом типа Kodi, Windows Media Player итд)
DIAL устройство (Google Home)
простое устройство
роутер
Нас интересуют первые три. Рендер – это там где будет воспроизводится файл. Сервер – место где файлы хранятся. DIAL устройство – по сути является рендером, но имеет свои архитектурные особенности в способе получения файла, поэтому разработчик принял решение вынести его в отдельный тип устройств, но это тот же рендер. Простое устройство (Basic) – лично у меня распознаётся как роутер и не несёт никакой полезной для нас функциональности, но т.к. роутер поддерживает этот стандарт мы обязаны его показать. Роутер – это тоже простое устройство, но уже сообщает о себе больше информации, например предоставляет список сервисов. Существуют роутеры, которые на борту имеют винчестер и они могут выступать в роли сервера, поэтому они вынесены тоже в отдельный тип. Стоит заметить что SSDP\UPnP\DLNA совместимые устройства могут представлять собой любой компьютер с установленным софтом, который реализует эти протоколы. Поэтому протестироват работу модуля может любой человек у которого есть компьютер и\или телефон. И вам не обязательно иметь дорогие телевизоры, ресиверы и смарт колонки.
Функциональность модуля
После окончания сканирования необходимо добавить устройство. Нажимаем плюсик и в самом низу видим список чекбоксов: Создать простое устройство – используя модуль “ПУ” автоматически будет создан объект с нужными свойствами и вам останется лишь выбрать его в поле “Связанный объект” и нажать кнопку “Сохранить”. Создать устройство онлайн – IP адресс устройства будет автоматически добавлен в модуль pinghosts и в зависимости от настроект в этом будуле будет проверяться доступность устройства. Если устройство будет не доступно, то будет озвучиваться фраза “Устройство такое-то пропало из сети, возможно его отключили”. Если вы не хотите этого – уберите галочку напротив этой настройки. Создать терминал устройства – IP адресс устройства будет автоматически добавлен в модуль terminals и потернциально можно будет использовать как терминал, главное выбрать правильную настройку “Тип плеера”. Хочу заметить что не все SSDP\UPnP\DLNA устройства автоматически будут работать как терминал. Использовать для воспроизведения системных сообщений – не уверен, но предполагаю что настройка будет работать если устройство добавлено как терминал и корректно работает с модулем terminals. Выбираем нужные настройки и сохраняем, поотом не закрывая вкладку выбираем только что созданный объект в поле “Связанный объект” и нажимаем сохранить ещё раз. Если этого не сделать, то устройство не будет добавлено. Ту же самую процедуру проделываем со всеми остальными устройствами. Одно и то же устройство может выступать одновременно и сервером и рендером. После этого переходим в модуль “Простые устройства”. В фильтре выбираем “UPNP Медиасервер” и нажимаем кнопку “Получить список файлов”. Далее в фильтре выбираем “UPNP Устройство воспроизведения”, в выпадающем списке выбираем тип файла, потом сервер, потом сам файл и нажимаем плей. Если после нажатия кнопку “Получить список файлов” вы не увидели сообщение о том что файлы найдены, то в списках у вас будет пусто. Вам необходимо настроить на сервере список доступных файлов. Для каждого софта и устройства это делается по разному, поэтому гуглите :). В настройках “ПУ” можно добавить панель устройства воспроизведения (рендера) сразу на сцену.