Подключение IP-камер
Модератор: immortal
- Kod.Begemot
- Сообщения: 358
- Зарегистрирован: Чт июн 20, 2013 5:53 pm
- Благодарил (а): 32 раза
- Поблагодарили: 42 раза
Re: Подключение IP-камер
Сам думаю над этим.. спасибо за идею насчет сервера... Прописал в своей Beward как сервер - "10.10.0.222/megad2.php", в megad2.php включил debug, теперь в x-ray вижу "13:13:36 0.14472900 megad: /megad2.php?Alarm159 (10.10.0.62)"... Дело за малым, а так - работает!
С камеры меньше всего ложных срабатываний, по сравнению с PIR датчиком так точно..
С камеры меньше всего ложных срабатываний, по сравнению с PIR датчиком так точно..
- Sandr
- Сообщения: 126
- Зарегистрирован: Пн ноя 16, 2015 5:10 pm
- Благодарил (а): 19 раз
- Поблагодарили: 29 раз
Re: Подключение IP-камер
Выложи свой megad2.php (туплю вечером не по детски:)Kod.Begemot писал(а):Сам думаю над этим.. спасибо за идею насчет сервера... Прописал в своей Beward как сервер - "10.10.0.222/megad2.php", в megad2.php включил debug, теперь в x-ray вижу "13:13:36 0.14472900 megad: /megad2.php?Alarm159 (10.10.0.62)"... Дело за малым, а так - работает!
С камеры меньше всего ложных срабатываний, по сравнению с PIR датчиком так точно..
Win Home Serv 2011 / Intel Core i3 / 32 GB ram /
Сцена погода (вертикальная)
mySensor скетчи ( 4х канальный димер | Оптимизация скетчей )
Ну и конечно моя маленькая фабрика - 3D печать / фрезеровка / литье
Сцена погода (вертикальная)
mySensor скетчи ( 4х канальный димер | Оптимизация скетчей )
Ну и конечно моя маленькая фабрика - 3D печать / фрезеровка / литье
- Kod.Begemot
- Сообщения: 358
- Зарегистрирован: Чт июн 20, 2013 5:53 pm
- Благодарил (а): 32 раза
- Поблагодарили: 42 раза
Re: Подключение IP-камер
У меня megad.php от класса (авторства Bagir), не от модуля. Я от модуля отказался так как он не гибок - не позволяет реализовать многие плюшки, вроде реакции на старт меги, обработки множественных нажатий и т.п..
Но - выкладываю:
Но - выкладываю:
Код: Выделить всё
<?
/*
* Автор Казаков Сергей
* на форуме под ником Bagir
* благодарность dimitrystd на примеры
* ver 3.0
*/
include_once("./config.php");
include_once("./lib/loader.php");
$session=new session("prj");
$db=new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME); // connecting to database
include_once("./load_settings.php");
if (!headers_sent()) {
header ("HTTP/1.0: 200 OK\n");
header ('Content-Type: text/html; charset=utf-8');
}
$reclog = 0; // Писать логи отладки ( 0-нет, 1-только крит, 2-все )
// Открыть лог если нужно
if ($reclog) { $log = getLogger(__FILE__); }
// Собрать все переданные параметры в строку для отправки в лог
if ($reclog == 2 ) {
$str = "";
foreach ($params as $key=>$value) {
if ($str != "") {$str.=", ";}
$str .= $key."=".$value;
}
$log->trace('Got message from MegaDevice '.$str);
$str = ""; //свободна
}
DebMes("megad: ".$_SERVER['REQUEST_URI']. " (".$_SERVER['REMOTE_ADDR'].")");
$objects = getObjectsByClass('MegaD');
$megaD = null;
// В начале ищем объект Меги по mdid
if (isset($params['mdid'])) {
foreach ($objects as $obj) {
if (trim(getGlobal($obj['TITLE'].'.mdid')) == $params['mdid']) {
$megaD = $obj;
break;
}
}
} else {
if ($reclog) { $log->error('MegaDevice has not transmitted mdid. Try to search on IP'); }
}
// Если не нашли по mdid, ищем по IP
if (!isset($megaD)) {
// Получить IP адрес MegaD
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($ip)) {
foreach ($objects as $obj) {
if (trim(getGlobal($obj['TITLE'].'.ipAddress')) == $ip) {
$megaD = $obj;
break;
}
}
} else {
if ($reclog) { $log->error('Cannot determinate remote IP address of megadevice!'); }
}
}
// Запуск метода incomingMessage с передачей ему параметров,
// или сообщение "Объект с нужным ID или IP не найден в классе MegaD" при неудаче.
if (isset($megaD)) {
callMethod($megaD['TITLE'].'.incomingMessage', $params);
} else {
if ($reclog) { $log->error('Cannot find object of MegaD class with mdid = '. $params['mdid'].' or ip = '.$ip ); }
}
$session->save();
$db->Disconnect(); // closing database connection
?>
- Sandr
- Сообщения: 126
- Зарегистрирован: Пн ноя 16, 2015 5:10 pm
- Благодарил (а): 19 раз
- Поблагодарили: 29 раз
Re: Подключение IP-камер
Действительно туплюKod.Begemot писал(а):Сам думаю над этим.. спасибо за идею насчет сервера... Прописал в своей Beward как сервер - "10.10.0.222/megad2.php", в megad2.php включил debug, теперь в x-ray вижу "13:13:36 0.14472900 megad: /megad2.php?Alarm159 (10.10.0.62)"... Дело за малым, а так - работает!
С камеры меньше всего ложных срабатываний, по сравнению с PIR датчиком так точно..

Мои ipCam не позволяют прописывать в адресе сервера чтото кроме IP
Win Home Serv 2011 / Intel Core i3 / 32 GB ram /
Сцена погода (вертикальная)
mySensor скетчи ( 4х канальный димер | Оптимизация скетчей )
Ну и конечно моя маленькая фабрика - 3D печать / фрезеровка / литье
Сцена погода (вертикальная)
mySensor скетчи ( 4х канальный димер | Оптимизация скетчей )
Ну и конечно моя маленькая фабрика - 3D печать / фрезеровка / литье
- Kod.Begemot
- Сообщения: 358
- Зарегистрирован: Чт июн 20, 2013 5:53 pm
- Благодарил (а): 32 раза
- Поблагодарили: 42 раза
- Sandr
- Сообщения: 126
- Зарегистрирован: Пн ноя 16, 2015 5:10 pm
- Благодарил (а): 19 раз
- Поблагодарили: 29 раз
Re: Подключение IP-камер
Даёт ?Kod.Begemot писал(а):А шлюз - даёт?

Шлюз какой?
Win Home Serv 2011 / Intel Core i3 / 32 GB ram /
Сцена погода (вертикальная)
mySensor скетчи ( 4х канальный димер | Оптимизация скетчей )
Ну и конечно моя маленькая фабрика - 3D печать / фрезеровка / литье
Сцена погода (вертикальная)
mySensor скетчи ( 4х канальный димер | Оптимизация скетчей )
Ну и конечно моя маленькая фабрика - 3D печать / фрезеровка / литье
- Kod.Begemot
- Сообщения: 358
- Зарегистрирован: Чт июн 20, 2013 5:53 pm
- Благодарил (а): 32 раза
- Поблагодарили: 42 раза
Re: Подключение IP-камер


Конечно не шлюз а ПОРТ!

Если порт даёт указать - можно и правда сделать отдельный хост... только надо отследить - кого он вызывает... чтобы под это подстроиться..
Хотя на мой взглад от этого толка не так много - так как эти запросы нужны системе для записи с детектированием движения, если мы их перенаправим - лишимся возможности писать родным софтом. Хотя можно писать и другими средствами - по команде Алисы, к примеру...
-
- Сообщения: 469
- Зарегистрирован: Вт мар 12, 2013 1:22 am
- Благодарил (а): 41 раз
- Поблагодарили: 81 раз
Re: Подключение IP-камер
Не лишимся, если принять запись, скопривать её для своей обработки, а оригинал послать дальше на свой порт родного софта.
- Sandr
- Сообщения: 126
- Зарегистрирован: Пн ноя 16, 2015 5:10 pm
- Благодарил (а): 19 раз
- Поблагодарили: 29 раз
Re: Подключение IP-камер
Порт конечно можно прописать!
Я попробовал чрез php поднять сокет и посмотреть что приходит....
Telnet`ом подключается нормально, в лог переписка идет
Но от камер пока ничего не пришло - чегото не додумал
Я попробовал чрез php поднять сокет и посмотреть что приходит....
onvif.phpПоказать
Код: Выделить всё
<?php
error_reporting(E_ALL);
$port_file = "onvif_log.log";
/* Позволяет скрипту ожидать соединения бесконечно. */
set_time_limit(0);
/* Включает скрытое очищение вывода так, что мы получаем данные
* как только они появляются. */
ob_implicit_flush();
$address = '192.168.1.155';
$port = 8085;
$fp = fopen($port_file, 'w');
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
$msg = "Не удалось выполнить socket_create(): причина: " . socket_strerror(socket_last_error()) . "\n";
fwrite($fp, $msg);
exit;
}
if (socket_bind($sock, $address, $port) === false) {
$msg = "Не удалось выполнить socket_bind(): причина: " . socket_strerror(socket_last_error($sock)) . "\n";
fwrite($fp, $msg);
exit;
}
if (socket_listen($sock, 5) === false) {
$msg = "Не удалось выполнить socket_listen(): причина: " . socket_strerror(socket_last_error($sock)) . "\n";
fwrite($fp, $msg);
exit;
}
$msg = "Принимаем соединение.\n";
fwrite($fp, $msg);
do {
if (($msgsock = socket_accept($sock)) === false) {
$msg = "Не удалось выполнить socket_accept(): причина: " . socket_strerror(socket_last_error($sock)) . "\n";
fwrite($fp, $msg);
break;
}
$size=socket_recvfrom($socket,$input,65535,0,$ipaddress,$port);
$msg "Received [$input] ($size bytes) from IP $ipaddress Port $port\n"; //socket_getpeername($sock, $raddr, $rport);
//$msg = "Подключение от $raddr:$rport\n";
fwrite($fp, $msg);
do {
if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
$msg = "Не удалось выполнить socket_read(): причина: " . socket_strerror(socket_last_error($msgsock)) . "\n";
fwrite($fp, $msg);
break 2;
}
if (!$buf = trim($buf)) {
continue;
}
if ($buf == 'выход') {
break;
}
if ($buf == 'выключение') {
socket_close($msgsock);
break 2;
}
$msg = "PHP: прислано '$buf'.\n";
$msg .= "$buf\n";
fwrite($fp, $msg);
} while (true);
socket_close($msgsock);
} while (true);
socket_close($sock);
fclose($fp);
?>
Но от камер пока ничего не пришло - чегото не додумал
- За это сообщение автора Sandr поблагодарил:
- directman66 (Пн фев 20, 2017 1:02 pm)
- Рейтинг: 1.16%
Win Home Serv 2011 / Intel Core i3 / 32 GB ram /
Сцена погода (вертикальная)
mySensor скетчи ( 4х канальный димер | Оптимизация скетчей )
Ну и конечно моя маленькая фабрика - 3D печать / фрезеровка / литье
Сцена погода (вертикальная)
mySensor скетчи ( 4х канальный димер | Оптимизация скетчей )
Ну и конечно моя маленькая фабрика - 3D печать / фрезеровка / литье
-
- Сообщения: 2800
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 695 раз
- Контактная информация:
Re: Подключение IP-камер
что пишется в лог? Как открыть сокет на прослушивание порта? Где прописать этот код? Интересно так то, сам бы попробовал, но не хватает опыта.Sandr писал(а):Порт конечно можно прописать!
Я попробовал чрез php поднять сокет и посмотреть что приходит....
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram