-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp22.min.js
1 lines (1 loc) · 5.86 KB
/
app22.min.js
1
var express=require("express"),path=require("path"),favicon=require("serve-favicon"),logger=require("morgan"),cookieParser=require("cookie-parser"),bodyParser=require("body-parser"),session=require("express-session"),moment=require("moment"),app=express(),server=require("http").Server(app),io=require("socket.io")(server);server.listen(3e3,function(){console.log("服务器启动,端口:3000;")});var mongoose=require("mongoose"),dbUrl="mongodb://123.59.57.189:20000/temp",db=mongoose.connection;mongoose.connect(dbUrl),db.on("error",console.error.bind(console,"connection error:")),db.once("open",function(e){console.log("数据库连接成功!"+dbUrl)}),global.dbHandel=require("./database/dbHandel");var sensorLib=require("node-dht-sensor"),User=global.dbHandel.getModel("user"),TempHumidityRecord=global.dbHandel.getModel("thr"),WarningRecord=global.dbHandel.getModel("wr"),MsgSendStatus=global.dbHandel.getModel("mss"),NoSendStatus=global.dbHandel.getModel("mss"),Alidayu=require("./controller/alidayu/alidayu"),saveRealTimeData=function(e,o){e.temperature>5?TempHumidityRecord.create({pt:e.temperature,ph:e.humidity,t:o},function(e,s){e?console.log("[ 实时 ]=========温度记录错误!"+e):console.log("[ 实时 ]=========温度记录成功!"+o)}):console.log("[ 实时 ]=========温度读取"+e.temperature+"摄氏值不合法,被抛弃,不记录")},saveWarningRecord=function(e,o,s,n){WarningRecord.create({wt:o.temperature.toString().slice(0,4),wpn:e.upn,wts:e.wt,t:s,wmt:n},function(e,o){e?console.log(e):console.log("[ 报警 ]=========报警信息数据库保存成功!")})},checkStatusExitAndSendMsg=function(e,o,s){var n=e.upn,t=e.wt;MsgSendStatus.findOne({wpn:n}).then(function(r){r?console.log("[ 短信推送状态 ] 5分钟内已经短信推送!"):r||MsgSendStatus.create({ss:"短信报警推送",wpn:n},function(r){if(r)console.log("[ 短信推送状态 ] 记录出错!"+r);else{console.log("[ 短信推送状态 ] 记录保存成功!");var a='{"type": "温度超限警报","time":"'+s+'","location": "实验室","temp":"'+o.temperature.toString().slice(0,4)+'度","tempset":"'+t+'度"}';console.log("[短信报警][ 开启 ]==============给用户:"+n+"发送短信报警!,设定温度为"+t),Alidayu.sendWarningMsg(a,n),saveWarningRecord(e,o,s,"短信发送")}})})},checkNoStatusExitAndSendMsg=function(e,o,s){var n=e.upn;e.wt;NoSendStatus.findOne({wpn:n}).then(function(t){t?console.log("[ 短信推送状态 ] 5分钟内已经记录关闭订阅!"):t||NoSendStatus.create({ss:"短信报警关闭",wpn:n},function(n){n?console.log("[ 短信推送状态 ] 记录出错!"+n):(console.log("[短信报警][ 关闭 ]=============="),saveWarningRecord(e,o,s,"报警关闭"))})})},sensor={initialize:function(){return console.log("温湿度传感器正在初始化....."),sensorLib.initialize(22,26)},read:function(){var e=sensorLib.read(),o=moment().format("YYYY-MM-DD HH:mm:ss");console.log("[ 实时 ]=========温度: "+e.temperature.toFixed(1)+"C, 湿度: "+e.humidity.toFixed(1)+"%"),e.temperature>5?TempHumidityRecord.create({pt:e.temperature,ph:e.humidity,t:o},function(e,s){e?console.log("[ 实时 ]=========温度记录错误!"+e):console.log("[ 实时 ]=========温度记录成功!"+o)}):console.log("[ 实时 ]=========温度读取"+e.temperature+"摄氏值不合法,被抛弃,不记录"),setTimeout(function(){sensor.read()},1e3)},warning:function(){var e=sensorLib.read(),o=moment().format("YYYY-MM-DD HH:mm:ss");saveRealTimeData(e,o),console.log("[ 报警 ]=========温度: "+e.temperature.toFixed(1)+"C, 湿度: "+e.humidity.toFixed(1)+"%"),User.find({}).exec(function(s,n){console.log("[ 报警 ]=========用户信息更新!");for(var t=0;t<n.length;t++){var r=n[t];console.log("========== "+r.upn+" =========="),e.temperature>=r.wt&&"true"===r.wl?(console.log("[ 报警 ]=========温度超出限制,[ 订阅报警 ],记录报警信息==========:"+r.upn),checkStatusExitAndSendMsg(r,e,o)):e.temperature>=r.wt&&"false"===r.wl?(console.log("[ 报警 ]=========温度超出限制,[ 关闭报警 ],记录报警信息=========:"+r.upn),checkNoStatusExitAndSendMsg(r,e,o)):console.log("[ 报警 ]=========温度正常范围内,继续报警监控")}}),setTimeout(function(){sensor.warning()},1e3)}};sensor.initialize()?(setTimeout(function(){sensor.warning()},5e3),io.on("connection",function(e){console.log("[ Socket ]==========新用户加入"),setInterval(function(){var o=sensorLib.read(),s=moment().format("YYYY-MM-DD HH:mm:ss");o.temperature>5&&(e.emit("realTimeTAndH",{temperature:o.temperature.toFixed(1),date:s,humidity:o.humidity.toFixed(1)}),console.log("[ Socket ]==========实时温度传输"))},1e3)})):console.warn("温湿度传感器初始化失败!"),app.set("views",path.join(__dirname,"views/dist")),app.engine("html",require("ejs").__express),app.set("view engine","html"),app.use(logger("dev")),app.use(bodyParser.json()),app.use(bodyParser.urlencoded({extended:!1})),app.use(cookieParser()),app.use(express["static"](path.join(__dirname,"public"))),app.use(session({secret:"temp",cookie:{maxAge:36e5},resave:"true",saveUninitialized:"false"})),app.use(function(e,o,s){o.locals.user=e.session.user;var n=e.session.error,t=e.session.success;delete e.session.error,delete e.session.success,o.locals.message="",n&&(o.locals.message="<div class='am-alert am-alert-danger' data-am-alert><button type='button' class='am-close'>×</button><p>"+n+"</p></div>"),t&&(o.locals.message="<div class='am-alert am-alert-success' data-am-alert><button type='button' class='am-close'>×</button><p>"+t+"</p></div>"),s()});var routes=require("./routes/index.min.js");app.use("/",routes),app.use(function(e,o,s){var n=new Error("Not Found");n.status=404,s(n)}),"development"===app.get("env")&&app.use(function(e,o,s,n){s.status(e.status||500),s.render("error",{message:e.message,error:e})}),app.use(function(e,o,s,n){s.status(e.status||500),s.render("error",{message:e.message,error:{}})}),module.exports=app;