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);
}
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);
}
var KnotenName = msg.topic;
var varname = KnotenName + "-";
var Temp = msg.payload.temp
var Hum = "50"; // in case not supplied by Sensor
if (msg.payload.hum === undefined) {
Hum = 50;
}
else {
Hum = msg.payload.hum
}
var Dew = CalcDew(Temp, Hum);
var AF = CalcAF(Temp, Hum);
global.set(varname + "Temp", Temp);
global.set(varname + "Hum", Hum);
global.set(varname + "Dew", Dew);
global.set(varname + "AF", AF);
var Influx = [{
Room: KnotenName,
Temp: Temp,
Hum: Hum,
Dew: Dew
}]
var time = Date.now();
var Time1 = {payload:time};
var Influx1 = {payload:Influx};
node.status({
fill: "blue", shape: "ring", text: KnotenName + ", Temp: " + Temp + "°C, Hum: " + Hum + "%, Dew: " + Dew + "°C, AF: " + AF + "g/m³" });
return [Influx1, Time1];
Comments