Mark van Renswoude
ec99be4b7c
Fixed #25: Setting for the initialisation sequence Fixed #26: Setting for motion triggers only during an active time trigger
256 lines
4.6 KiB
JavaScript
256 lines
4.6 KiB
JavaScript
/*
|
|
* Stairs
|
|
* Copyright 2017 (c) Mark van Renswoude
|
|
*
|
|
* https://git.x2software.net/pub/Stairs
|
|
*/
|
|
const express = require('express');
|
|
const bodyParser = require('body-parser');
|
|
|
|
const app = express();
|
|
|
|
app.use(bodyParser.json());
|
|
app.use(express.static('web'));
|
|
app.use(express.static('web/dist'));
|
|
|
|
app.get('/api/status', function(req, res)
|
|
{
|
|
res.send({
|
|
systemID: 'dev-server',
|
|
version: 'dev-server',
|
|
time: 1518467160,
|
|
timeOffset: 3600,
|
|
resetReason: 2,
|
|
stackTrace: true
|
|
});
|
|
});
|
|
|
|
app.get('/api/connection', function(req, res)
|
|
{
|
|
res.send({
|
|
hostname: 'dev-server',
|
|
accesspoint: true,
|
|
station: true,
|
|
ssid: 'MyWiFiSSID',
|
|
password: 'supersecret',
|
|
dhcp: true,
|
|
ip: '192.168.1.234',
|
|
subnetmask: '255.255.255.0',
|
|
gateway: '192.168.1.0'
|
|
});
|
|
});
|
|
|
|
app.get('/api/connection/status', function(req, res)
|
|
{
|
|
res.send({
|
|
"ap": {
|
|
"enabled": true,
|
|
"ip": "192.168.4.1"
|
|
},
|
|
"station": {
|
|
"enabled": true,
|
|
"status": 1,
|
|
"ip": "0.0.0.0"
|
|
}
|
|
});
|
|
});
|
|
|
|
app.post('/api/connection', function(req, res)
|
|
{
|
|
res.sendStatus(200);
|
|
});
|
|
|
|
app.post('/api/firmware', function(req, res)
|
|
{
|
|
res.sendStatus(200);
|
|
});
|
|
|
|
|
|
var system = {
|
|
ntpServer: "eu.pool.ntp.org",
|
|
ntpInterval: 300,
|
|
lat: 52.370216,
|
|
lng: 4.895168,
|
|
pins: {
|
|
ledAP: 4,
|
|
ledSTA: 5,
|
|
apButton: 2,
|
|
pwmSDA: 13,
|
|
pwmSCL: 12
|
|
},
|
|
pwmAddress: 64,
|
|
pwmFrequency: 1600,
|
|
mapsAPIKey: ""
|
|
};
|
|
|
|
app.get('/api/system', function(req, res)
|
|
{
|
|
res.send(system);
|
|
});
|
|
|
|
app.post('/api/system', function(req, res)
|
|
{
|
|
var body = req.body;
|
|
if (body)
|
|
{
|
|
system.lat = body.lat || system.lat;
|
|
system.lng = body.lng || system.lng;
|
|
|
|
system.pins.ledAP = body.pins.ledAP || system.pins.ledAP;
|
|
system.pins.ledSTA = body.pins.ledSTA || system.pins.ledSTA;
|
|
system.pins.apButton = body.pins.apButton || system.pins.apButton;
|
|
system.pins.pwmSDA = body.pins.pwmSDA || system.pins.pwmSDA;
|
|
system.pins.pwmSCL = body.pins.pwmSCL || system.pins.pwmSCL;
|
|
|
|
system.pwmAddress = body.pwmAddress || system.pwmAddress;
|
|
system.pwmFrequency = body.pwmFrequency || system.pwmFrequency;
|
|
system.mapsAPIKey = body.mapsAPIKey || system.mapsAPIKey;
|
|
|
|
res.sendStatus(200);
|
|
}
|
|
else
|
|
res.sendStatus(400);
|
|
});
|
|
|
|
|
|
var steps = {
|
|
count: 14,
|
|
useCurve: true,
|
|
ranges: [
|
|
{ start: 0, end: 4095 },
|
|
{ start: 0, end: 4095 },
|
|
{ start: 0, end: 4095 },
|
|
{ start: 0, end: 4095 },
|
|
{ start: 0, end: 4095 },
|
|
{ start: 0, end: 4095 },
|
|
{ start: 0, end: 4095 },
|
|
{ start: 0, end: 4095 },
|
|
{ start: 0, end: 4095 },
|
|
{ start: 0, end: 4095 },
|
|
{ start: 0, end: 4095 },
|
|
{ start: 0, end: 4095 },
|
|
{ start: 0, end: 4095 },
|
|
{ start: 0, end: 4095 }
|
|
]
|
|
};
|
|
|
|
|
|
|
|
app.get('/api/steps', function(req, res)
|
|
{
|
|
res.send(steps);
|
|
});
|
|
|
|
app.post('/api/steps', function(req, res)
|
|
{
|
|
steps = req.body;
|
|
res.sendStatus(200);
|
|
});
|
|
|
|
|
|
|
|
|
|
var stepsValues = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
|
|
|
|
app.get('/api/steps/values', function(req, res)
|
|
{
|
|
res.send(stepsValues);
|
|
});
|
|
|
|
app.post('/api/steps/values', function(req, res)
|
|
{
|
|
var body = req.body;
|
|
if (body && body.hasOwnProperty('values'))
|
|
{
|
|
for (var i = 0; i < Math.min(stepsValues.length, body.values.length); i++)
|
|
stepsValues[i] = parseInt(body.values[i], 10) || 0;
|
|
|
|
res.sendStatus(200);
|
|
}
|
|
else
|
|
res.sendStatus(400);
|
|
});
|
|
|
|
|
|
var timeTriggers = {
|
|
"enabled": true,
|
|
"transitionTime": 1000,
|
|
"triggers": [
|
|
{
|
|
"time": 480,
|
|
"daysOfWeek": 127,
|
|
"brightness": 0,
|
|
"triggerType": 0,
|
|
"enabled": true
|
|
},
|
|
{
|
|
"time": 1200,
|
|
"daysOfWeek": 127,
|
|
"brightness": 255,
|
|
"triggerType": 0,
|
|
"enabled": true
|
|
}
|
|
]
|
|
};
|
|
|
|
app.get('/api/triggers/time', function(req, res)
|
|
{
|
|
res.send(timeTriggers);
|
|
});
|
|
|
|
app.post('/api/triggers/time', function(req, res)
|
|
{
|
|
res.sendStatus(200);
|
|
});
|
|
|
|
|
|
|
|
var motionTriggers = {
|
|
enabled: true,
|
|
enabledDuringTimeTrigger: 0,
|
|
enabledDuringDay: true,
|
|
transitionTime: 1000,
|
|
delay: 30000,
|
|
triggers: [
|
|
{
|
|
pin: 14,
|
|
brightness: 64,
|
|
direction: 2,
|
|
enabled: true
|
|
},
|
|
{
|
|
pin: 15,
|
|
brightness: 64,
|
|
direction: 3,
|
|
enabled: true
|
|
}
|
|
]
|
|
};
|
|
|
|
app.get('/api/triggers/motion', function(req, res)
|
|
{
|
|
res.send(motionTriggers);
|
|
});
|
|
|
|
app.post('/api/triggers/motion', function(req, res)
|
|
{
|
|
res.sendStatus(200);
|
|
});
|
|
|
|
|
|
app.get('/api/stacktrace/get', function(req, res)
|
|
{
|
|
res.send("Nothing to see here, move along!");
|
|
});
|
|
|
|
app.get('/api/stacktrace/delete', function(req, res)
|
|
{
|
|
res.sendStatus(200);
|
|
});
|
|
|
|
|
|
app.listen(3000, function()
|
|
{
|
|
console.log('Development server listening on port 3000')
|
|
console.log('Press Ctrl-C to stop')
|
|
}); |