Подключение IP-камер

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

Re: Подключение IP-камер

Сообщение Ko/|xo3HUk » Вт окт 20, 2015 8:48 pm

Установка motion с поддержкой rtsp на RPi

Нашёл хорошее описание на сайте: https://tyrolite.wordpress.com/2015/03/ ... p-support/
Все шаги подробно расписаны. У меня только были замечания по этим шагам - см. под спойлером.
Мои заметкиПоказать
После установки ffmpeg и перед установкой motion нужно поставить autoreconf и libjpeg-dev:

Код: Выделить всё

    sudo apt-get install autoreconf
    sudo apt-get install libjpeg-dev
При сборке motion перед вызовом ./configure нужно запустить autoreconf c ключом '-fiv':

Код: Выделить всё

    git clone https://github.com/Mr-Dave/motion.git
    cd motion
    autoreconf -fiv
    ./configure
    make
    sudo make install && ldconfig 
После того как всё установил – попробовал запустить motion:

Код: Выделить всё

motion -s
и словил ошибку:

Код: Выделить всё

motion: error while loading shared libraries: libavutil.so.55:
cannot open shared object file: No such file or directory
Нашёл решение с подробным описанием чего и где сделать чтоб стало вдруг хорошо:
https://forum.ivorde.com/ffmpeg-error-w ... -t129.html
Проверяем какие библиотеки не найдены для нашего приложения:

Код: Выделить всё

ldd `which motion`
        /usr/lib/arm-linux-gnueabihf/libcofi_rpi.so (0x76f35000)
        libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76eb5000)
        libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x76e96000)
        libjpeg.so.8 => /usr/lib/arm-linux-gnueabihf/libjpeg.so.8 (0x76e5b000)
        libavutil.so.55 => not found
        libavformat.so.57 => not found
        libavcodec.so.57 => not found
        libswscale.so.4 => not found
        libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76d2a000)
        /lib/ld-linux-armhf.so.3 (0x76f42000) 
Проверяем – а где вообще лежат эти библиотеки? (если они есть вообще :D ):

Код: Выделить всё

find /usr/local/lib/ | grep -E \
"libavutil.so.55|libavformat.so.57|libavcodec.so.57|libswscale.so.4"
        /usr/local/lib/libavformat.so.57.8.102
        /usr/local/lib/libavcodec.so.57.7.100
        /usr/local/lib/libavutil.so.55
        /usr/local/lib/libavcodec.so.57
        /usr/local/lib/libavformat.so.57
        /usr/local/lib/libswscale.so.4.0.100
        /usr/local/lib/libavutil.so.55.4.100
        /usr/local/lib/libswscale.so.4
И прописываем пути к либам:

Код: Выделить всё

sudo nano /etc/ld.so.conf
Дописываем те пути, которые не были указаны:

Код: Выделить всё

include ld.so.conf.d/*.conf
/usr/local/libevent-1.4.14b/lib
/usr/local/lib
Далее:

Код: Выделить всё

sudo ldconfig
И ЗАРАБОТАЛО!!!!

Код: Выделить всё

motion -h
motion Version Unofficial-Git-2caced3, Copyright 2000-2005 Jeroen Vreeken/Folkert van Heusden/Kenneth Lavrsen
На всякий случай - вдруг сайт этот упадёт - выложу вордовский документ здесь.
Установка Motion на RPi.zip
(21.54 КБ) 290 скачиваний
Сейчас ищу пути - как это всё правильно с МЖД состыковать, чтобы на сайте можно было видео с камеры посмотреть (или слайдшоу из картинок - пока не определился). И как лучше писать видео/картинки на RPi - чтобы место драгоценное на tmpfs не тратить, т.к. пишу пока в папку /tmp, а под неё размер выделен всего 100 МБ.

P.S. Вообще - видео пишется на отдельный видеорегистратор, поэтому motion можно запускать только при открытии соответствующей страницы сайта, на которой будет выводиться видео.
За это сообщение автора Ko/|xo3HUk поблагодарили (всего 2):
skysilver (Чт окт 29, 2015 12:19 am) • ypiter2006 (Вс янв 14, 2018 9:11 pm)
Рейтинг: 2.33%
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

Re: Подключение IP-камер

Сообщение Ko/|xo3HUk » Вт окт 27, 2015 9:38 pm

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

Код: Выделить всё

<meta http-equiv="refresh" content="20">
<img width="100%" src="http://xxx.xxx.xxx.xxx:8081/" alt="http://xxx.xxx.xxx.xxx:8081/"></img>
 
где, xxx.xxx.xxx.xxx - статический белый IP-шник моего роутера, который пробрасывает порт 8081 на малинку.

Т.к. размер партиции /tmp ограничен в 100 МБ, то очень скоро он может забиться файлами *.swf.
Поэтому по крону с периодичностью в несколько минут запускаем скрипт, который чистит старые swf-файлы:

Код: Выделить всё

cd /tmp/motion && ls -t | egrep  "*.swf" | tail -n+2  | xargs -i rm '{}'
  
UPD: Пока это писал - подумал - а зачем вообще писать swf, если я напрямую поток получаю со стрим-порта? Заблокировал в конфиге motion.conf создание swf-файла - и всё-равно получаю видео - то что мне надо! На андроиде тоже отображается видео, без всяких плагинов.
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 532 раза
Контактная информация:

Re: Подключение IP-камер

Сообщение Vovix » Ср окт 28, 2015 7:54 am

При настройке захвата движения из камеры, путем использования Webcam XP (т.н. Способ №2) из Подключение IP-камер
наблюдаю следующую проблему:

Настроил Webcam XP:
Скриншот 2015-10-28 01.35.46.png
Скриншот 2015-10-28 01.35.46.png (31.46 КБ) 12819 просмотров
т.е. по сути вызов: http://192.168.1.100:80/objects/?object ... d&status=1

код в методе statusChanged:
СпойлерПоказать

Код: Выделить всё

// say ($params['status']);
$this->setProperty('status',$params['status']);
$this->setProperty('updatedTimestamp',time()); 

$this->setProperty('alive',1);
$ot=$this->object_title;
$alive_timeout=(int)$this->getProperty("aliveTimeOut");
if (!$alive_timeout) {
 $alive_timeout=24*60*60;
}
clearTimeOut($ot."_alive");
setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout);



if ($params['status']) {

 $this->setProperty('motionDetected',1);
 clearTimeOut($ot.'_detected'); 
 setTimeOut($ot.'_detected',"setGlobal('".$ot.".motionDetected',0);",30);

 $linked_room=$this->getProperty('LinkedRoom');
 if ($linked_room!='') {
  callMethod($linked_room.'.onActivity');
 }


 if (getGlobal('somebodyHome')!=1) {
  setGlobal('somebodyHome',1);
 }


 $last_register=registeredEventTime('inhouseMovement');
  registerEvent('inhouseMovement',$this->name,2);
 if (!$last_register || ((time()-$last_register)>2*60*60)) {
  if (timeBetween('06:00', '12:00')) {
   // runScript('morningGreeting');
   say (100);
  }
  if (timeBetween('12:00', '06:00')) {
   // runScript('eveningGreeting');
   say (200);
  }  
 }
} 
Дак вот, метод вызывается но $params['status'] не передается, т.е. при проверке в начале метода оказывается равным "" (пустое значение)!

через браузер вызов: http://192.168.1.100:80/objects/?object ... d&status=1
отрабатывается идеально!
(метод и объект, естественно у меня существуют)

ну если предположить что Webcam XP мудит, то почему выборочно... ведь наименование объекта и название метода передается!?
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 532 раза
Контактная информация:

Re: Подключение IP-камер

Сообщение Vovix » Ср ноя 04, 2015 6:37 pm

по моему вопросу выше, прошу помочь!!!
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 41 раз
Поблагодарили: 81 раз

Re: Подключение IP-камер

Сообщение dmw » Чт ноя 05, 2015 7:43 am

1) В x-ray видно что метод вызывается? параметры видно там какие приходят? Есть подозрение что там какойто текст самого sms прибавляется + номер телефона пустой строкой.
2) А что если в HTTP "Post Url for SMS Provider" засунуть полностью адрес с параметрами всю целиком?
3) Почему не используете для этих целей "Run HTTP Post"?
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 532 раза
Контактная информация:

Re: Подключение IP-камер

Сообщение Vovix » Чт ноя 05, 2015 9:24 am

dmw писал(а):1) В x-ray видно что метод вызывается? параметры видно там какие приходят? Есть подозрение что там какойто текст самого sms прибавляется + номер телефона пустой строкой.
да конечно, метод вызывается, вот что там:
a:1:{s:21:"ORIGINAL_OBJECT_TITLE"; s:15:"sensorMovement1"; }
dmw писал(а): 2) А что если в HTTP "Post Url for SMS Provider" засунуть полностью адрес с параметрами всю целиком?
засовывал - вообще не запускало!
dmw писал(а): 3) Почему не используете для этих целей "Run HTTP Post"?
делал всё по примеру.... если разберусь попробую так!

спасибо!
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
gladskoy
Сообщения: 34
Зарегистрирован: Вс мар 15, 2015 9:36 am
Откуда: Usa
Благодарил (а): 12 раз
Поблагодарили: 0

Re: Подключение IP-камер

Сообщение gladskoy » Сб дек 19, 2015 10:44 pm

Доброго времени суток.

Подскажите как запустить картинку с камеры
СпойлерПоказать
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>IPC</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>* {
PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; margin:0 auto; width:100%; height:102%; PADDING-RIGHT: 0px; FONT-FAMILY: Arial; BACKGROUND:#e8ecef; COLOR: #000000; FONT-SIZE: 14px; PADDING-TOP: 0px
}
#main_content {
BORDER-BOTTOM: #cccccc 0px solid; TEXT-ALIGN: center; BORDER-LEFT: #cccccc 0px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 102%; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BACKGROUND: #e8ecef; HEIGHT: 102%; COLOR: #ffffff; BORDER-TOP: #cccccc 0px solid; BORDER-RIGHT: #cccccc 0px solid; PADDING-TOP: 0px;FONT-FAMILY: Arial;
}
A {
COLOR: #ff0000; FONT-SIZE: 14px; FONT-WEIGHT: none;
}
#download
{ margin:0 auto;
color:#FFFFFF;
width:100%;
height:100%;
font-size:14px;
text-align:center;
position:center;


}
</style>

<script language="javascript">
function ocx_load(){
var embed1 = document.embed1;
var download_html = '<p style="color:#FF0000;"><a href="install/IPCOCX_PX.exe"><img src="download.jpg" border="0" id="download"></a></p>';
try
{

if(embed1.IsUpdateOcx(5,1,35,1))
{
document.getElementById("main_content").innerHTML = download_html;
return;
}
}
catch (e)
{
document.getElementById("main_content").innerHTML = download_html;
return;
}
embed1.width= document.documentElement.clientWidth;
embed1.height= document.documentElement.clientHeight;
embed1.url=location.host;
embed1.InitModule(1);
}

window.onresize = function(){
if(!embed1)
{
return;
}
if(isRsize == 1)
{
embed1.width= document.documentElement.clientWidth;
embed1.height= document.documentElement.clientHeight;
}
}
</script>

<meta name="GENERATOR" content="MSHTML 8.00.6001.18702"></head>
<body onload="ocx_load();">
<div id="main_content">
<object name="embed1" width="1263" height="682" align="middle" id="embed1" classid="clsid:B31BB502-CC3B-4AFF-9F74-DD40E7C00F52"><PARAM NAME="_Version" VALUE="65536"><PARAM NAME="_ExtentX" VALUE="33417"><PARAM NAME="_ExtentY" VALUE="8070"><PARAM NAME="_StockProps" VALUE="0">
<embed align="middle" vspace="102%" hspace="100%">
</object></div>
</body></html>
камера вот такая http://ru.aliexpress.com/item/2MP-POE-c ... 83358.html
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

Re: Подключение IP-камер

Сообщение Ko/|xo3HUk » Вс дек 20, 2015 12:43 pm

По моему это страница загрузки софта, который покажет картинку. Не нашёл здесь какой-либо ссылки на поток. Может поставить этот софт и потом уже посмотреть исходный код?
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
gladskoy
Сообщения: 34
Зарегистрирован: Вс мар 15, 2015 9:36 am
Откуда: Usa
Благодарил (а): 12 раз
Поблагодарили: 0

Re: Подключение IP-камер

Сообщение gladskoy » Вс дек 20, 2015 12:44 pm

Софт был установлен. Это уже после установки софта. Код брал со странички, когда была отображена картинка с камеры
gladskoy
Сообщения: 34
Зарегистрирован: Вс мар 15, 2015 9:36 am
Откуда: Usa
Благодарил (а): 12 раз
Поблагодарили: 0

Re: Подключение IP-камер

Сообщение gladskoy » Вс дек 20, 2015 1:16 pm

картинку получаю в программе

может чем нить поможет эта инфа
Вложения
5.jpg
5.jpg (44.74 КБ) 12282 просмотра
Ответить