Advertisement
NittyGritty

Datacollection

May 8th, 2024
355
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var words = msg.topic.split('/');
  2. var KnotenName = (words[3]);
  3. var Taskname = (words[4]);
  4. var Influx = "";
  5. var SysUnit = ("00"+ msg.payload.Unit).slice(-3);
  6. // var varname = SysUnit + "-" + KnotenName + "-" + Taskname;
  7. var varname = KnotenName + "-";
  8. var TotalCount = global.get("TotalCount", "file");
  9.  
  10. var time = Date.now();
  11.  
  12. if (Taskname != "System") {
  13.     global.set(varname + "TimeStamp", time);
  14. }
  15.  
  16. /**
  17. * @param {number} fTemp
  18. * @param {number} fHum
  19. */
  20. function CalcDew(fTemp, fHum) {
  21.     var temp = -1.0 * fTemp;
  22.     var es = 6.112 * Math.exp(-1.0 * 17.67 * temp / (243.5 - temp))
  23.     var ed = fHum / 100.0 * es;
  24.     var eln = Math.log(ed / 6.112);
  25.     var td = -243.5 * eln / (eln - 17.67);
  26.     var fDew = parseFloat(td.toFixed(1));
  27.     return (fDew);
  28. }
  29.  
  30. /**
  31. * @param {any} fTemp
  32. * @param {any} fHum
  33. */
  34. function CalcAF(fTemp, fHum) {
  35.     var T = fTemp;
  36.     var r = fHum;
  37.  
  38.     var a = 7.5;
  39.     var b = 237.3;
  40.     var RG = 8314.3;
  41.     var mw = 18.016;
  42.     var TK = T + 273.15;
  43.  
  44.     if (T <= 0) {
  45.         a = 7.6;
  46.         b = 240.7;
  47.     }
  48.  
  49.     var SDDt = 6.1078 * Math.pow(10, ((a * T) / (b + T)));
  50.     var DDrT = r / 100 * SDDt;
  51.     var AF = parseFloat((Math.pow(10, 5) * mw / RG * DDrT / TK).toFixed(1) );
  52.  
  53.     return (AF);
  54. }
  55.  
  56. switch (Taskname) {
  57.     case 'SI7021':
  58.         var SI7021_Temp = msg.payload.Temp;
  59.         var SI7021_Hum = msg.payload.Hum;
  60.         var SI7021_Dew = CalcDew(SI7021_Temp, SI7021_Hum);
  61.         var SI7021_AF = CalcAF(SI7021_Temp, SI7021_Hum);
  62.  
  63.         global.set(varname +"Temp", SI7021_Temp);
  64.         global.set(varname + "Hum", SI7021_Hum);
  65.         global.set(varname + "Dew", SI7021_Dew);
  66.         global.set(varname +  "AF", SI7021_AF);
  67.        
  68.         Influx = [{
  69.             Room: KnotenName,
  70.             Temp: SI7021_Temp,
  71.             Hum: SI7021_Hum,
  72.             Dew: SI7021_Dew,
  73.             AF: SI7021_AF
  74.         }]
  75.  
  76.         break;
  77.  
  78.     /* -------------------------------------------------------------------- */
  79.     case 'DHT22':
  80.         var DHT22_Temp = msg.payload.Temp;
  81.         var DHT22_Hum = msg.payload.Hum;
  82.         var DHT22_Dew = CalcDew(DHT22_Temp, DHT22_Hum);
  83.         var DHT22_AF = CalcAF(DHT22_Temp, DHT22_Hum);
  84.        
  85.         global.set(varname + "Temp", DHT22_Temp);
  86.         global.set(varname +  "Hum", DHT22_Hum);
  87.         global.set(varname +  "Dew", DHT22_Dew);
  88.         global.set(varname +   "AF", DHT22_AF);
  89.  
  90.         Influx = [{
  91.             Room: KnotenName,
  92.             Temp: DHT22_Temp,
  93.             Hum: DHT22_Hum,
  94.             Dew: DHT22_Dew,
  95.             AF: DHT22_AF
  96.         }]
  97.         break;
  98.        /* -------------------------------------------------------------------- */
  99.  
  100.     case 'Wasser':
  101.  
  102.         var Warmwasser_Temp = msg.payload.Warmwasser;
  103.         var Vorlauf_Temp = msg.payload.Vorlauf;
  104.         var Ruecklauf_Temp = msg.payload.Rücklauf;
  105.         var Gehaeuse_Temp = msg.payload.Gehäuse;
  106.  
  107.         global.set(varname + "Warmwasser", Warmwasser_Temp);
  108.         global.set(varname + "Vorlauf",    Vorlauf_Temp);
  109.         global.set(varname + "Ruecklauf",  Ruecklauf_Temp);
  110.         global.set(varname + "Gehaeuse",   Gehaeuse_Temp);
  111.  
  112.         Influx = [{
  113.             Room: KnotenName,
  114.             Warmwasser: Warmwasser_Temp,
  115.             Vorlauf: Vorlauf_Temp,
  116.             Ruecklauf: Ruecklauf_Temp,
  117.             Gehaeuse: Gehaeuse_Temp
  118.         }]
  119.  
  120.     break;
  121. /* -------------------------------------------------------------------- */
  122.     case 'TSL2561':
  123.  
  124.         var TSL2561_Lux = msg.payload.Lux;
  125.         var TSL2561_IR = msg.payload.Infrared;
  126.         var TSL2561_Broad = msg.payload.Broadband;
  127.  
  128.         global.set(varname + "Lux", TSL2561_Lux);
  129.         global.set(varname + "IR", TSL2561_IR);
  130.         global.set(varname + "Broad", TSL2561_Broad);
  131.  
  132.         Influx = [{
  133.             Room: KnotenName,
  134.             Broad: TSL2561_Broad,
  135.             IR: TSL2561_IR,
  136.             Lux: TSL2561_Lux
  137.         }]
  138.         break;
  139.  
  140.     /* -------------------------------------------------------------------- */
  141.     case 'BH1750':
  142.  
  143.         var BH1750_Lux = msg.payload.Lux;
  144.         global.set(varname + "Lux", BH1750_Lux)
  145.  
  146.         Influx = [{
  147.             Room: KnotenName,
  148.             Lux: BH1750_Lux
  149.         }]
  150.         break;
  151.  
  152.     /* -------------------------------------------------------------------- */
  153.     case 'BMP085':
  154.         var BMP085_Temp = msg.payload.Temp;
  155.         var BMP085_Pres = msg.payload.Pressure;
  156.  
  157.         global.set(varname + "Temp", BMP085_Temp);
  158.         global.set(varname + "Pres", BMP085_Pres);
  159.  
  160.         Influx = [{
  161.             Room: KnotenName,
  162.             Temp1: BMP085_Temp,
  163.             Pressure: BMP085_Pres
  164.         }]
  165.  
  166.         break;
  167.  
  168.     /* -------------------------------------------------------------------- */
  169.  
  170.     case 'Oben':
  171.         var Count = msg.payload.Count;
  172.         var Total = msg.payload.Total;
  173.         var Time = msg.payload.Time;
  174.  
  175.         global.set(varname + "Count", Count);
  176.         global.set(varname + "Total", Total);
  177.  
  178.         TotalCount = TotalCount + Count;
  179.         global.set("TotalCount", TotalCount, "file");
  180.  
  181.         Influx = [{
  182.             Room: KnotenName,
  183.             Count: Count,
  184.             Total: Total,
  185.             Time: Time
  186.         }]
  187.         break;
  188.  
  189.     /* -------------------------------------------------------------------- */
  190.     case 'BME280':
  191.         var BME280_Temp = msg.payload.Temp;
  192.         var BME280_Hum = msg.payload.Hum;
  193.         var BME280_Pres = msg.payload.Pressure;
  194.  
  195.         global.set(varname + "Temp", BME280_Temp);
  196.         global.set(varname + "Hum",  BME280_Hum);
  197.         global.set(varname + "Pres", BME280_Pres);
  198.  
  199.         Influx = [{
  200.             Room: KnotenName,
  201.             Temp1: BME280_Temp,
  202.             Hum1: BME280_Hum,
  203.             Pressure: BME280_Pres
  204.         }]
  205.  
  206.         break;
  207.  
  208.     /* -------------------------------------------------------------------- */
  209.  
  210.     case 'System':
  211.         var SysUptime = msg.payload.Uptime;
  212.         var SysRSSI = msg.payload.RSSI;
  213.  
  214.         global.set(varname + "Uptime", SysUptime);
  215.         global.set(varname + "RSSI",   SysRSSI);
  216.  
  217.         Influx = [{
  218.             Room: KnotenName,
  219.             Uptime: SysUptime,
  220.             RSSI: SysRSSI
  221.         }]
  222.        
  223.         break;
  224.  
  225. }       // switch (Taskname)
  226.  
  227. node.status({
  228.     fill: "green",
  229.     shape: "ring",
  230.     text: KnotenName + " - " +
  231.           Taskname + " - " +
  232.           "Unit: " + SysUnit +
  233.           ", Total: " +TotalCount / 100
  234. });
  235.  
  236.  
  237. return [{ payload: Influx}, {payload:time}];
  238.  
  239.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement