Опрос


Что для Вас Умный Дом?


Результаты


Реклама


Вывод на экран ТВ сообщений Умного Дома через OpenBox HD

22/09/2011 23:42:45

Идея отображения на экране телевизора сообщений "Умного Дома" подсказана пользователем stpavel на форуме сайта. stpavel предложил отображать номер входящего телефонного звонка, который передается программной IP PBX Asterisk. В своем доме он использует спутниковый ресивер IPBox 910, который имеет возможность вывода на экран произвольного текста на уровне операционной системы. В моем OpenBox HD S5 такой возможности нет, а значит... ее нужно сделать.

Я поставил задачу немного шире. Неплохо было бы отображать на экране ТВ не только номера входящих звонков, но и другую информацию, которую Умный Дом посчитает важной. Например, можно отображать изображение с камеры вызывной панели домофона, когда с нее идет вызов, сообщать о критических ситуациях в работе систем, выводить информацию о температуре, опасном прогнозе погоды ("ожидается штормовая погода"), включении/выключении каких нибудь важных элементов дома ("включено отопление") и т.д. Речь не идет о выводе больших объемов текста, занимающих весь экран и мешающих просмотру фильмов. Имеет смысл выводить короткие сообщения на полупрозрачном фоне длительностью не более 10-15 секунд.

Для реализации поставленной задачи мне потребовалось установить компилятор для процессора STi, который используется в ресиверах OpenBox HD. Я использовал компилятор SH4 gcc от дистрибутива STLinux, установив средства разработки поверх Debian. Вообще установка STLinux на Debian не прошла гладко и потребовались некоторые манипуляции в ручном режиме. Также я скачал описание Fortis Plugin API версии 1.10, который работает с версиями прошивки 1.9.30 и выше.

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

/var/bin/showtext -t 'Incoming call: 84956063602'

Вывод на экран OpenBox HD произвольного текста
Выводим на телевизор номер входящего звонка

Эта программа работает в ресивере, а значит ее нужно запускать удаленно с сервера. Для этого можно воспользоваться простым perl-скриптом от stpavel.

#!/usr/bin/perl
use Net::Telnet ();

$t = new Net::Telnet;
$host="192.168.0.12";
$user="root";
$t->open(Host => $host,
         Port => 23);
$t->waitfor('/OpenboxS5 login:/i');
$t->print("$user");
$t->waitfor('/~ #/i');
$t->cmd("/var/bin/showtext -t '$ARGV[0]'");

Теперь для вывода входящего звонка, поступающего в Asterisk, нужно внести изменения в extensions.conf или extensions.ael (вариант stpavel).

[DID_trunk_1_default]
exten => s,1,System(/root/scripts/showtext.pl 'Incoming call: ${CALLERID(num)}' &)
exten => s,2,DIAL(SIP/102,20)
exten => s,2,Hangup()

Прекрасно, но мы пойдем еще дальше. Вызывная панель на калитке у меня подключена к Asterisk, а камера панели к ZoneMinder. Статья на эту тему уже почти написана и появится на сайте в ближайшие дни. Необходимо вывести изображение с камера вызывной панели на телевизор в момент когда была нажата кнопка вызова. Таким образом 42" плазма превращается в монитор домофона. Для этой задачи мне пришлось немного разобраться в принципах работы с изображениями на уровне API для OpenBox, а также с библиотекой libjpeg. В результате был написан plugin, который умеет выводить любое изображение на экран телевизора.

/var/bin/showpic -f /var/etc/input.jpg -s 25 -x 50 -y 70

Здесь -f (имя файла), -s (количество секунд), x (координата X на экране), y (координата Y на экране). Таким образом я могу по команде сервера (аналогично выводу текста) выводить изображение на экран телевизора с камер наблюдения, вызывной панели или любые другие картинки, заранее загруженные на сервер по протоколу FTP.

Вывод картинки на экран ТВ через OpenBox HD
Вместо Владимира Владимировича можно вывести на канале Русская Ночь изображение с домофона.

Вообще, конечно, существуют плагины для OpenBox для просмотра JPEG и вывода текста, но все они управляются пультом. Мои же плагины полезны именно в системах домашней автоматизации, когда необходимо инициировать вывод на экран текста или графики с сервера с помощью telnet.

Параметры плагинов

Usage: showtext -t <"text"> [-s <seconds> -x <screen x> -y <screen y>]
Usage: showpic -f <filename> [-s <seconds> -x <screen x> -y <screen y>]

Плагины доступны для скачивания (разработаны на API 1.10, только для версий прошивки 1.9.30 и выше):
showtext (Ver 0.1)
showpic (Ver 0.1)

Пример использования программы showpic. Вы закачали файл my_pic.jpg по FTP в каталог /var/etc/
Затем зайдите на ресивер через telnet и выполните команду:

/var/bin/showpic -f /var/etc/my_pic.jpg -x 50 -y 50 -s 20

Не забудьте установить права "+x" для запуска плагина с помощью telnet или файлового менеджера (Far, Total Commander)
Используя скрипт аналогичный приведеному выше для отображения номера входящего звонка, вы можете по какому-то событию отображать любые jpeg файлы: кадр с камеры наблюдения, фотографию человека, который зашел на территорию участка, авторизовавшись через 1-wire Touch Memory, графическое представление какого-либо сообщения от системы Умного Дома и многое другое. Файлы могут быть предварительно закачены в папку /var ресивера или же динамически загружаться по FTP в момент события. Так как ресивер подключен к Ethernet, процесс закачки файла и выполнения плагина занимает очень мало времени - менее секунды.

Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



Добавить комментарий: