Месяц назад я задумал сделать камеру, которая показывает панораму города в реальном времени. Взял обычную камеру интернет камеру и собрал поворотное устройство на базе ардуино. Но сразу выползли косяки. Камера питается от 5В, ардуино с сервоприводами нужно 12В. 5В не хватает сервам и они трещат, кряхтят и все дергается. Конструкция тоже оказалась не очень гармоничной. Разместить это все в прозрачной колбе получалось с трудом.
Так оказалось, что одна из первых моих интернет камер оказалась без дела. Матрица старого образца шумит. Разрешение не ахти - 640 х 480, однако даже при таком она картинку кажет не очень, по сравнению с существующими ныне камерами такого же разрешения. Так вот она и отошла от дела. А тут на днях она мне попадает в руки. Решено, что надо ее использовать.
Просто прокинуть порт на нее не интересно. Да и тяжеловат он. Плюс там много лишнего и "секретного" для пользователя из вне. Надо сделать свой интерфейс. Но не просто показывать снапшот, а дать на время управление камерой. Повертеть же головой всем интересно .
Решил посерфить базу интернета на наличие api. Естественно ничего не существует. И тут попалась поделка нашего немецкого друга. Ее я и взял за основу.
Так оказалось, что одна из первых моих интернет камер оказалась без дела. Матрица старого образца шумит. Разрешение не ахти - 640 х 480, однако даже при таком она картинку кажет не очень, по сравнению с существующими ныне камерами такого же разрешения. Так вот она и отошла от дела. А тут на днях она мне попадает в руки. Решено, что надо ее использовать.
Просто прокинуть порт на нее не интересно. Да и тяжеловат он. Плюс там много лишнего и "секретного" для пользователя из вне. Надо сделать свой интерфейс. Но не просто показывать снапшот, а дать на время управление камерой. Повертеть же головой всем интересно .
Решил посерфить базу интернета на наличие api. Естественно ничего не существует. И тут попалась поделка нашего немецкого друга. Ее я и взял за основу.
if ($control) {
// Generate the request header
# Configuration
$Host="хх.хх.хх.хх.";
$Port="хх";
#PanTiltSingleMove:
# 0 1 2
# 3 4 5
# 6 7 8
//echo "<pre>";
//var_dump($_POST);
if ($d>0){
$dir1=$d;
$pan=$x;
$tilt=$y;
if ($d2>0)
$kuda='инициализация...';
else
$kuda='поворот';
} else {
$pan=0;
$tilt=0;
$dir1=4;
$kuda='';
if ($here_x>200) {
$dir1=5;
$pan=3;
$kuda='вправо';
} elseif ($here_x<100) {
$dir1=3;
$pan=3;
$kuda='влево';
}
if ($here_y>160) {
if ($dir1!=4) {
$dir1=$dir1+3;
$kuda=$kuda.' и ';
} else {
$dir1=7;
}
$kuda=$kuda.'вниз';
$tilt=4;
} elseif ($here_y<80) {
if ($dir1!=4) {
$dir1=$dir1-3;
$kuda=$kuda.' и ';
} else {
$dir1=1;
}
$kuda=$kuda.'вверх';
$tilt=4;
}
}
if ($dir1==4) {
$kuda='центровка';
header("Refresh: 0; URL=?control=1&d=8&x=10&y=3&d2=5&x2=10&y2=0");
} else {
if ($d2>0) {
header("Refresh: 0; URL=?control=1&d=$d2&x=$x2&y=$y2");
} else {
header("Refresh: 0; URL=?1=1"); //делайте как хотите этот рефреш
}
}
//начинается секретное API
$ReqBody = "PanSingleMoveDegree=$pan&TiltSingleMoveDegree=$tilt&PanTiltSingleMove=$dir1";
$URI="/PANTILTCONTROL.CGI";
$ReqHeader =
"POST $URI HTTP/1.1\n".
"Authorization: Basic ".base64_encode("guest")."\n".
"Host: $Host:$Port\n".
"Content-Type: application/x-www-form-urlencoded\n".
"Content-Length: ".strlen($ReqBody)."\n\n";
$Zapros=$ReqHeader."$ReqBody\n";
// Open the connection to the host
$socket = fsockopen($Host, $Port, &$errno, &$errstr);
if (!$socket)
{
echo "error";
} else {
fputs($socket, $Zapros);
$idx = 0;
while (!feof($socket)) {$Result1[$idx++] = fgets($socket, 128);}
}
//конец серкретного АПИ
echo '<BODY STYLE="MARGIN: 0; PADDING: 0; BACKGROUND-COLOR: #000000">';
echo "<table width=100% height=100% cellpadding=0 cellspacing=0><tr><td valign=middle align=center bgcolor=black><font color=white>
<b>$kuda";//<br>pan=$pan tilt=$tilt dir1=$dir1<br>";
//var_dump($Result1);
echo "</td></tr></table>";
exit;
}
header("Refresh: 15; URL=?1=1"); //рефреш в себя
?>
<BODY STYLE="MARGIN: 0; PADDING: 0; BACKGROUND-COLOR: #000000"><form action=?1=1 method=post><input type=image src=http://HOST:PORT/IMAGE.JPG name=here><input type=hidden name=control value=1></form>
Это только начало. Надеюсь не заброшу :)
Комментариев нет:
Отправить комментарий