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