var words = msg.topic.split('/');
var KnotenName = (words[3]);
var Taskname = (words[4]);
var Influx = "";
var SysUnit = ("00"+ msg.payload.Unit).slice(-3);
// var varname = SysUnit + "-" + KnotenName + "-" + Taskname;
var varname = KnotenName + "-";
var TotalCount = global.get("TotalCount", "file");
var time = Date.now();
if (Taskname != "System") {
global.set(varname + "TimeStamp", time);
}
/**
* @param {number} fTemp
* @param {number} fHum
*/
function CalcDew(fTemp, fHum) {
var temp = -1.0 * fTemp;
var es = 6.112 * Math.exp(-1.0 * 17.67 * temp / (243.5 - temp))
var ed = fHum / 100.0 * es;
var eln = Math.log(ed / 6.112);
var td = -243.5 * eln / (eln - 17.67);
var fDew = parseFloat(td.toFixed(1));
return (fDew);
}
/**
* @param {any} fTemp
* @param {any} fHum
*/
function CalcAF(fTemp, fHum) {
var T = fTemp;
var r = fHum;
var a = 7.5;
var b = 237.3;
var RG = 8314.3;
var mw = 18.016;
var TK = T + 273.15;
if (T <= 0) {
a = 7.6;
b = 240.7;
}
var SDDt = 6.1078 * Math.pow(10, ((a * T) / (b + T)));
var DDrT = r / 100 * SDDt;
var AF = parseFloat((Math.pow(10, 5) * mw / RG * DDrT / TK).toFixed(1) );
return (AF);
}
switch (Taskname) {
case 'SI7021':
var SI7021_Temp = msg.payload.Temp;
var SI7021_Hum = msg.payload.Hum;
var SI7021_Dew = CalcDew(SI7021_Temp, SI7021_Hum);
var SI7021_AF = CalcAF(SI7021_Temp, SI7021_Hum);
global.set(varname +"Temp", SI7021_Temp);
global.set(varname + "Hum", SI7021_Hum);
global.set(varname + "Dew", SI7021_Dew);
global.set(varname + "AF", SI7021_AF);
Influx = [{
Room: KnotenName,
Temp: SI7021_Temp,
Hum: SI7021_Hum,
Dew: SI7021_Dew,
AF: SI7021_AF
}]
break;
/* -------------------------------------------------------------------- */
case 'DHT22':
var DHT22_Temp = msg.payload.Temp;
var DHT22_Hum = msg.payload.Hum;
var DHT22_Dew = CalcDew(DHT22_Temp, DHT22_Hum);
var DHT22_AF = CalcAF(DHT22_Temp, DHT22_Hum);
global.set(varname + "Temp", DHT22_Temp);
global.set(varname + "Hum", DHT22_Hum);
global.set(varname + "Dew", DHT22_Dew);
global.set(varname + "AF", DHT22_AF);
Influx = [{
Room: KnotenName,
Temp: DHT22_Temp,
Hum: DHT22_Hum,
Dew: DHT22_Dew,
AF: DHT22_AF
}]
break;
/* -------------------------------------------------------------------- */
case 'Wasser':
var Warmwasser_Temp = msg.payload.Warmwasser;
var Vorlauf_Temp = msg.payload.Vorlauf;
var Ruecklauf_Temp = msg.payload.Rücklauf;
var Gehaeuse_Temp = msg.payload.Gehäuse;
global.set(varname + "Warmwasser", Warmwasser_Temp);
global.set(varname + "Vorlauf", Vorlauf_Temp);
global.set(varname + "Ruecklauf", Ruecklauf_Temp);
global.set(varname + "Gehaeuse", Gehaeuse_Temp);
Influx = [{
Room: KnotenName,
Warmwasser: Warmwasser_Temp,
Vorlauf: Vorlauf_Temp,
Ruecklauf: Ruecklauf_Temp,
Gehaeuse: Gehaeuse_Temp
}]
break;
/* -------------------------------------------------------------------- */
case 'TSL2561':
var TSL2561_Lux = msg.payload.Lux;
var TSL2561_IR = msg.payload.Infrared;
var TSL2561_Broad = msg.payload.Broadband;
global.set(varname + "Lux", TSL2561_Lux);
global.set(varname + "IR", TSL2561_IR);
global.set(varname + "Broad", TSL2561_Broad);
Influx = [{
Room: KnotenName,
Broad: TSL2561_Broad,
IR: TSL2561_IR,
Lux: TSL2561_Lux
}]
break;
/* -------------------------------------------------------------------- */
case 'BH1750':
var BH1750_Lux = msg.payload.Lux;
global.set(varname + "Lux", BH1750_Lux)
Influx = [{
Room: KnotenName,
Lux: BH1750_Lux
}]
break;
/* -------------------------------------------------------------------- */
case 'BMP085':
var BMP085_Temp = msg.payload.Temp;
var BMP085_Pres = msg.payload.Pressure;
global.set(varname + "Temp", BMP085_Temp);
global.set(varname + "Pres", BMP085_Pres);
Influx = [{
Room: KnotenName,
Temp1: BMP085_Temp,
Pressure: BMP085_Pres
}]
break;
/* -------------------------------------------------------------------- */
case 'Oben':
var Count = msg.payload.Count;
var Total = msg.payload.Total;
var Time = msg.payload.Time;
global.set(varname + "Count", Count);
global.set(varname + "Total", Total);
TotalCount = TotalCount + Count;
global.set("TotalCount", TotalCount, "file");
Influx = [{
Room: KnotenName,
Count: Count,
Total: Total,
Time: Time
}]
break;
/* -------------------------------------------------------------------- */
case 'BME280':
var BME280_Temp = msg.payload.Temp;
var BME280_Hum = msg.payload.Hum;
var BME280_Pres = msg.payload.Pressure;
global.set(varname + "Temp", BME280_Temp);
global.set(varname + "Hum", BME280_Hum);
global.set(varname + "Pres", BME280_Pres);
Influx = [{
Room: KnotenName,
Temp1: BME280_Temp,
Hum1: BME280_Hum,
Pressure: BME280_Pres
}]
break;
/* -------------------------------------------------------------------- */
case 'System':
var SysUptime = msg.payload.Uptime;
var SysRSSI = msg.payload.RSSI;
global.set(varname + "Uptime", SysUptime);
global.set(varname + "RSSI", SysRSSI);
Influx = [{
Room: KnotenName,
Uptime: SysUptime,
RSSI: SysRSSI
}]
break;
} // switch (Taskname)
node.status({
fill: "green",
shape: "ring",
text: KnotenName + " - " +
Taskname + " - " +
"Unit: " + SysUnit +
", Total: " +TotalCount / 100
});
return [{ payload: Influx}, {payload:time}];
Comments