Выводим температуру на экран в avreg-mon через webcam-emu

250 views
Skip to first unread message

Данил

unread,
Oct 19, 2014, 7:44:26 PM10/19/14
to avreg...@googlegroups.com

Поделюсь опытом вывода изменяющейся текстовой информации на экран 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

Данил

unread,
Oct 19, 2014, 7:50:35 PM10/19/14
to avreg...@googlegroups.com
Да вот что получилось:

понедельник, 20 октября 2014 г., 3:44:26 UTC+4 пользователь Данил написал:
vlcsnap-2014-10-20-03h19m31s6.png

Игорь

unread,
Oct 19, 2014, 10:10:59 PM10/19/14
to avreg...@googlegroups.com
Интересная мысль. Я так понимаю, что в avreg интегрированы функции наложения текста на кадр, но не помешало бы их расширить, добавив наложение свободной информации из определенного файла.
У меня стоит датчик уличной температуры, но подключен в контроллеру. Считать данные можно по ModbusTCP. Но наложение желательно с прозрачным фоном, что бы под данными было видно видео. Иначе добавляем мертвую зону.
Что скажет avreg-support?

понедельник, 20 октября 2014 г., 5:50:35 UTC+6 пользователь Данил написал:

Andrey Nikitin

unread,
Oct 20, 2014, 12:35:06 AM10/20/14
to avreg...@googlegroups.com
Игорь писал(а):
> Что скажет avreg-support?
На камере это нужно делать.
У нормальных камер была и есть такая возможность.
Слышал что и некоторые китайские подтягиваются в плане этой функции
(динамического оверлея).
Если делать врезку на стороне аврега, то видео однозначно
придётся декодировать и кодировать. А это нынче (FullHD и т.п.) дурной
тон.

Konstantin

unread,
Oct 20, 2014, 1:54:50 AM10/20/14
to avreg...@googlegroups.com
баловался добавлением произвольных титров во внешние камеры беварда типа 4070-4330 командой

curl "http://$USER:$PASS@$HOST/cgi-bin/videooverlay.cgi?overlaydate=1&overlaydateposition=3&overlaytime=1&overlaytext=0&overlaystringposition=1&textstring=&overlaysubtitle=0&overlaysubtitleposition=2&Subtitle1=&Subtitle2=&Subtitle3=&Subtitle4=&Subtitle5="

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

Andrey Nikitin

unread,
Oct 20, 2014, 1:58:47 AM10/20/14
to avreg...@googlegroups.com
Konstantin писал(а):
> баловался добавлением произвольных титров во внешние камеры беварда типа
> 4070-4330 командой

Промахнулись, я полагаю, ибо сообщение уместнее в рассылке, а не для
одного меня, лично :)

Konstantin

unread,
Oct 20, 2014, 2:00:54 AM10/20/14
to avreg...@googlegroups.com
очевидно да, ибо в рассылку писал.

понедельник, 20 октября 2014 г., 11:58:47 UTC+6 пользователь avreg-support написал:

Игорь

unread,
Oct 20, 2014, 2:10:50 AM10/20/14
to avreg...@googlegroups.com
а как сейчас осуществляется врезка временных меток?

понедельник, 20 октября 2014 г., 11:54:50 UTC+6 пользователь Konstantin написал:

Konstantin

unread,
Oct 20, 2014, 3:10:25 AM10/20/14
to avreg...@googlegroups.com
на камерах включено "показывать дату и время", это overlaydate и overlaytime, равные 1

понедельник, 20 октября 2014 г., 12:10:50 UTC+6 пользователь Игорь написал:

Игорь

unread,
Oct 20, 2014, 6:21:11 AM10/20/14
to avreg...@googlegroups.com
Так я об этом и спрашиваю. Сейчас реализована функция наложения даты и времени на видео. Что мешает добавить еще одну строку, которую считывать из файла?

понедельник, 20 октября 2014 г., 13:10:25 UTC+6 пользователь Konstantin написал:

Konstantin

unread,
Oct 20, 2014, 3:04:05 PM10/20/14
to avreg...@googlegroups.com
на сколько помню, наложение в авреге работает только при декодировании видеопотока, когда я в последний раз пробовал, четыре потока от 2-х мегапиксельных (1920*1080*25кадров) камер ложили в полку кору и5, а размеры файла с видео после перекодирования поражали воображение, а так используется кодирование процем камеры, а на компе это видео просто складывается уже пожатое. В таком режиме у меня сейчас работают серверами миниИТХ компы на интелатоме, которые собирают видео с 40-50 камер.

понедельник, 20 октября 2014 г., 16:21:11 UTC+6 пользователь Игорь написал:

Игорь

unread,
Oct 20, 2014, 9:59:02 PM10/20/14
to avreg...@googlegroups.com
у меня аналоговые камеры подключенные к плате видеозахвата. И зазрешение 720*576

вторник, 21 октября 2014 г., 1:04:05 UTC+6 пользователь Konstantin написал:

Данил

unread,
Oct 22, 2014, 1:29:16 AM10/22/14
to avreg...@googlegroups.com
Так может добавите в последующих версиях функцию динамического оверлея для камер, которые аврег c video4linux захватывает, все равно же приходится кодировать видео при захвате с бюджетных плат, TV тюнеров (без аппаратной кодировки). Тут вот кто-то хотелку высказывал чтоб позиции чека при продаже записывались - функция то не бесполезная.

понедельник, 20 октября 2014 г., 8:35:06 UTC+4 пользователь avreg-support написал:

Данил

unread,
Oct 26, 2014, 4:20:17 PM10/26/14
to avreg...@googlegroups.com

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

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

Задача для человека с высшим инженерным образованием вполне решаема...

На данной даче работает роутер в режиме 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


vlcsnap-2014-10-26-23h17m22s112.png

vasvk vasvk

unread,
Oct 29, 2014, 1:36:19 PM10/29/14
to avreg...@googlegroups.com
   Господа, а вот интересует такой вариант:

1) берем неким скриптом температуру с определенного сайта интернета
2) вставляем эти данные температуры а Аврег

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

vasvk vasvk

unread,
Oct 30, 2014, 7:01:28 AM10/30/14
to avreg...@googlegroups.com
Обращение к accuweather
возвращает xml  который разбираешь как хочешь
cityId ищем на accuweather

Игорь

unread,
Oct 30, 2014, 11:10:16 PM10/30/14
to avreg...@googlegroups.com
У меня датчик температуры на улице висит. Могу дотянуться до него через openhab (html, ....)
Камеры 3 шт. аналоговые. Хотелось бы наложение на кадр сделать без плясок с бубном, а штатными средствами avreg. Тем более, что "наложение на кадр" в avreg уже есть (время и номер камеры. Всего добавить еще одну строку для наложения в которую пользователь занесет нужную информацию.

четверг, 30 октября 2014 г., 16:01:28 UTC+5 пользователь vasvk vasvk написал:

Andrey Nikitin

unread,
Oct 31, 2014, 1:30:25 AM10/31/14
to avreg...@googlegroups.com
Игорь писал(а):
> Всего добавить еще одну строку для
> наложения в которую пользователь занесет нужную информацию.

В каком углу конкретно?
В записи и/или просмотре?

Игорь

unread,
Oct 31, 2014, 2:24:29 AM10/31/14
to avreg...@googlegroups.com
В записи, в нижней части экрана там же где и сейчас выводится название камеры и время.
Например продлить строку "Название камеры": Дата, время, (влажность, скорость ветра, еще текст)
А дату с правого нижнего угла убрать.

пятница, 31 октября 2014 г., 10:30:25 UTC+5 пользователь avreg-support написал:

Andrey Nikitin

unread,
Oct 31, 2014, 2:36:22 AM10/31/14
to avreg...@googlegroups.com
Игорь писал(а):
> Например продлить строку "Название камеры": Дата, время, (влажность,
> скорость ветра, еще текст)
А я, смотрю, аппетит приходит во время еды :)

Подумаем, но русский текстовый шрифт страсть как неохота делать.

dm.fedorov

unread,
Oct 31, 2014, 2:49:54 AM10/31/14
to avreg...@googlegroups.com
31 октября 2014 г., 12:36 пользователь Andrey Nikitin
<avreg-...@mail.ru> написал:
>
> Подумаем, но русский текстовый шрифт страсть как неохота делать.

Могу поделиться технологией с нашей камеры.
Вкратце: берутся векторные пропорциональные уникодные шрифты из пакетов debian.
Написана маленькая утилитка с libcairo2, которой генерятся файлы в своём простом
растровом формате.
Для наложения файлы шрифтов mmap'ятся, так что памятью набор символов
не ограничен.
Сейчас отображаются около 570 символов, включая кириллические.
С иероглифами сейчас есть проблема, но это не из-за их количества.

Игорь

unread,
Oct 31, 2014, 2:57:27 AM10/31/14
to avreg...@googlegroups.com


пятница, 31 октября 2014 г., 11:36:22 UTC+5 пользователь avreg-support написал:
Достаточно сделать английский. 
 

Andrey Nikitin

unread,
Oct 31, 2014, 3:03:28 AM10/31/14
to avreg...@googlegroups.com
dm.fedorov писал(а):
> Вкратце: берутся векторные пропорциональные уникодные шрифты из пакетов debian.
> Написана маленькая утилитка с libcairo2, которой генерятся файлы в своём простом
> растровом формате.
> Для наложения файлы шрифтов mmap'ятся, так что памятью набор символов
> не ограничен.
В любом случае, наложение глифов получается графическое, полагаю.
У нас сейчас пикселями символ рисуется прямо на Y-plane (т.е. макс.
быстро).

Но всё равно интересно. Конкретно утилитка для получения растровых
версий и способ наложения (чем конкретно пользуетесь).

dm.fedorov

unread,
Oct 31, 2014, 3:08:48 AM10/31/14
to avreg...@googlegroups.com
31 октября 2014 г., 13:03 пользователь Andrey Nikitin
<avreg-...@mail.ru> написал:
> В любом случае, наложение глифов получается графическое, полагаю.
> У нас сейчас пикселями символ рисуется прямо на Y-plane (т.е. макс.
> быстро).

Так и делается.

> Но всё равно интересно. Конкретно утилитка для получения растровых
> версий и способ наложения (чем конкретно пользуетесь).

Сам написал, все исходники доступны.
Работа с исходными шрифтами - через libcairo.

Andrey Nikitin

unread,
Oct 31, 2014, 3:10:59 AM10/31/14
to avreg...@googlegroups.com
dm.fedorov писал(а):
> все исходники доступны.
Где доступны?

dm.fedorov

unread,
Oct 31, 2014, 3:36:15 AM10/31/14
to avreg...@googlegroups.com
31 октября 2014 г., 13:10 пользователь Andrey Nikitin
<avreg-...@mail.ru> написал:
> dm.fedorov писал(а):
>> все исходники доступны.
> Где доступны?

По запросу :)

Если без сборки, только смотреть, то вот так:

git clone git://sigrand.ru/common_xw.git

Смотреть в common_xw/pkg/dffont*


Весь проект камеры целиком:

git clone git://sigrand.ru/sigticam.git
cd sigticam
./ssh2git
git submodule update --init

Далее в README*


Живое видео с этими шрифтами: http://sigrand.ru:8080/moment/

Andrey Nikitin

unread,
Oct 31, 2014, 3:51:28 AM10/31/14
to avreg...@googlegroups.com
dm.fedorov писал(а):
> Живое видео с этими шрифтами: http://sigrand.ru:8080/moment/
UV-plane у вас тоже меняются, цвет-то жёлтенький :)
А так, вполне сносно, для растра.
Reply all
Reply to author
Forward
0 new messages