103 lines
2.3 KiB
JavaScript
103 lines
2.3 KiB
JavaScript
let express = require('express')
|
|
let logger = require('morgan')
|
|
let bodyParser = require('body-parser')
|
|
|
|
const axios = require('axios')
|
|
|
|
|
|
let app = express()
|
|
app.use(bodyParser.json())
|
|
app.use(bodyParser.urlencoded({ extended: true }))
|
|
app.use(logger('dev'))
|
|
app.use(express.static('views'))
|
|
|
|
app.set('view engine', 'ejs')
|
|
app.set('views', __dirname + '/views')
|
|
|
|
var led_array = {
|
|
power: false,
|
|
brightness: 0,
|
|
color: 0
|
|
}
|
|
|
|
|
|
|
|
app.get('/', function (request, responce) {
|
|
responce.render('index.ejs', { led_array: led_array })
|
|
})
|
|
|
|
|
|
app.post('/setlight', async function (request, responce) {
|
|
if (dataVal5(request)) {
|
|
|
|
led_array.power = s2b(request.body.state)
|
|
led_array.brightness = Number(request.body.brightness)
|
|
led_array.color = Number(request.body.color)
|
|
|
|
// Now make an api call to the led controller
|
|
axios({
|
|
url: 'http://192.168.0.27:5000/setState',
|
|
method: 'post',
|
|
data: {
|
|
power: led_array.power,
|
|
brightness: led_array.brightness,
|
|
color: led_array.color
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
console.error(err)
|
|
responce.send({ success: false, error: "NETWORK" })
|
|
})
|
|
.then(() => {
|
|
|
|
responce.send({ success: true, error: false })
|
|
})
|
|
|
|
}
|
|
else {
|
|
responce.send({ success: false, error: "Data Validation" })
|
|
console.log(request.body)
|
|
}
|
|
})
|
|
|
|
app.post('/getlight', async function (request, responce) {
|
|
rsp = {
|
|
power: led_array.power,
|
|
brightness: led_array.brightness,
|
|
color: led_array.color
|
|
}
|
|
responce.send({ led_array: rsp })
|
|
})
|
|
|
|
|
|
|
|
function dataVal5(data) {
|
|
if ((data.body.state == 'true' || data.body.state == 'false' || data.body.state == true || data.body.state == false) && Number(data.body.brightness) && String(data.body.color)) {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
function s2b(string) {
|
|
string = String(string)
|
|
switch (string.toLowerCase().trim()) {
|
|
case "true": case "yes": case 'on': case "1": case true: return true
|
|
case "false": case "no": case 'off': case "0": case false: case null: return false
|
|
default: return false
|
|
}
|
|
}
|
|
|
|
app.get('*', function (request, responce) {
|
|
responce.render('404.ejs')
|
|
})
|
|
|
|
app.post('*', function (request, responce) {
|
|
responce.status(404).send({ success: false, error: "404" })
|
|
})
|
|
|
|
var port = 5555
|
|
|
|
app.listen(port, function () {
|
|
console.log('Server running on port ' + port)
|
|
})
|