NittyGritty icon

Datacollection

NittyGritty | PRO | 05/08/24 02:39:57 PM UTC | 0 ⭐ | 720 👁️ | Never ⏰ | []
JavaScript |

6.5 KB

|

None

|

0 👍

/

0 👎

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