Skip to content

Commit

Permalink
adds sensors definition
Browse files Browse the repository at this point in the history
  • Loading branch information
João Silva committed Oct 12, 2023
1 parent 2e58f3b commit 78c4067
Show file tree
Hide file tree
Showing 17 changed files with 374 additions and 58 deletions.
7 changes: 7 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## version 1.0.44
- supporting mqtt sensors definition (in development)
- testing github action

## version 1.0.43
- fixes 1.0.42 express-web file, line 455

## version 1.0.42
- device/:device_id/.. - changes redirect
- collect data - keep action if no sensors were found for the respective model
Expand Down
17 changes: 12 additions & 5 deletions express-web.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ var Client = require('./server/models/clients');
var Project = require('./server/models/projects');
var Model = require('./server/models/models');
var Firmware = require('./server/models/firmwares');
var Sensor = require('./server/models/sensors');

var serveIndex = require('serve-index'); // well known

Expand Down Expand Up @@ -253,19 +254,25 @@ app.get('/model/:model_id/devices',(req,res)=>{
});

app.get('/model/:model_id/access',model.checkOwnership,(req,res)=>{
if(req.user.level >= 2){
if(req.user.level >= 4){
res.render(path.join(__dirname, config.public_path+'/views/pages/model/access'),{model:req.model,user:req.user,page:'Access'});
}
});

app.get('/model/:model_id/settings',model.checkOwnership,(req,res)=>{
if(req.user.level >= 2){
if(req.user.level >= 4){
res.render(path.join(__dirname, config.public_path+'/views/pages/model/settings'),{model:req.model,user:req.user,page:'Settings'});
}
});

app.get('/model/:model_id/sensors',(req,res)=>{
if(req.user.level >= 4 ){
res.render(path.join(__dirname, config.public_path+'/views/pages/model/sensors'),{model:req.model,user:req.user,page:'Sensors'});
}
});

app.get('/model/:model_id/firmwares',(req,res)=>{
if(req.user.level >= 2 && req.model?.fw_enabled){
if(req.user.level >= 4 && req.model?.fw_enabled){
res.render(path.join(__dirname, config.public_path+'/views/pages/model/firmwares'),{model:req.model,user:req.user,page:'Firmwares'});
}
});
Expand Down Expand Up @@ -421,7 +428,7 @@ function collectData(req,callback){
Device.getSensors(req.params.device_id,data.device?.model_id,(err,row)=>{
data.sensor = row;
if(err){
console.warn(`warning - no table for model ${data.device?.model}`);
log.warn(`warning - no table for model ${data.device?.model}`);
}
next();
});
Expand Down Expand Up @@ -452,7 +459,7 @@ function collectData(req,callback){
})
}
],(err)=>{
if(err) console.error(error: err);
if(err) log.error(err);
return callback(err,data);
})
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mgmt-iot-web",
"version": "1.0.42",
"version": "1.0.44",
"description": "web platform to configure and interact with iot devices using mqtt",
"main": "index.js",
"scripts": {
Expand Down
53 changes: 53 additions & 0 deletions server/controllers/sensors.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
var Sensor = require('../models/sensors');
var Joi = require('joi');
var httpStatus = require('http-status-codes');
var response = require('./response');
var config = require('../../config/env');

module.exports = {

add : (req, res, next)=>{

const val = Joi.object({
ref: Joi.string().required(),
name: Joi.string().required(),
type: Joi.string().required()
}).validate(req.body);

if(val.error){
response.error(res,httpStatus.BAD_REQUEST,val.error.details[0].message)
}else{
Sensor.add(req.params.model_id,req.body.ref,req.body.name,req.body.type,(err,rows)=>{
if(!err) response.send(res,rows);
else response.error(res,httpStatus.INTERNAL_SERVER_ERROR,err);
});
}
},

update : (req, res, next)=>{

const val = Joi.object({
sensor_id: Joi.number().required(),
property: Joi.string().required(),
value: Joi.string().required()
}).validate(req.body);

if(val.error){
response.error(res,httpStatus.BAD_REQUEST,val.error.details[0].message)
}else{
Sensor.update(req.body.sensor_id,req.body.property,req.body.value,(err,rows)=>{
if(!err) response.send(res,rows);
else response.error(res,httpStatus.INTERNAL_SERVER_ERROR,err);
});
}
},


list : (req, res, next)=>{
Sensor.list((err,rows)=>{
if(!err) response.send(res,rows);
else response.error(res,httpStatus.INTERNAL_SERVER_ERROR,err);
});
},

}
10 changes: 5 additions & 5 deletions server/models/clients.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ var self = module.exports = {
user_id : userId,
token : password,
api_token : api_token,
createdAt : moment().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
createdAt : moment().utc().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
}

db.insert("clients",obj)
Expand Down Expand Up @@ -85,7 +85,7 @@ var self = module.exports = {
let obj = {
user_id : userId,
token : password,
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
};

let filter = {
Expand Down Expand Up @@ -191,8 +191,8 @@ var self = module.exports = {
client_id : clientId,
device_id : deviceId,
level : level,
createdAt : moment().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
createdAt : moment().utc().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
}

db.insert("permissions",obj)
Expand Down
12 changes: 6 additions & 6 deletions server/models/devices.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ var self = module.exports = {
client_id : clientId,
device_id : deviceId,
level : level,
createdAt : moment().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
createdAt : moment().utc().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
}

return await db.insert("permissions",obj);
Expand Down Expand Up @@ -50,7 +50,7 @@ var self = module.exports = {
let obj = {
level : level,
token : password,
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
};

let filter = {
Expand Down Expand Up @@ -466,7 +466,7 @@ var self = module.exports = {

let obj = {
fw_release : release,
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
};

let filter = {
Expand All @@ -491,7 +491,7 @@ var self = module.exports = {

let obj = {
settings : settings,
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
};

let filter = {
Expand All @@ -515,7 +515,7 @@ var self = module.exports = {
return cb(null,null)

let obj = {
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
};
obj[field] = data;

Expand Down
8 changes: 4 additions & 4 deletions server/models/firmwares.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@ module.exports = {
app_version : app_version,
model_id : modelId,
token : token,
createdAt : moment().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
createdAt : moment().utc().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
}

db.insert("firmwares",obj)
Expand Down Expand Up @@ -161,7 +161,7 @@ module.exports = {
update : (firmwareId,cb)=>{
let obj = {
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
};
let filter = {
Expand All @@ -181,7 +181,7 @@ module.exports = {

let obj = {
fw_release : release,
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
};

let filter = {
Expand Down
12 changes: 6 additions & 6 deletions server/models/models.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ var self = module.exports = {

let obj = {
name : name,
createdAt : moment().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
createdAt : moment().utc().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
}

db.insert("models",obj)
Expand Down Expand Up @@ -76,7 +76,7 @@ var self = module.exports = {

let obj = {
description : description,
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
};

let filter = {
Expand All @@ -95,7 +95,7 @@ var self = module.exports = {
updateOption : async (id,option,value,cb)=>{

let obj = {
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
};
obj[option] = value;

Expand Down Expand Up @@ -170,8 +170,8 @@ var self = module.exports = {
let obj = {
client_id : clientId,
model_id : modelId,
createdAt : moment().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
createdAt : moment().utc().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
}
db.insert("modelPermissions",obj)
.then (rows => {
Expand Down
6 changes: 3 additions & 3 deletions server/models/projects.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ var self = module.exports = {

let obj = {
name : name,
createdAt : moment().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
createdAt : moment().utc().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
}

db.insert("projects",obj)
Expand Down Expand Up @@ -58,7 +58,7 @@ var self = module.exports = {

let obj = {
description : description,
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
};

let filter = {
Expand Down
62 changes: 62 additions & 0 deletions server/models/sensors.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
var mysql = require('mysql2');
var db = require('../controllers/db');
const moment = require('moment');

var self = module.exports = {

add : async(model_id,ref,name,type,cb)=>{

let obj = {
model_id : model_id,
ref : ref,
name : name,
type: type,
createdAt : moment().utc().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
}

db.insert("sensors",obj)
.then (rows => {
return cb(null,rows);
})
.catch(error => {
return cb(error,null);
});
},

update : async (id,property,value,cb)=>{

let obj = {
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
};
obj[property] = value;

let filter = {
id : id
};

db.update("sensors",obj,filter)
.then (rows => {
return cb(null,rows);
})
.catch(error => {
return cb(error,null);
});
},

list : async (cb)=>{

var query = `select * from sensors`;
var table = [];
query = mysql.format(query,table);

db.queryRow(query)
.then(rows => {
return cb(null,rows);
})
.catch(error => {
return cb(error,null);
})
},

};
6 changes: 3 additions & 3 deletions server/models/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ var self = module.exports = {
type : type,
password : pwd,
level: level,
createdAt : moment().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
createdAt : moment().utc().format('YYYY-MM-DD HH:mm:ss'),
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
}

db.insert("users",obj)
Expand Down Expand Up @@ -62,7 +62,7 @@ var self = module.exports = {
password : pwd,
level : level,
type : type,
updatedAt : moment().format('YYYY-MM-DD HH:mm:ss')
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
};

let filter = {
Expand Down
Loading

0 comments on commit 78c4067

Please sign in to comment.