94 lines
2.3 KiB
JavaScript
94 lines
2.3 KiB
JavaScript
var express = require('express');
|
|
let router = express.Router();
|
|
let mqtt = require('mqtt');
|
|
let moment = require('moment');
|
|
let toSend = null;
|
|
let tio;
|
|
|
|
const brenndauer = 300; // 20sec Relais ON
|
|
|
|
// MQTT:
|
|
let MQTTHOST = process.env.MQTTHOST;
|
|
let MQTTPORT = process.env.MQTTPORT;
|
|
let MQTTUSR = process.env.MQTTUSR;
|
|
let MQTTPWD = process.env.MQTTPWD;
|
|
|
|
/*
|
|
if (MQTTHOST === undefined) { MQTTHOST = 'localhost';}
|
|
if (MQTTPORT === undefined) { MQTTPORT = 1883;}
|
|
if (MQTTUSR === undefined) { MQTTUSR = "";}
|
|
if (MQTTPWD === undefined) { MQTTPWD = "";}
|
|
*/
|
|
|
|
if (MQTTHOST === undefined) { MQTTHOST = 'laufschrift.rexfue.de';}
|
|
if (MQTTPORT === undefined) { MQTTPORT = 1883;}
|
|
if (MQTTUSR === undefined) { MQTTUSR = "stwLauf";}
|
|
if (MQTTPWD === undefined) { MQTTPWD = "37CrNcgP";}
|
|
|
|
console.log("H",MQTTHOST," P",MQTTPORT," U",MQTTUSR," p",MQTTPWD);
|
|
|
|
let connected = false;
|
|
let relais = 'MIST';
|
|
let client = mqtt.connect("mqtt://" + MQTTHOST + ":" + MQTTPORT,{username: MQTTUSR, password: MQTTPWD});
|
|
let offtime = "";
|
|
let retur = {};
|
|
|
|
client.on('connect', function() {
|
|
connected = true;
|
|
retur.connect = 'connected';
|
|
client.subscribe('stat/laufschrift/POWER');
|
|
})
|
|
|
|
client.on('message',function(topix,message) {
|
|
relais = message.toString();
|
|
console.log("Status = ",relais);
|
|
retur.relais = relais;
|
|
});
|
|
|
|
client.on('reconnect', function(){
|
|
retur.connect = 'reconnect';
|
|
});
|
|
|
|
|
|
// beim start mal den Zustand abfragen
|
|
doPublish("");
|
|
|
|
|
|
function doPublish(payload) {
|
|
// retur.relais='pending';
|
|
client.publish('cmnd/laufschrift/Power',payload);
|
|
if (payload == 'On') {
|
|
offtime = moment().add(brenndauer,'s').format("HH.mm");
|
|
tio =setTimeout(doPublish,brenndauer*1000,"Off");
|
|
retur.offtime = offtime;
|
|
} else if (payload == 'Off') {
|
|
clearTimeout(tio);
|
|
delete retur.offtime;
|
|
}
|
|
}
|
|
// end MQTT
|
|
|
|
/* GET switch data */
|
|
router.get('/:cmd', function(req, res, next) {
|
|
let cmd = req.params.cmd;
|
|
let wert = req.query.wert;
|
|
|
|
if (cmd == 'get_status') {
|
|
doPublish("");
|
|
} else if (cmd == 'switch_on') {
|
|
doPublish("On");
|
|
} else if (cmd == 'switch_off') {
|
|
doPublish("Off");
|
|
} else if (cmd == 'check') {
|
|
|
|
} else {
|
|
retur = { error: "invalid command"};
|
|
res.json(retur);
|
|
}
|
|
console.log("return: ",retur)
|
|
res.json(retur);
|
|
});
|
|
|
|
|
|
module.exports = router;
|