Re: [V4.0 IP5] Taupunkt berechnen
Verfasst: Do Dez 28, 2023 12:31 pm
Update: Fehler gefunden. Melde mich gleich dazu.
Timberwolf Server, BlitzART & 1-Wire
https://forum.timberwolf.io/
Code: Alles auswählen
["$formelinbenutzung","string",""],
Code: Alles auswählen
["$formelinbenutzung","string","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],
Code: Alles auswählen
{
"_Meta": { // Optional
"Description": "",
"Version": "1.00",
"Icon": "" // format: "data:image/svg+xml;base64,ENCODED_FILE"
},
"Input": [
["Temperatur","Temperatur","$temp","c" ],
["Feuchtigkeit","Feuchtigkeit","$feuchte","c" ]
],
"Output": [
["Taupunkt","Berechneter Taupunkt","$taupunkt","a"],
// Debugging
["Faktor_a", "Auswahlwert X1","$faktor_a","a"],
["Faktor_b", "Auswahlwert X2","$faktor_b","a"],
["sdd", "SDD","$sdd","a"],
["dd", "DD","$dd","a"],
["v", "v","$v","a"]
],
"Level": [
//Ein/Ausgänge
["$temp","float",0.0],
["$feuchte","float",0.0],
["$taupunkt","float",0.0],
//Konstanten Variablen
["$faktor_a","float",0.0],
["$faktor_b","float",0.0],
["$sdd","float",0.0],
["$dd","float",0.0],
["$v","float",0.0],
//Formeln
["$calc_faktor_a","string","(X1>=0)?7.5:7.6"],
["$calc_faktor_b","string","(X1>=0)?237.3:270.7"],
["$calc_sdd","string","6.1078 * 10^((X1*X3)/(X2+X3))"],
["$calc_dd","string","X1/100 * X2"],
["$calc_v","string","log10(X1/6.1078)"],
["$calc_taupunkt","string","X2*X3/(X1-X3)"]
],
"Module": [
["CalcFormula",["$temp"], "$faktor_a", "$calc_faktor_a"],
["CalcFormula",["$temp"], "$faktor_b", "$calc_faktor_b"],
// Berechnung sdd
["CalcFormula",["$faktor_a","$faktor_b","$temp"], "$sdd", "$calc_sdd"],
// Berechnung dd
["CalcFormula",["$feuchte","$sdd"], "$dd", "$calc_dd"],
// Berechnung v
["CalcFormula",["$dd"], "$v", "$calc_v"],
// Berechnung taupunkt
["CalcFormula",["$faktor_a","$faktor_b","$v"], "$taupunkt", "$calc_taupunkt"]
]
}
Code: Alles auswählen
/**
* Logik zum Berechnen des Taupunkts. Der Taupunkt ist ein guter Wert um Aussenluft und Innenluft miteinander zu vergleichen um zu prüfen ob Lüften zur Feuchtigkeitsreduktion sinnvoll ist.
* Die Entstehtung der Logik wurde hier besprochen:https://forum.timberwolf.io/viewtopic.php?f=24&t=4725
* Die Formeln wurden von folgendem Post abgeleitet: http://dl8aap.koch-carsten.de/2020/07/taupunkt-berechnen/
* Erklärung der Variablen aus der ursprünglichen Formel
* var t = temperature;
* var r = humidity;
* var tp = 0.000;
* // Konstante
* var mw = 18.016; //Molekulargewicht des Wasserdampfes (kg/kmol)
* var gk = 8314.3; // universelle Gaskonstante (J/(kmol*K))
* var t0 = 273.15; // Absolute Temperatur von 0 °C (Kelvin)
* var tk = t + t0; // Temperatur in Kelvin
* Temp größer gleich 0 Grad:
* a = 7.5;
* b = 237.3;
* Temp kleiner 0 Grad:
* a = 7.6;
* b = 240.7;
* }
*/
{
"_Meta": { // Optional
"Description": "",
"Version": "1.00",
"Icon": "" // format: "data:image/svg+xml;base64,ENCODED_FILE"
},
"Input": [
["Temperatur","Temperatur","$temp","c" ],
["feuchtefeuchte","feuchtefeuchte","$feuchte","c" ]
],
"Output": [
["Taupunkt","Berechneter Taupunkt","$taupunkt","a"]
],
"Level": [
//Ein-Ausgänge
["$temp","float",0.0],
["$feuchte","float",0.0],
["$taupunkt","float",0.0],
//Formeln
["$formelinbenutzung","string","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"], //Reservierung des Speicherplatzes, sonst werden nur 14 Zeichen reserviert
//Formel jeweils einmal mit den Konstanten für Temperaturen >0 Grad, und einmal für Temperaturen <0 Grad
//var sdd = 6.1078 * Math.pow(10, (a*t)/(b+t));
["$formel1plus","string","6.1078 * 10^((7.5*X1)/(237.3+X1))"],
["$formel1minus","string","6.1078 * 10^((7.6*X1)/(240.7+X1))"],
//var dd = sdd * (r/100);
["$formel2plus","string","X1 * (X2/100)"],
["$formel2minus","string","X1 * (X2/100)"],
//var af = Math.pow(10,5) * mw/gk * dd/tk;
["$formel3plus","string","10^5 * 18.016/8314.3 * X1/(X2 + 273.15)"],
["$formel3minus","string","10^5 * 18.016/8314.3 * X1/(X2 + 273.15)"],
//var v = Math.log10(dd/6.1078);
["$formel4plus","string","log10(X1/6.1078)"],
["$formel4minus","string","log10(X1/6.1078)"],
//tp = Math.round( ((b*v) / (a-v))*100)/100;
["$formel5plus","string","((237.3*X1) / (7.5-X1))*100/100"],
["$formel5minus","string","((240.7*X1) / (7.6-X1))*100/100"],
//Variablen für die Berechnungen
["$schwellwert","float",0.0],
["$schwellwertueberschreitung","bool",false],
["$schwellwertueberschreitungint","integer",0],
["$sdd","float",0.0],
["$dd","float",0.0],
["$af","float",0.0],
["$v","float",0.0]
],
"Module": [
//Comparator, prüft ob die Temp postiv oder negativ ist, True bei Plusgraden, False bei Minusgraden
["Comparator" , "$temp" , "$schwellwertueberschreitung" , "$schwellwert"],
//Formel 1
["Multiplexer", ["$formel1minus", "$formel1plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
["CalcFormula",["$temp"], "$sdd", "$formelinbenutzung"],
//Formel 2
["Multiplexer", ["$formel2minus", "$formel2plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
["CalcFormula",["$sdd","$feuchte"], "$dd", "$formelinbenutzung"],
//Formel 3
["Multiplexer", ["$formel3minus", "$formel3plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
["CalcFormula",["$dd","$temp"], "$af", "$formelinbenutzung"],
//Formel 4
["Multiplexer", ["$formel4minus", "$formel4plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
["CalcFormula",["$dd"], "$v", "$formelinbenutzung"],
//Formel 5
["Multiplexer", ["$formel5minus", "$formel5plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
["CalcFormula",["$v"], "$taupunkt", "$formelinbenutzung"]
]
}
wenn du mir genau erklärst, was du dir da vorstellst, kann ich das gerne für dich übernehmen.
1) Gerne - danke für deine Ausdauer.