Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    ESPHome: Wandfeuchte messen-Schimmel vermeiden+Anwendungen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @klassisch last edited by

      @klassisch sagte in ESPHome: Wandfeuchte messen - Schimmel vermeiden:

      getState

      Danke - läuft!

      19:35:07.082	info	javascript.1 (6588) script.js.Wetter_und_Klima.Werkstatt_TP80: Taupunkt: 10.548477384785869
      19:35:07.083	info	javascript.1 (6588) script.js.Wetter_und_Klima.Werkstatt_TP80: Saettigungsdampfdruck: 2090.4541817975487
      19:35:07.083	info	javascript.1 (6588) script.js.Wetter_und_Klima.Werkstatt_TP80: Partialdruck: 1275.1770508965046
      19:35:07.083	info	javascript.1 (6588) script.js.Wetter_und_Klima.Werkstatt_TP80: Habs: 9.484498607491766
      19:35:07.083	info	javascript.1 (6588) script.js.Wetter_und_Klima.Werkstatt_TP80: T bei 80% 14.182271687551786
      19:35:07.083	info	javascript.1 (6588) script.js.Wetter_und_Klima.Werkstatt_TP80: T bei 70% 16.064102027198793
      

      dann will ich mal sehen, ob ich damit noch etwas meine js-Kenntnisse aufbessern kann. (z.B. DP anlegen und befüllen)

      K 1 Reply Last reply Reply Quote 0
      • K
        klassisch Most Active @Homoran last edited by

        @homoran Anlegen erst mal manuell über Admin. Beschreiben via

        setState('DeineId',variable);
        
        Homoran 1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @klassisch last edited by

          @klassisch wollte ich doch machen 😢

          DANKE!

          was ist denn habs?
          die Werte, die dabei rauskommen passen nicht zum Raumklima Skript.
          kann es z.B. sein, dass hier g/Cubicmeter und nicht g/kg gerechnet wird
          hier kommt 9,48 heraus, beim Lüftungsskript 7,6

          K 1 Reply Last reply Reply Quote 0
          • K
            klassisch Most Active @Homoran last edited by

            @homoran Habs ist die Absolute Feuchte in g/m³. Die bevorzugte Einheit, weil man da den Luftdruck nicht braucht.

            Homoran 1 Reply Last reply Reply Quote 1
            • Homoran
              Homoran Global Moderator Administrators @klassisch last edited by Homoran

              @klassisch
              Nochmals Danke für deine Unterstützung.
              Hab es jetzt implementiert bekommen und hoffentlich auch den Trigger korrekt gesetzt.
              Datenpunkte werden korrekt gefüllt und den offset des Raumsensors ("kalibriert" mit den neuen Senosren) hab ich auch drin. Werte passen jetzt mit dem Raumklima übereinander.

              Jetzt wird es langsam unübersichtlich
              Klima_allgemein.png

              Ausschnitt Werkstatt:
              Klima_Werkstatt.png

              Der aw 70 liegt aber verdammt dicht an der Wandtemperatur.
              Da muss ich mal mein Entfeuchter/Heizprogramm nochmal durchdenken.

              EDIT:
              @klassisch
              hier mein Machwerk:

              // Luftfeuchteberechnungen
              // modifiziert nach https://www.pb-schilling.de/baubiologie/luftfeuchte-rechner/ 
              
              const debugLogOn = true;
              
              // Testvariablen 
              var Temp = getState('hm-rpc.0.JEQ0046663.1.TEMPERATURE').val/*Klima Werkstatt:1 TEMPERATURE*/;
              var Hrel = (getState('hm-rpc.0.JEQ0046663.1.HUMIDITY').val)-2.5/*Klima Werkstatt:1 HUMIDITY*/;
              // end Testvariablen
              
              Luftfeuchteberechnungen(Temp,Hrel);
              
              
              
              function Luftfeuchteberechnungen(myTemp,myHrel){ 
                Luftfeuchtevorbereitung(myTemp, myHrel);
                taupunktTemperatur();
                //if(debugLogOn)console.log('Taupunkt: ' + taupunktTemperatur());  
                wasserdampfSaettingungsdruck();
                //if(debugLogOn)console.log('Saettigungsdampfdruck: ' + wasserdampfSaettingungsdruck());
                wasserdampfTeildruck();
                //if(debugLogOn)console.log('Partialdruck: ' + wasserdampfTeildruck());
                wassergehaltLuft();
                //if(debugLogOn)console.log('Habs: ' + wassergehaltLuft());
                awWert80();
                //if(debugLogOn)console.log('T bei 80% ' + awWert80());
                awWert70();
                //if(debugLogOn)console.log('T bei 70% ' + awWert70());
              }
              
              
              
                 function Luftfeuchtevorbereitung( theta, phi) {
                   this.theta = theta;
                   this.phi = phi;
                   if (this.phi > 1) {
                     this.phi = this.phi / 100;
                   }
                   if (this.phi > 1) {
                     this.phi = 1;
                   }
                 };
              
              
                 function taupunktTemperatur() {
                   return Math.pow(this.phi, 0.1247) * (109.8 + this.theta) - 109.8;
                 };
              
              
                 function wasserdampfSaettingungsdruck() {
                   if (this.theta > 0) {
                     return 288.68 * Math.pow(1.098 + this.theta / 100, 8.02);
                   } else {
                     return 4.689 * Math.pow(1.486 + this.theta / 100, 12.3);
                   }
                 };
              
              
                 function wasserdampfTeildruck() {
                   return this.phi * wasserdampfSaettingungsdruck();
                 };
              
                 function wassergehaltLuft() {
                   return 216.7 * wasserdampfTeildruck() * 0.01 / (this.theta + 273.15);
                 };
              
              
                 function awWert80() {
                   var oben, unten;
                   oben = 237.3 * Math.log(611 * Math.pow(10, 7.5 * this.theta / (237.3 + this.theta) * this.phi) / 488.62) / Math.LN10;
                   unten = 7.5 - Math.log(611 * Math.pow(10, 7.5 * this.theta / (237.3 + this.theta) * this.phi) / 488.62) / Math.LN10;
                   return oben / unten;
                 };
              
                 function awWert70() {
                   var oben, unten;
                   oben = 237.8 * Math.log(wasserdampfTeildruck() / (610.78 * 0.7)) / Math.LN10;
                   unten = 7.5 - Math.log(wasserdampfTeildruck() / (610.78 * 0.7)) / Math.LN10;
                   return oben / unten;
                 };
              
              
              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);
              
              
              on('javascript.1.Raumklima.Raum.Werkstatt.Taupunkt',Luftfeuchteberechnungen); // triggert bei Wertänderung;
              
              //end script
              

              1 Reply Last reply Reply Quote 1
              • Homoran
                Homoran Global Moderator Administrators last edited by

                @klassisch
                ich brauche doch nochmal deine Hilfe.
                Entweder ich habe den Trigger nicht richtig gesetzt, oder da ist noch was falsch.
                beim Scriptstart klappt alles, aber entweder die Triggersyntax passt nicht, was mich nicht wundern würde, oder ich rufe die falsche Funktion auf, oder in der Funktion fehlt was (vobereitung()).

                K 1 Reply Last reply Reply Quote 0
                • K
                  klassisch Most Active @Homoran last edited by

                  @homoran ich sehe nichts

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @klassisch last edited by

                    @klassisch sagte in ESPHome: Wandfeuchte messen - Schimmel vermeiden:

                    @homoran ich sehe nichts

                    keinen Fehler oder nicht das Skript im Spoiler?

                    K 1 Reply Last reply Reply Quote 0
                    • K
                      klassisch Most Active @Homoran last edited by klassisch

                      @homoran So, habe jetzt den Spoiler gefunden

                      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);
                      });
                      
                      
                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @klassisch last edited by

                        @klassisch danke!
                        und ich dachte ich hätte etwas mehr js gelernt 😢

                        K 1 Reply Last reply Reply Quote 0
                        • K
                          klassisch Most Active @Homoran last edited by

                          @homoran Ich kratze da auch nur an der Oberfläche. Und gewisse Dinge plappere ich nach wie ein Papagei, ohne mich mal grundegend mit der Struktur beschäftigt zu haben. Das Triggern durch "on" gehört dazu

                          Warum triggerst Du eigentlich auf den Taupunkt, der ja bereits ein verarbeiteter Wert ist und nicht auf einen direkten Sensorwert wie z.B.
                          hm-rpc.0.JEQ0046663.1.TEMPERATURE
                          ?

                          Homoran 1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @klassisch last edited by

                            @klassisch sagte in ESPHome: Wandfeuchte messen - Schimmel vermeiden:

                            Warum triggerst Du eigentlich auf den Taupunkt,

                            weil ich faul bin.
                            die Änderung des Taupunktes beinhalter mögliche Änderungen von Temperatur und/oder Feuchte.
                            Damit erschlage ich beides (denke ich zumindest)

                            Das mit dem Papagei ist genau mein Thema. Aber ich muss es verstanden haben um nicht immer wieder irgendwo nachsehen zu müssen.
                            Deswegen arbeite ich mit Blockly, weil ich nichtmal die Syntax hinbekomme.

                            Inzwischen hat sich der Wert zumindest einmal geändert und getriggert!

                            K 1 Reply Last reply Reply Quote 1
                            • K
                              klassisch Most Active @Homoran last edited by

                              @homoran sagte in ESPHome: Wandfeuchte messen - Schimmel vermeiden:

                              die Änderung des Taupunktes beinhalter mögliche Änderungen von Temperatur und/oder Feuchte.
                              Damit erschlage ich beides (denke ich zumindest)

                              Der HM-Sensor wird wohl eh beides gleichzeitig einliefern, vermute ich.

                              Das mit dem Papagei ist genau mein Thema. Aber ich muss es verstanden haben um nicht immer wieder irgendwo nachsehen zu müssen.

                              Den Anspruch habe ich nicht an mich. Habe mir einen Spickzettel in Notepad++ aufgemacht, wo die häufigsten Dinge als Beispiele drin stehen und ein paar Links zur Doku.
                              Für Grobschlosser-Programmierung braucht man gar nicht sooo viel.
                              Und bei den recht seltenen und langsamen Brechnungen muß ich nicht wirklich optimieren. Habe ja nicht den Anspruch, Adapter-Entwickler zu sein.
                              Habe mir auch deshalb ein i5-6300U Notebook, der nebenbei auch ioBroker macht, für 160 EUR incl. Windows gegönnt.

                              Deswegen arbeite ich mit Blockly, weil ich nichtmal die Syntax hinbekomme.

                              Ich bekomme mit "Rules" gar nichts hin. Nicht gleich kapiert, sofort verworfen.

                              Blockly hat den Spickzettel eingebaut. Das ist praktisch. Aber ich komme mit dem graphischen Zeug immer an die Grenzen. Das wird bei mir recht schnell unübersichtlich.
                              Deshalb habe ich mich auf JS festgelegt. Da findet man auch viele Beispiele bei selfhtml und mediaevent.de

                              Inzwischen hat sich der Wert zumindest einmal geändert und getriggert!

                              Das sieht doch nach einem Erfolg aus! Glückwunsch!

                              Man kann ja mit dem console.log notfalls mitverfolgen, was er tut.
                              Dazu habe ich die constante debugLogOn eingeführt. Während der Entwicklung setze ich die auf true und wenn alles läuft auf false.

                              Homoran 1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @klassisch last edited by Homoran

                                @klassisch sagte in ESPHome: Wandfeuchte messen - Schimmel vermeiden:

                                Das sieht doch nach einem Erfolg aus! Glückwunsch!

                                ist großteils deine Leistung. ich hab nur die Rundung und die states eingebaut.

                                Das mit dem Trigger ärgert mich jetzt.
                                also entweder alles notwendige in einer Funktion (z.B. main()) und diese im Trigger aufrufen, oder im Zrigger innerhalb einer eigenen Funktion (??) alle notwendigen Schritte abarbeiten? Wobei ich diese Syntax nicht auf Anhieb zusammenbekomme.

                                Irgendwann in diesem Leben will ich js können, so!

                                @klassisch sagte in ESPHome: Wandfeuchte messen - Schimmel vermeiden:

                                und wenn alles läuft auf false.

                                und ich Idiot kommentiere sie aus, weil ich das nicht erkannt habe.

                                K 1 Reply Last reply Reply Quote 0
                                • K
                                  klassisch Most Active @Homoran last edited by

                                  @homoran Das on hat halt obrflächlich betrachtet eine blöde Syntax (für mich, der ich nach dem Papageienprinzip arbeite. Wenn man das richtig durchdringt, sieht das vielleicht anders aus. Aber lohnt sich dieser Einarbeitungsaufwand für die paar Zeilen Code, die ich schreibe?)

                                  Man könnte irgendwo ausserhalb des on Blocks eine Funktion definieren, die die Daten holt, die Umrechnung aufruft und dann die neuen Daten schreibt. Also alles, was jetzt im on Block steht in eine Funktion packen und dann im On-Block nur diese Funktion aufrufen. Vielleicht eleganter.
                                  Da es aber nur ein paar Zeilen sind, kann man es auch zwischen die {} des on Blocks schreiben. Das habe ich hier teils aus Bequemlichkeit gemacht teils um die Veränderung genauer zu zeigen.

                                  Könnte also auch so aussehen:

                                  
                                  function LuftfeuchteProzessierung(){
                                   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);
                                  }; 
                                  
                                  on({id: 'hm-rpc.0.JEQ0046663.1.TEMPERATURE', change: "any"}, function() { // löst bei jeder Aktualisierung aus
                                    LuftfeuchteProzessierung();
                                  });
                                  
                                  

                                  Viel wichtiger wäre es mir aber, Ids in Constante zu verfrachten, also zu abstrahieren, und aus dem Code wegzubekommen. Denn dadurch hat man weniger Geschäft, wenn man z.B. einen Sensor wechselt oder das Programm für einen anderen Raum modifiziert.

                                  Also in etwa so:

                                  const temperatureSensorId = 'hm-rpc.0.JEQ0046663.1.TEMPERATURE';
                                  
                                  .....
                                  on({id: temperatureSensorId, change: "any"}, function() { // löst bei jeder Aktualisierung aus
                                    LuftfeuchteProzessierung();
                                  });
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • michl75
                                    michl75 last edited by michl75

                                    Guten Morgen, habe nur eben kurz drübergelesen da Zeitdruck habe... aber letzten Endes gehts hier doch um feuchte in und auf der Mauer sowie Luft und dementsprechende Ablagerung auf kalte Bauteiloberflächen.

                                    kurz zur Berechnung - schaut euch das mal an... das ist Bauphysik und danach machen:
                                    https://building-physics.net/webfm_send/439
                                    und vorallem das:
                                    https://building-physics.net/webfm_send/767

                                    (Dies als Beispiel, gibt viele andere Ausarbeitungen von TU's)

                                    Wie gesagt, eben nur drübergeflogen... aber mal den Link der PDF's anschauen

                                    Viel Erfolg

                                    Homoran 1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @michl75 last edited by

                                      @michl75 sagte in ESPHome: Wandfeuchte messen - Schimmel vermeiden:

                                      Viel Erfolg

                                      danke!
                                      bin aber schon weiter.
                                      Grundlagen sind weitestgehend bekannt, jetzt geht es um die sinnvolle Steuerung von (nicht vorhandener Heizung) und Entfeuchter unter energetischer und klimatischer Optimierung.

                                      1 Reply Last reply Reply Quote 0
                                      • K
                                        klassisch Most Active last edited by Homoran

                                        Um den Bogen wieder elegant zum Ursprungsthema zu schließen und möglichen OT-Beschwerden den Wind aus den Segeln zu nehmen, habe ich das oben verhandelte Thema in den ESP-Home Wandfeuchtesensor Version 3 integriert.
                                        Der Sensor gibt jetzt auch noch die Wandtemperaturen aus, die man braucht, um eine rel. Feuchte von 70% bzw. 80% zu erhalten.
                                        Einfach gesagt, kann man sehen, welche Minimaltemperatur die Wand haben sollte.
                                        Das zugehörige yaml Konfigurationsfile ist im Eingangspost zu finden.

                                        Homoran 1 Reply Last reply Reply Quote 2
                                        • Homoran
                                          Homoran Global Moderator Administrators @klassisch last edited by

                                          @klassisch sagte in ESPHome: Wandfeuchte messen - Schimmel vermeiden:

                                          Der Sensor gibt jetzt auch noch die Wandtemperaturen aus, die man braucht, um eine rel. Feuchte von 70% bzw. 80% zu erhalten.

                                          Das ist eine Super Idee und im Sinne der Schimmelverhütung sinnvoller als der Taupunkt

                                          K 1 Reply Last reply Reply Quote 0
                                          • K
                                            klassisch Most Active @Homoran last edited by

                                            @homoran sagte in ESPHome: Wandfeuchte messen - Schimmel vermeiden:

                                            Das ist eine Super Idee und im Sinne der Schimmelverhütung sinnvoller als der Taupunkt

                                            Das hängt von den Gegebenheiten ab. Die ursprüngliche Auslegung für mein Treppenhaus geht von einer nichtheizbaren Wand und einem Luftentfeuchter in der Nähe der Wand aus. Da steuere ich den Entfeuchter in Abhängigkeit von der Wandfeuchte.
                                            Und kann aus dem Wandfeuchtewert auch etwas zur "Gefährdungelage" ableiten.
                                            Die Kombination nicht wirklich dichtes Treppenhaus mit Kelleraussenwand erfordert vor allem im Sommer Aufmerksamkeit.
                                            Da das Treppenhaus im oberen Stckwerk unter dem Dach im Sommer ohnehin zu warm ist, wäre ein Erwärmen der Kellerwand für die Bewohner kontraproduktiv. Also ist hier eher Entfeuchten angesagt, auch wenn von draußen wieder neue Feuchtigkeit eingetragen wird.

                                            Hat man in einer anderen Konfiguration z.B. in einem heizbaren Raum, vorwiegend im Winter Probleme, dann kann die z.B. 80% Wandtempertur in die Temperaturregelung des Raums einbeziehen.
                                            Dieser Wert wird aber rein aus den Werten der Luft berechnet.
                                            Mit dem Kontaktthermometer zur Wand kann (bzw. muß) man dann überprüfen, ob die Wand die gewünschte Temperatur auch wirklich einnimmt. Das hängt ja von Aussentemperatur und Isolation ab.
                                            Der eigentliche Mehrwert des gesamten Sensors wird also vom Wandthermometer geliefert.
                                            Klar. Die Wand ist das gefährdete Bauteil und zugleich das am wenigsten bekannte. Eine reine Messung in der Luft reicht da oft nicht aus. Eine Messung der Luft in sehr geringem Abstand zur Wand ist schon besser. Aber erst die zusätzliche Messung der unbekannten Wandtemperatur bringt den Mehrwert.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            694
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            122
                                            13107
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo