NEWS
ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen
-
@homoran d.h.
- die rote und die blaue Kurve kommen von diesem Sensor.
- Aus diesen wird dann der Taupunkt (dunkelviolett-aubergine) mit dem Raumklimaskript berechnet
- die grünliche Kurve "Decke Auffahrt" ist das zugehörige Kontaktthermometer, dessen Werte ebenfalls ins Skript eingehen
richtig?
-
@klassisch sagte in ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen:
richtig?
sorry, meine Unpräzision!
Ja, rot und mittelblau kommen vom Sensor und danach wird AW70/80100 berechnetgrün ist "nur" ein Thermometer dessen Temperatur-Wert unter der Schwelle von aw70 liegt.
Wird für keine Berechnug benutzt.Oder müsste das irgendwo rein?
-
@homoran
So, habe jetzt mal das Skript mit der Webseite verglichen. Anhand von ein paar Werten, die so in etwa auf Deinem Diagramm sindDas Programm (Script) erreichnet die gleichen Werte wie die Webseite
Edit: Script entfernt, da fehlerhaft
-
@klassisch sagte in ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen:
die so in etwa auf Deinem Diagramm sind
Danke (aber auch hier Asche über mein Haupt. Ich hab da noch ein Offset in der Feuchte eingebaut )
@klassisch sagte in ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen:
Das Programm (Script) erreichnet die gleichen Werte wie die Webseite
Das ist schon mal super - hätte ich ja auch drauf kommen können. Ist heut nicht mein Tag
Aber verstehen muss ich es trotzdem nicht, dass aw70 und 80 nahezu identisch werden, aber der Taupunkt weiter den "gleichen" Abstand zu aw70 hat.
Muss ich mal den Taupunkt nach der Berechnung auf der Website mit der vom Raumklimaskript vergleichen.
Danke für deine Mühen!
-
@homoran Es gibt eine Auffälligkeit
Bei der Zeile 18°C 40% ist T80 höher als T70
Das erscheint unplausibel. Die Webseite zeigt das aber genauso.Nur: diese TF80 kommt zu einem anderen Ergebnis. Und das nicht nur dort. Die Formel für TF80 der ersten Website scheint also fehlerhaft zu sein. Die ist auch mit der TF70 Formel nicht wirklich vergleichbar.
Mit welchem Trick hast Du der Website den Quelltext entlockt?Zweite TF80 zeigt das auch
-
@klassisch sagte in ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen:
Mit welchem Trick hast Du der Website den Quelltext entlockt?
Wenn ich das noch wüsste.
Hacking by Trying bis ich was sehe, was brauchbar sein könnte.rechte Maustaste
Quelltext anzeigendanach F12 (Browserkonsole) und dort den Aufbau der Seite verfolgen bzw. die eingebetteten js ansehen
Ich such mal auf der andern Seite - danke für den Link
-
@klassisch im Quelltext habe ich da folgendes gesehen:
function berechnen() { with (rechner) { var temp = parseFloat(temperatur.value) var tempbauteil = parseFloat(bauteiltemperatur.value) var rel = parseFloat(relative_luftfeuchte.value) var wdsd = 611*Math.pow(10,7.5*temp/(237.3+temp)) var wdsdbauteil = 611*Math.pow(10,7.5*tempbauteil/(237.3+tempbauteil)) var wdd = rel/100*wdsd var tp = 237.3*Math.log(wdd/610.78)/Math.log(10)/(7.5-Math.log(wdd/610.78)/Math.log(10)) var tf70 = 237.3*Math.log(wdd/(610.78*0.7))/Math.log(10)/(7.5-Math.log(wdd/(610.78*0.7))/Math.log(10)) var tf80 = 237.3*Math.log(wdd/(610.78*0.8))/Math.log(10)/(7.5-Math.log(wdd/(610.78*0.8))/Math.log(10)) var tf90 = 237.3*Math.log(wdd/(610.78*0.9))/Math.log(10)/(7.5-Math.log(wdd/(610.78*0.9))/Math.log(10)) var abs = 1000*18.016/8314.3*wdd/(temp+273.15) var normfeu = wdsd*rel/2340 wasserdampfsaettigungsdruck.value = Math.round(wdsd) wasserdampfdruck.value = Math.round(wdd) taupunkt.value = Math.round(tp*10)/10 tf70wert.value = Math.round(tf70*10)/10 tf80wert.value = Math.round(tf80*10)/10 tf90wert.value = Math.round(tf90*10)/10 absolute_luftfeuchtigkeit.value = Math.round(abs*10)/10 normierte_feuchte.value = Math.round(normfeu*10)/10 aw_wert.value = (wdd / wdsdbauteil) aw_wert.value = Math.round(aw_wert.value*100)/100 if (aw_wert.value > 1) { aw_wert.value = 1.00 } } } berechnen()
-
@homoran Ah, google chrome. Im Firefox finde ich nichts - oder verwirrend viel
Die Berechnung sieht schon viel aufgeräumter aus.
-
@klassisch sagte in ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen:
Die Berechnung sieht schon viel aufgeräumter aus.
geht wahrscheinlich am ehesten um diese Formeln:
var tp = 237.3*Math.log(wdd/610.78)/Math.log(10)/(7.5-Math.log(wdd/610.78)/Math.log(10)) var tf70 = 237.3*Math.log(wdd/(610.78*0.7))/Math.log(10)/(7.5-Math.log(wdd/(610.78*0.7))/Math.log(10)) var tf80 = 237.3*Math.log(wdd/(610.78*0.8))/Math.log(10)/(7.5-Math.log(wdd/(610.78*0.8))/Math.log(10)) var tf90 = 237.3*Math.log(wdd/(610.78*0.9))/Math.log(10)/(7.5-Math.log(wdd/(610.78*0.9))/Math.log(10)) var abs = 1000*18.016/8314.3*wdd/(temp+273.15)
-
@homoran Mal auf die Schnelle.
// Calculations of Humidity and water content in air // modifications of http://www.tf80.de/ const debugLogOn = true; // test Variables var Temp = 18; var Hrel = 40; //=20.13°C humidity=56.55% // temperature=20.52°C humidity=55.44% // end test variables // global Variables var this_theta, this_phi; var temp_dew, vaporPressureSaturated, vaporPartialPressure, H_abs, temp_for_Hrel_70, temp_for_Hrel_80; // end global Variables var temp = Temp; var tempbauteil; var rel = Hrel var wdsd; var wdsdbauteil; var wdd; var tp; var tf70; var tf80; var tf90; var abs; var normfeu; var wasserdampfsaettigungsdruck; var wasserdampfdruck = Math.round(wdd); var taupunkt; var tf70wert; var tf80wert; var tf90wert; var absolute_luftfeuchtigkeit; var normierte_feuchte; var aw_wert; function calculateHumidityValues() { wdsd = 611*Math.pow(10,7.5*temp/(237.3+temp)); wdsdbauteil = 611*Math.pow(10,7.5*tempbauteil/(237.3+tempbauteil)); wdd = rel/100*wdsd; tp = 237.3*Math.log(wdd/610.78)/Math.log(10)/(7.5-Math.log(wdd/610.78)/Math.log(10)); tf70 = 237.3*Math.log(wdd/(610.78*0.7))/Math.log(10)/(7.5-Math.log(wdd/(610.78*0.7))/Math.log(10)); tf80 = 237.3*Math.log(wdd/(610.78*0.8))/Math.log(10)/(7.5-Math.log(wdd/(610.78*0.8))/Math.log(10)); tf90 = 237.3*Math.log(wdd/(610.78*0.9))/Math.log(10)/(7.5-Math.log(wdd/(610.78*0.9))/Math.log(10)); abs = 1000*18.016/8314.3*wdd/(temp+273.15); normfeu = wdsd*rel/2340; wasserdampfsaettigungsdruck = Math.round(wdsd); wasserdampfdruck = Math.round(wdd); taupunkt = Math.round(tp*10)/10; tf70wert = Math.round(tf70*10)/10; tf80wert = Math.round(tf80*10)/10; tf90wert = Math.round(tf90*10)/10; absolute_luftfeuchtigkeit = Math.round(abs*10)/10; normierte_feuchte = Math.round(normfeu*10)/10; aw_wert = (wdd / wdsdbauteil); aw_wert = Math.round(aw_wert*100)/100; if (aw_wert > 1) { aw_wert = 1.00 } } calculateHumidityValues(); if(debugLogOn)console.log('temp: ' +temp+'; Hrel: ' + rel); if(debugLogOn)console.log('Taupunkt: ' + taupunkt); if(debugLogOn)console.log('Saettigungsdampfdruck: ' + wasserdampfsaettigungsdruck); if(debugLogOn)console.log('Partialdruck: ' + wasserdampfdruck); if(debugLogOn)console.log('Habs: ' + absolute_luftfeuchtigkeit); if(debugLogOn)console.log('T bei 70% ' + tf70wert); if(debugLogOn)console.log('T bei 80% ' + tf80wert); if(debugLogOn)console.log('T bei 90% ' + tf90wert); //end script
Muß natürlich noch alles internationalisiert und etwas schöner bzw. modularer gemacht werden. Bei Gelegenheit.
Und bei Gelegenheit in das ESP-Programm eingearbeitet. -
@klassisch sagte in ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen:
Mal auf die Schnelle.
dann schreib ich damit mal ganz schnell das letzte um
-
@klassisch tp70 ist identisch, tp80 ist 1 Grad niedriger bei aktueller Temperatur/Feuchte
nur den Trigger hab ich wieder nich hinbekommen
alt:on({id: 'javascript.1.Raumklima.Raum.Werkstatt.Taupunkt', change: "any"}, function() { // löst bei jeder Aktualisierung aus Temp = getState('hm-rpc.0.JEQ0046663.1.TEMPERATURE').val/*Klima Werkstatt:1 TEMPERATURE*/; Hrel = getState('hm-rpc.0.JEQ0046663.1.HUMIDITY').val - 2.5/*Klima Werkstatt:1 HUMIDITY*/; Luftfeuchteberechnungen(Temp,Hrel); setState('javascript.1.Raumklima.Raum.Werkstatt.DETAILS.aw70',Math.round(awWert70()*10)/10, true); setState('javascript.1.Raumklima.Raum.Werkstatt.DETAILS.aw80',Math.round(awWert80()*10)/10, true); });
Versuch neu:
on({id: 'javascript.1.Raumklima.Raum.Werkstatt.Taupunkt', change: "any"}, function() { // löst bei jeder Aktualisierung aus Temp = getState('hm-rpc.0.JEQ0046663.1.TEMPERATURE').val/*Klima Werkstatt:1 TEMPERATURE*/; Hrel = getState('hm-rpc.0.JEQ0046663.1.HUMIDITY').val - 2.5/*Klima Werkstatt:1 HUMIDITY*/; calculateHumidityValues; setState('javascript.1.Raumklima.Raum.Werkstatt.DETAILS.aw70',Math.round(tf70wert()*10)/10, true); setState('javascript.1.Raumklima.Raum.Werkstatt.DETAILS.aw80',Math.round(tf80wert()*10)/10, true); });
-
@homoran sagte in ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen:
Tests mal das:
on({id: 'javascript.1.Raumklima.Raum.Werkstatt.Taupunkt', change: "any"}, function() { // löst bei jeder Aktualisierung aus temp = getState('hm-rpc.0.JEQ0046663.1.TEMPERATURE').val/*Klima Werkstatt:1 TEMPERATURE*/; rel = getState('hm-rpc.0.JEQ0046663.1.HUMIDITY').val - 2.5/*Klima Werkstatt:1 HUMIDITY*/; calculateHumidityValues(); setState('javascript.1.Raumklima.Raum.Werkstatt.DETAILS.aw70',Math.round(tf70wert()*10)/10, true); setState('javascript.1.Raumklima.Raum.Werkstatt.DETAILS.aw80',Math.round(tf80wert()*10)/10, true); });
-
@klassisch sagte in ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen:
Tests mal das:
die () hinter der Funktion habe ich gerade selber eingefügt und warte
-
@homoran Die Funktion erwartet aktuelle Variablen temp und rel. Das will ich noch bei der Internationalisierung glattziehen
-
@klassisch sagte in ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen:
@homoran Die Funktion erwartet aktuelle Variablen temp und rel. Das will ich noch bei der Internationalisierung glattziehen
Aaaah andere variablennamen
da kam gerade :20:15:38.531 error javascript.1 (6588) at Object.<anonymous> (script.js.Wetter_und_Klima.TF80_neu:94:75)
hab jetzt deinen Trigger genommen
-
@klassisch DANKE!!
scheint zu laufen, die Abstände der Werte 70-80-100 gefallen mir jetzt auch optisch besser
Anscheinend hat das Script beim setState die Klammern hinter der Variable nicht gemocht:
Math.round(tf70wert()*10)/10, true);
nach Entfernen läuft jetzt alles
An der Decke dürfte der tf70 nich ganz so kritisch sein, da es hier gut belüftet ist, und der tf80 ist jetzt erst mal weiter weg
-
@homoran Ja, wahrscheinlich hattest Du noch das erste Script implementiert, wo alles übr functions geregelt war. Das ist in diesem Script anders, da ist alles stur runterprogrammert, ohne Funktionen. die vielen Funktionen. Damit sind die Werte Variable und keine Funktionen mehr, also kein () nach dem Namen.
Aber prima, daß es jetzt klappt. Ich muß mir das Skript bei Gelegenheit näher anschauen. Wahrscheinlich kann man damit dann noch ganz einfach das Thema Wandfeuchte über "wdsbauteil" lösen.
Wahrscheinlich noch eine Division dazu und alles wäre elegant aus einem Guss integriert. -
@homoran Also wenn ich mir deine Bilder so ansehe, befürchte ich die Natur gewinnt immer .....
Wo Innen das Wasser "raus" kommt ist relativ, hast du mittlerweile den Eintritt gefunden?Diese Dämmplatten waren früher an der kompletten Decke? Die Luftschicht zwischen Platten und Beton ist wie hoch?
-
@michl75 sagte in ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen:
hast du mittlerweile den Eintritt gefunden?
der wurde bereits letztes Jahr abgedichtet.
den Schaden hatte ich erst im Spätsommer durch Zufall gesehen. Darauf alles saniert.@michl75 sagte in ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen:
Diese Dämmplatten waren früher an der kompletten Decke?
ja.
@michl75 sagte in ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen:
Die Luftschicht zwischen Platten und Beton ist wie hoch?
0-unter 1mm