Relay control signals

This commit is contained in:
Christian Franke 2014-01-24 01:01:38 +01:00
parent 2f6e8a407e
commit 573a798156
2 changed files with 67 additions and 6 deletions

View File

@ -1,2 +1,14 @@
<h1>Hello, World!</h1>
<img src="../stream.mjpeg"></img>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"></meta>
<script src="main.js"></script>
</head>
<body>
<img src="../stream.mjpeg"></img><br/>
<input type="submit" value="<" id="left"></input>
<input type="submit" value="A" id="up"></input>
<input type="submit" value="V" id="down"></input>
<input type="submit" value=">" id="right"></input>
</body>
</html>

View File

@ -1,15 +1,24 @@
'use strict';
var express = require('express');
var fs = require('fs');
var request = require('request');
var MjpegProxy = require('mjpeg-proxy').MjpegProxy;
var app = express();
var cameras = [
{
url: 'http://admin:123456@192.168.0.117/videostream.cgi?rate=1'
baseurl: 'http://admin:123456@192.168.0.33',
model: 'conceptronic'
},
{
url: 'http://admin:123456@192.168.0.178/videostream.cgi?rate=1'
baseurl: 'http://admin:123456@192.168.0.117',
model: 'conceptronic'
},
{
url: 'http://admin:123456@192.168.0.178',
model: 'conceptronic'
}
];
@ -18,12 +27,52 @@ var still_frames = [
fs.readFileSync(__dirname + '/noise2.jpg'),
];
function SimpleProxy(url) {
var self = this;
self.url = url;
self.handle_request = function(req, res) {
console.log('Got request. Forwarding to ' + self.url);
request(self.url).pipe(res);
};
}
for (var camera_idx in cameras) {
var camera = cameras[camera_idx];
camera.proxy = new MjpegProxy(camera.url, still_frames)
var urls = {};
if (camera.model == 'conceptronic') {
urls.mjpeg = camera.baseurl + '/videostream.cgi?rate=1';
urls.down = camera.baseurl
+ '/decoder_control.cgi?onestep=1&command=0';
urls.up = camera.baseurl
+ '/decoder_control.cgi?onestep=1&command=2';
urls.right = camera.baseurl
+ '/decoder_control.cgi?onestep=1&command=4';
urls.left = camera.baseurl
+ '/decoder_control.cgi?onestep=1&command=6';
urls.snapshot = camera.baseurl + '/snapshot.cgi';
} else if (camera.model == 'mjpegplexer') {
urls.mjpeg = camera.baseurl + '/stream.mjpeg';
urls.down = camera.baseurl + '/control/down';
urls.up = camera.baseurl + '/control/up';
urls.right = camera.baseurl + '/control/right';
urls.left = camera.baseurl + '/control/left';
urls.snapshow = camera.baseurl + '/snapshot.jpg';
};
camera.proxy = new MjpegProxy(urls.mjpeg, still_frames);
app.get('/cam/' + camera_idx + '/stream.mjpeg', camera.proxy.proxyRequest);
for (var url in urls) {
if (url == 'mjpeg' || url == 'snapshot')
continue;
app.get('/cam/' + camera_idx + '/control/' + url,
new SimpleProxy(urls[url]).handle_request);
}
app.get('/cam/' + camera_idx + '/snapshot.jpg',
new SimpleProxy(urls.snapshot).handle_request);
app.use('/cam/' + camera_idx + '/browse',
express.static(__dirname + '/cam_public'));
express.static(__dirname + '/cam_public'));
}
app.get('/blackout', function(req, res) {