iot-v2-rn/ctrl_server/server.js
2021-10-08 19:46:11 +01:00

118 lines
2.7 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) {
console.log(request.body);
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.42: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) && Number(data.body.color)) {
return true
}
return false
}
function s2b(string) {
string = String(string)
switch (string.toLowerCase().trim()) {
case "true":
case "True":
case "yes":
case 'on':
case "1":
case true:
return true
case "false":
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)
})