Поделюсь опытом вывода изменяющейся текстовой информации на экран avreg-mon, может кому пригодится...
Как-то осталась незадействованная камера в раскладке avreg-mon (12 камерная на широкий экран, а источников 11), дабы не любоваться на черный квадрат в углу экрана, решил туда выводить различную полезную информацию (для начала, температуру на улице).
Для таких случаев разработчиками любезно написан пакет webcam-emu - эмулятор MJPG ip-камер, который "показывает" jpeg файл как настоящая камера, причем можно перезаписывать jpeg файл "на лету" - webcam-emu реагирует на это спокойно и начинает транслировать новое изображение (при работе в jpeg).
Установка и настройка webcam-emu http://avreg.net/manual_tuning_webcam-emu.html, в конфигурационном файле /etc/webcam-emu.yaml сменил корневой каталог
JpegsRoot: '/run'
Для получения температуры использовался проект DigiTemp https://www.digitemp.com/ и датчики температуры DS18B20. Настройка этого чуда подробно описана в интернете, для упрощения конструкции использовал не COM порт (к нему надо допаивать различные примочки для согласования уровней), а переходник USB -> UART - TTL уровни на выходе и есть 5 вольт, замыкаем контакты RX и TX и подключаем датчик (параллельно можно подключить несколько датчиков).
Опрашиваем все подключенные датчики и записываем в файл конфигурации:
sudo digitemp_DS9097 -i -s /dev/ttyUSB0 -c /etc/digitemp.conf
проверка (для 0 – го датчика в этой конфигурации):
sudo digitemp_DS9097 -t 0 -s /dev/ttyUSB0 -q -o "%.1C" -c /etc/digitemp.conf
появившаяся цифра – температура датчика в Цельсиях.
Далее все скрипты и команды приведены для моего конкретного случая, домашняя директория /home/user/
Если все нормально добавляем задание в cron
sudo crontab –e
*/5 * * * * /usr/bin/digitemp_DS9097 -t 0 -s /dev/ttyUSB0 -q -o "%.1C" -c /etc/digitemp.conf > /home/user/temp.txt
(раз в 5 минут считываем температуру и заносим в файл /home/user/temp.txt )
Для наложения текста на изображение использовал пакет ImageMagik - консольный редактор графики
Устанавливаем
sudo apt-get install imagemagick
Создадим скрипт наложения текста на jpeg кадр
nano /home/user/pic.sh
#!/bin/sh
#создаем директории в папке run
mkdir /run/800x600/
mkdir /run/800x600/color
#Следующее действие на любителя - скачиваем с реальной камеры avreg – а jpeg изображение - заготовку на которое наложим температуру
wget --user=install --password=install --limit-rate=10k -O /run/800x600/temp.jpg http://192.168.1.100:874/avreg-cgi/jpg/image.cgi?camera=1
#Присвоим переменной temp значение температуры, находящееся в файле /home/user/temp.txt
temp=$(cut -f3 -d: /home/user/temp.txt)
#Наложим значение переменной temp в левый верхний угол файла /run/800x600/temp.jpg и сохраним в /run/800x600/color/01.jpg
# размер –pointsize, положение –annotate, цвет рамки '#000000'
convert /run/800x600/temp.jpg -font courier-bold -fill white -box '#000000' -pointsize 160 -annotate +5+110 "$temp"'°C' /run/800x600/color/01.jpg
#КОНЕЦ СКРИПТА
даем права на выполнение скрипта
sudo chmod +x /home/user/pic.sh
запускаем
sudo /home/user/pic.sh
В результате работы скрипта создается файл /run/800x600/color/01.jpg с наложенной надписью температуры.
Добавляем задание в cron
*/1 * * * * /home/user/pic.sh; /bin/sleep 30; /home/user/pic.sh
Изображение будет перезагружаться в файл /run/800x600/color/01.jpg примерно раз в 30 секунд.
AVREG настройки:
InetCam_IP*** 127.0.0.1
InetCam_http_port** 60001
V.http_get /axis-cgi/jpg/image.cgi?resolution=800x600&color=1&fps=1
В продолжении темы - пожаловались юзеры, что дескать, видео у Нас на телевизоре, и приходится к нему подходить, чтоб Ваше мелкое время с датой разглядеть
(не у всех денег хватает на специально-обученных охранников у мониторов), да и хочется температуру в бассейне и в парилке лицезреть на одном экране, прежде чем туда идти...
Задача для человека с высшим инженерным образованием вполне решаема...
На данной даче работает роутер в режиме AP WI-FI, avreg функционирует на отдельной машине в адресном пространстве беспроводного маршрутизатора.
Было принято решение о передаче данных по WI-FI (можно было хорошо бабла срубить на проводах, но я - принципиальный человек!)
Покупаем чудо - роутер TP-LINK TL-MR3020 - маленький и недорогой
к примеру, здесь: http://www.svyaznoy.ru/catalog/homenet/7017/1489815
прошиваем OR-WRT http://roboforum.ru/wiki/OR-WRT_0.75alpha, а здесь подробней о прошивке http://habrahabr.ru/post/166373/
Скрипт crontab роутера:
#формируем файл /www/voda.txt c температурой от 1 - го датчика
*/1 * * * * /usr/bin/digitemp_DS9097 -t 1 -s /dev/ttyUSB0 -q -o "%.1C" -c /etc/digitemp.conf > /www/voda.txt
Следующий скрипт на стороне приемника:
#!/bin/sh
mkdir /run/temp/
mkdir /run/temp/color
sleep 15
wget -O /run/temp/voda.txt http://192.168.54.110/voda.txt
wget -O /run/temp/ban.txt http://192.168.54.110/ban.txt
time=$(date +%H:%M)
temp=$(cut -f3 -d: /run/temp/temp.txt)
voda=$(cut -f3 -d: /run/temp/voda.txt)
ban=$(cut -f3 -d: /run/temp/ban.txt)
convert -background black -fill white -font courier-bold -pointsize 270 -size 800x600 caption:"$time" \
-pointsize 100 -annotate +1+355 "Улица:$temp"'°C' -annotate +1+455 "Вода: $voda"'°C' -annotate +1+555 "Баня: $ban"'°C' /run/temp/color/01.jpg