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];