Программные модули-клиенты

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

sh-bot

Программа предназначена только для обслуживания низкоскоростных коммуникаций и поддерживает низкоскоростные протоколы обмена по сетям RS-485. Дополнительно, в зависимости от платформы, может обслуживать линии 1-wire, собственные извращенные последовательные порты raspberry pi и его клонов, а так же псевдо-сенсоры обращения по ftp (для гаджетов, сигналящих о событии посредством обращения к ftp серверу). Настройки обслуживаемых линий осуществляются в главной Базе Данных (БД) и автоматически обновляются через заданный интервал (по умолчанию - раз в минуту).

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

Не используя никаких дополнительных библиотек, программа свободно работает на любых вменяемых ОС на процессорах имеющих архитектуру intel, arm, mips (различные варианты сборки).

sh-camd

Отдельный модуль для обработки изображения с IP камер видео наблюдения, имеющих возможность формировать на выходе картинку в формате JPEG.

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

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

В командной строке программы задаются:

Как и sh-robot, программа практически всеядна по платформам, за исключением некоторых реализаций mips.

sh-spkd

Представляет собой интерфейс передачи текстов от сервера к TTS системе. По сути, может быть сделана и на bash скриптах, но ввиду наличия уже созданных библиотек, собрана как исполняемый модуль. Базовая реализация использует TTS Festival, но может работать с любой системой озвучки текста.

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

sh-goblin и sh-goblin-sphinx

Свое название (hobgoblin) получила за свойства, присущие домовым, - подслушивает, подсматривает и исполняет вежливые просьбы жильцов, хоть иногда и шалит...

Программа включает в себя весь функционал уже описанных, с небольшими изменениями и дополнениями. Она, благодаря мультимедийному фреймворку FFMPEG, способна работать не только с сетевыми камерами, но и обслуживает локальные ресурсы мультимедиа - микрофоны, usb web камеры, аналоговые видео входы. Два варианта сборки имеют отличия в способности распознавания голосовых команд. Второй вариант опирается на дополнительную библиотеку PocketSphinx, имеющую реализации отнюдь не под все платформы, хоть и достаточно распространенную.

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

В отличии от sh-camd, домовой не поддерживает связи с опрашиваемыми IP камерами. Сделано это для минимизации количества потоков внутри программы. В результате, увеличивается временной лаг, но все еще в приемлемых границах. Однако, благодаря своей мультимедийной начинке, программа способна поддерживать более тесные отношения с камерами, постоянно читая их видео поток и мгновенно формируя картинки по запросу от сервера. В этом режиме, задержка зависит от наличия звука в потоке от камеры (замедляет формирование сигнала на накоплении сэмплов в буфере для сжатия) и от типа кодека. В случае трансляции MJPEG без звука, задержка практически отсутствует.

Кроме параметров командной строки, программа имеет два настроечных файла: sh-hobgoblin.ini и sh-hobgoblin-inputs.ini. Первый банален - содержит общие настройки программы, а второй гораздо забавнее - в нем прописаны источники мультимедиа, обрабатываемые постоянно. При запуске, домовой подключается к ним и выполняет требуемые действия - слушает звуки и гоняет видео. Причем, прослушка команд может выполняться не только с локальных микрофонов, но и с удаленных IP камер, что позволяет покрыть сетью звуковых датчиков достаточно большое пространство.

Голосовое управление - не игра, а вполне ощутимый кусок комфорта. Но и ему присущ некий недостаток - наш домовой не любит лишнего шума. Это может вызвать как ложные срабатывания (шалит паршивец!), так и замедлить реакцию на команды (программа ждет тишины, как окончания фразы). Естественно, хоровое управление также невозможно.

Платформы - любые, поддерживающие FFMPEG, и, в случае необходимости распознавания речи, CMU PocketSphinx.

Настройки...

sh-client

Пользовательский интерфейс системы, работающий в linux и windows. Небольшая иконка в трее открывает доступ к полноразмерному изображению с камер и спискам состояний датчиков.

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

Для работы в Unity (Ubuntu), требует установки libappindicator1.

sh-mailer

Программа рассылки текстовых сообщений по электронной почте (или отправки SMS посредством e-mail сервиса ОпСоС).

Настройки содержатся в файле sh-mailer.ini и содержат url сервера и параметры SMTP клиента.

sh-monitor

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

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