Motion Scripts: Difference between revisions
Appearance
No edit summary |
|||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
Main Article: [[MidsouthMakers_Webcams]] | |||
= Motion Scripts = | = Motion Scripts = | ||
We use two bash scripts to manage motion data. One simply copies the last snapshot to the live web server for the main domain to link to. | We use two bash scripts to manage motion data. One simply copies the last snapshot to the live web server for the main domain to link to. | ||
| Line 192: | Line 194: | ||
closedir($handle); | closedir($handle); | ||
?> | ?> | ||
</pre> | |||
= Apache Configuration = | |||
Six site files make up the local Apache server. This allows us to serve the camera data from a secondary location to our main web server. | |||
* /etc/apache2/sites-available/camera.midsouthmakers.org | |||
<pre> | |||
<VirtualHost *:80> | |||
ServerName camera.midsouthmakers.org | |||
ServerAlias camera.midsouthmakers.org | |||
ServerAdmin admin@midsouthmakers.org | |||
DocumentRoot /motion/camera.midsouthmakers.org | |||
<Directory /motion/camera.midsouthmakers.org/> | |||
Options Indexes FollowSymLinks MultiViews | |||
AllowOverride All | |||
Order allow,deny | |||
allow from all | |||
</Directory> | |||
ErrorLog /var/log/apache2/error.log | |||
# Possible values include: debug, info, notice, warn, error, crit, | |||
# alert, emerg. | |||
LogLevel warn | |||
CustomLog /var/log/apache2/midsouthmakers.log combined | |||
</VirtualHost> | |||
</pre> | |||
* /etc/apache2/sites-available/1.camera.midsouthmakers.org | |||
<pre> | |||
<VirtualHost *:80> | |||
ServerName 1.camera.midsouthmakers.org | |||
ServerAlias 1.camera.midsouthmakers.org | |||
ServerAdmin admin@midsouthmakers.org | |||
DocumentRoot /motion/1.camera.midsouthmakers.org | |||
<Directory /motion/1.camera.midsouthmakers.org/> | |||
Options Indexes FollowSymLinks MultiViews | |||
AllowOverride All | |||
Order allow,deny | |||
allow from all | |||
</Directory> | |||
ErrorLog /var/log/apache2/error.log | |||
# Possible values include: debug, info, notice, warn, error, crit, | |||
# alert, emerg. | |||
LogLevel warn | |||
CustomLog /var/log/apache2/midsouthmakers.log combined | |||
</VirtualHost> | |||
</pre> | |||
* /etc/apache2/sites-available/2.camera.midsouthmakers.org | |||
<pre> | |||
<VirtualHost *:80> | |||
ServerName 2.camera.midsouthmakers.org | |||
ServerAlias 2.camera.midsouthmakers.org | |||
ServerAdmin admin@midsouthmakers.org | |||
DocumentRoot /motion/2.camera.midsouthmakers.org | |||
<Directory /motion/2.camera.midsouthmakers.org/> | |||
Options Indexes FollowSymLinks MultiViews | |||
AllowOverride All | |||
Order allow,deny | |||
allow from all | |||
</Directory> | |||
ErrorLog /var/log/apache2/error.log | |||
# Possible values include: debug, info, notice, warn, error, crit, | |||
# alert, emerg. | |||
LogLevel warn | |||
CustomLog /var/log/apache2/midsouthmakers.log combined | |||
</VirtualHost> | |||
</pre> | |||
* /etc/apache2/sites-available/3.camera.midsouthmakers.org | |||
<pre> | |||
<VirtualHost *:80> | |||
ServerName 3.camera.midsouthmakers.org | |||
ServerAlias 3.camera.midsouthmakers.org | |||
ServerAdmin admin@midsouthmakers.org | |||
DocumentRoot /motion/3.camera.midsouthmakers.org | |||
<Directory /motion/3.camera.midsouthmakers.org/> | |||
Options Indexes FollowSymLinks MultiViews | |||
AllowOverride All | |||
Order allow,deny | |||
allow from all | |||
</Directory> | |||
ErrorLog /var/log/apache2/error.log | |||
# Possible values include: debug, info, notice, warn, error, crit, | |||
# alert, emerg. | |||
LogLevel warn | |||
CustomLog /var/log/apache2/midsouthmakers.log combined | |||
</VirtualHost> | |||
</pre> | |||
* /etc/apache2/sites-available/4.camera.midsouthmakers.org | |||
<pre> | |||
<VirtualHost *:80> | |||
ServerName 4.camera.midsouthmakers.org | |||
ServerAlias 4.camera.midsouthmakers.org | |||
ServerAdmin admin@midsouthmakers.org | |||
DocumentRoot /motion/4.camera.midsouthmakers.org | |||
<Directory /motion/4.camera.midsouthmakers.org/> | |||
Options Indexes FollowSymLinks MultiViews | |||
AllowOverride All | |||
Order allow,deny | |||
allow from all | |||
</Directory> | |||
ErrorLog /var/log/apache2/error.log | |||
# Possible values include: debug, info, notice, warn, error, crit, | |||
# alert, emerg. | |||
LogLevel warn | |||
CustomLog /var/log/apache2/midsouthmakers.log combined | |||
</VirtualHost> | |||
</pre> | |||
* /etc/apache2/sites-available/5.camera.midsouthmakers.org | |||
<pre> | |||
<VirtualHost *:80> | |||
ServerName 5.camera.midsouthmakers.org | |||
ServerAlias 5.camera.midsouthmakers.org | |||
ServerAdmin admin@midsouthmakers.org | |||
DocumentRoot /motion/5.camera.midsouthmakers.org | |||
<Directory /motion/5.camera.midsouthmakers.org/> | |||
Options Indexes FollowSymLinks MultiViews | |||
AllowOverride All | |||
Order allow,deny | |||
allow from all | |||
</Directory> | |||
ErrorLog /var/log/apache2/error.log | |||
# Possible values include: debug, info, notice, warn, error, crit, | |||
# alert, emerg. | |||
LogLevel warn | |||
CustomLog /var/log/apache2/midsouthmakers.log combined | |||
</VirtualHost> | |||
</pre> | </pre> | ||
Latest revision as of 13:39, 25 May 2011
Main Article: MidsouthMakers_Webcams
Motion Scripts
We use two bash scripts to manage motion data. One simply copies the last snapshot to the live web server for the main domain to link to.
- imagedelay.sh
cp /motion/1.camera.midsouthmakers.org/lastsnap.jpg /motion/camera.midsouthmakers.org/delayed-1.jpg cp /motion/2.camera.midsouthmakers.org/lastsnap.jpg /motion/camera.midsouthmakers.org/delayed-2.jpg cp /motion/3.camera.midsouthmakers.org/lastsnap.jpg /motion/camera.midsouthmakers.org/delayed-3.jpg cp /motion/4.camera.midsouthmakers.org/lastsnap.jpg /motion/camera.midsouthmakers.org/delayed-4.jpg cp /motion/5.camera.midsouthmakers.org/lastsnap.jpg /motion/camera.midsouthmakers.org/delayed-5.jpg
Our second script rotates the previous day's images into it's own archive folder and copies an easy to view gallery.
- archivemotion.sh
#!/bin/bash DATE=`date -d '1 day ago' +%Y-%m-%d` echo $DATE PATH1="/motion/1.camera.midsouthmakers.org/$DATE" echo $PATH1 mkdir $PATH1 mv /motion/1.camera.midsouthmakers.org/$DATE-* $PATH1/. cp /motion/1.camera.midsouthmakers.org/galleryarchive.php /motion/1.camera.midsouthmakers.org/$DATE/index.php # PATH2="/motion/2.camera.midsouthmakers.org/$DATE" echo $PATH2 mkdir $PATH2 mv /motion/2.camera.midsouthmakers.org/$DATE-* $PATH2/. cp /motion/1.camera.midsouthmakers.org/galleryarchive.php /motion/2.camera.midsouthmakers.org/$DATE/index.php # PATH3="/motion/3.camera.midsouthmakers.org/$DATE" echo $PATH3 mkdir $PATH3 mv /motion/3.camera.midsouthmakers.org/$DATE-* $PATH3/. cp /motion/1.camera.midsouthmakers.org/galleryarchive.php /motion/3.camera.midsouthmakers.org/$DATE/index.php # PATH4="/motion/4.camera.midsouthmakers.org/$DATE" echo $PATH4 mkdir $PATH4 mv /motion/4.camera.midsouthmakers.org/$DATE-* $PATH4/. cp /motion/1.camera.midsouthmakers.org/galleryarchive.php /motion/4.camera.midsouthmakers.org/$DATE/index.php # PATH5="/motion/5.camera.midsouthmakers.org/$DATE" echo $PATH5 mkdir $PATH5 mv /motion/5.camera.midsouthmakers.org/$DATE-* $PATH5/. cp /motion/1.camera.midsouthmakers.org/galleryarchive.php /motion/5.camera.midsouthmakers.org/$DATE/index.php
Gallery Sciprts
We use 2 gallery scripts, one lists folders to be placed in the root of the individual camera folder, the other is to be copied into each archived folder.
- gallery.php
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL & ~E_NOTICE);
function folderlist(){
$startdir = './';
$ignoredDirectory[] = '.';
$ignoredDirectory[] = '..';
if (is_dir($startdir)){
if ($dh = opendir($startdir)){
while (($folder = readdir($dh)) !== false){
if (!(array_search($folder,$ignoredDirectory) > -1)){
if (filetype($startdir . $folder) == "dir"){
$directorylist[$startdir . $folder]['name'] = $folder;
$directorylist[$startdir . $folder]['path'] = $startdir;
}
}
}
closedir($dh);
}
}
return($directorylist);
}
echo("<table><tr><td>Past Archives</td></tr>");
$folders = folderlist();
foreach ($folders as $folder){
$path = $folder['path'];
$name = $folder['name'];
echo '<tr><td><a href="'. $path . $name .'">' . $name . '</a></td></tr>';
}
echo("</table>");
// open the current directory by opendir
$handle=opendir(".");
$images = array();
$videos = array();
$imagestring = ".jpg";
$videostring = ".mov";
while (($file = readdir($handle))!==false) {
if ($file == "." || $file == ".."){
//nothing
} else {
//echo "$file <br>";
if(strstr($file,$imagestring)) {
//echo "found it.";
//echo("$file : " . date ("Ymd Gis", filemtime($file)) . "<BR>");
$imagedate = date("Ymd Gis", filemtime($file));
$images["$imagedate"][] = "<img src=\"" . $file . "\">";
//$images[] = $file;
} else {
//echo "not found.";
}
if(strstr($file,$videostring)) {
//echo "found it.";
$videos[] = $file;
} else {
//echo "not found.";
}
}
}
sort($images);
//ksort($videos);
foreach ($images as $imagelink) {
//echo("$imagelink");
foreach ($imagelink as $key=>$temptwo) {
echo "$temptwo", "\n";
}
}
closedir($handle);
?>
- galleryarchive.php
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL & ~E_NOTICE);
function folderlist(){
$startdir = './';
$ignoredDirectory[] = '.';
$ignoredDirectory[] = '..';
if (is_dir($startdir)){
if ($dh = opendir($startdir)){
while (($folder = readdir($dh)) !== false){
if (!(array_search($folder,$ignoredDirectory) > -1)){
if (filetype($startdir . $folder) == "dir"){
$directorylist[$startdir . $folder]['name'] = $folder;
$directorylist[$startdir . $folder]['path'] = $startdir;
}
}
}
closedir($dh);
}
}
return($directorylist);
}
// open the current directory by opendir
$handle=opendir(".");
$images = array();
$videos = array();
$imagestring = ".jpg";
$videostring = ".mov";
while (($file = readdir($handle))!==false) {
if ($file == "." || $file == ".."){
//nothing
} else {
//echo "$file <br>";
if(strstr($file,$imagestring)) {
//echo "found it.";
//echo("$file : " . date ("Ymd Gis", filemtime($file)) . "<BR>");
$imagedate = date("Ymd Gis", filemtime($file));
$images["$imagedate"][] = "<img src=\"" . $file . "\">";
//$images[] = $file;
} else {
//echo "not found.";
}
if(strstr($file,$videostring)) {
//echo "found it.";
$videos[] = $file;
} else {
//echo "not found.";
}
}
}
sort($images);
//ksort($videos);
foreach ($images as $imagelink) {
//echo("$imagelink");
foreach ($imagelink as $key=>$temptwo) {
echo "$temptwo", "\n";
}
}
closedir($handle);
?>
Apache Configuration
Six site files make up the local Apache server. This allows us to serve the camera data from a secondary location to our main web server.
- /etc/apache2/sites-available/camera.midsouthmakers.org
<VirtualHost *:80> ServerName camera.midsouthmakers.org ServerAlias camera.midsouthmakers.org ServerAdmin admin@midsouthmakers.org DocumentRoot /motion/camera.midsouthmakers.org <Directory /motion/camera.midsouthmakers.org/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/midsouthmakers.log combined </VirtualHost>
- /etc/apache2/sites-available/1.camera.midsouthmakers.org
<VirtualHost *:80> ServerName 1.camera.midsouthmakers.org ServerAlias 1.camera.midsouthmakers.org ServerAdmin admin@midsouthmakers.org DocumentRoot /motion/1.camera.midsouthmakers.org <Directory /motion/1.camera.midsouthmakers.org/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/midsouthmakers.log combined </VirtualHost>
- /etc/apache2/sites-available/2.camera.midsouthmakers.org
<VirtualHost *:80> ServerName 2.camera.midsouthmakers.org ServerAlias 2.camera.midsouthmakers.org ServerAdmin admin@midsouthmakers.org DocumentRoot /motion/2.camera.midsouthmakers.org <Directory /motion/2.camera.midsouthmakers.org/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/midsouthmakers.log combined </VirtualHost>
- /etc/apache2/sites-available/3.camera.midsouthmakers.org
<VirtualHost *:80> ServerName 3.camera.midsouthmakers.org ServerAlias 3.camera.midsouthmakers.org ServerAdmin admin@midsouthmakers.org DocumentRoot /motion/3.camera.midsouthmakers.org <Directory /motion/3.camera.midsouthmakers.org/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/midsouthmakers.log combined </VirtualHost>
- /etc/apache2/sites-available/4.camera.midsouthmakers.org
<VirtualHost *:80> ServerName 4.camera.midsouthmakers.org ServerAlias 4.camera.midsouthmakers.org ServerAdmin admin@midsouthmakers.org DocumentRoot /motion/4.camera.midsouthmakers.org <Directory /motion/4.camera.midsouthmakers.org/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/midsouthmakers.log combined </VirtualHost>
- /etc/apache2/sites-available/5.camera.midsouthmakers.org
<VirtualHost *:80> ServerName 5.camera.midsouthmakers.org ServerAlias 5.camera.midsouthmakers.org ServerAdmin admin@midsouthmakers.org DocumentRoot /motion/5.camera.midsouthmakers.org <Directory /motion/5.camera.midsouthmakers.org/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/midsouthmakers.log combined </VirtualHost>