Stairs/devserver.js

137 lines
2.7 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/version', function(req, res)
{
res.send({
systemID: 'dev-server',
version: 'dev-server'
});
});
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 = {
"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 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
app.get('/api/steps', function(req, res)
{
res.send(steps);
});
app.post('/api/steps', function(req, res)
{
var body = req.body;
if (body && body.hasOwnProperty('values'))
{
for (var i = 0; i < Math.min(steps.length, body.values.length); i++)
steps[i] = parseInt(body.values[i], 10) || 0;
res.sendStatus(200);
}
else
res.sendStatus(400);
});
app.listen(3000, function()
{
console.log('Development server listening on port 3000')
console.log('Press Ctrl-C to stop')
});