Weil UP Geräte nicht in den Schaltschrank gehören?
Ich bin davon ausgegangen, dass du kein REG Gerät mit 4 Eingängen brauchst.
Ich bin davon ausgegangen, dass du kein REG Gerät mit 4 Eingängen brauchst.
// cistern measurement table (got from manufacturer GRAF) // data below are from a 7500l flat plastic cistern // // first column = fillheight in mm // second column = liter const literingTable = [ [0, 0], [100, 368], [200, 976], [300, 1621], [400, 2339], [500, 3153], [600, 3796], [700, 4609], [800, 5341], [900, 6057], [1000, 6731], [1100, 7301], [1200, 7515], [1260, 7550] ]; // pressure Sensor parameters const max_height = 2; // 2m const max_mA = 20; // mA at max_height const min_mA = 4; // mA at zero height // index to table for lowest level in cistern where water // can still be sourced. Below, pump can't reach the water const percent_0_index = 2 // eg, 2 is 200mm // Main starts here var y; var measured_mA = msg.payload; // get mA value from Sensor as input if (measured_mA < min_mA){ // if its below allowed range, then exit node.warn("Error ! Input Value below 4mA") return; } var high_mm = Math.round((max_height * 1000 / (max_mA - min_mA) * (measured_mA - min_mA))); // bugfix -> string problem fixed var x = high_mm; //search for fitting table area, getting index into table as i for(var i = 0; i < literingTable.length; i++) { if ( literingTable[i][0] > x ) break; // if "end entry" found, then exit } i = i - 1; // correct index to "start entry" // check if index was inside table and not the last entry if (i<literingTable.length-1){ // was inside table // get values from table var x1 = literingTable[i+0][0]; var y1 = literingTable[i+0][1]; var x2 = literingTable[i+1][0]; var y2 = literingTable[i+1][1]; // and calculate the value in between y=y1+((x-x1)/(x2-x1)*(y2-y1)); } else{ // was the last entry, // so return last entry as fixe value from table // no calcuation needed y=literingTable[i+0][1] } // calculate percentage from table index 2 as 0% to last table index as 100% var percent = 100 / (literingTable[literingTable.length-1][1] - literingTable[percent_0_index][1]); percent = (percent * (y - literingTable[2][1])).toFixed(0) * 1; if (percent < 0){ percent = -1; } msg = { topic: "L", payload: y }; msg2 = { topic: "%", payload: percent }; return [msg, msg2];
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar