Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Die Sache mir der Luftfeuchtigkeit, dem Taupunkt und der Schimmelgefahr

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Die Sache mir der Luftfeuchtigkeit, dem Taupunkt und der Schimmelgefahr

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Solear last edited by

      Läuft wirklich gut, und entfeuchtet meinen Keller hervorragend und zuverlässig Dank paul53 seinem Code.

      Von coffee-junk das sieht auch hervorragend aus.

      1 Reply Last reply Reply Quote 0
      • C
        coffee-junk last edited by

        @eric2905:

        schau Dir mal diesen Thread an ==> http://forum.iobroker.net/viewtopic.php?t=2645

        Da haben wir sowas mal umgesetzt. `

        Ja, habe ich mir mal angeschaut, sieht gut aus! Da hab ich wohl teilweise das Rad neu erfunden :roll:

        Doch man sollte das mit der Schimmelgefahr nicht unterschätzen.

        http://www.tbas.de/Der-fRSi-Wert-zur-Be … inlic.html

        Mein Script ist eigentlich noch keine "fertige" Anwendung, es sollte lediglich die Funktionsweise des "Objekts Luftfeuchte" erklären. Mir war wichtig das ganze ohne zusätzliche Module rein in JS zu haben….

        Hier sieht man schön, wie sich Änderungen der Parameter auswirken:
        1573_klima.jpg

        Durch das Script habe ich den täglichen Strombedarf für den Luftentfeuchter von ca. 1000Wh/Tag auf 300Wh/Tag gedrückt, da ich jetzt nicht mehr fix auf eine bestimmte Luftfeuchte reguliere, wobei als oberster Grenzwert 65%rel im Raum erlaubt ist und an der kältesten Stelle 69%rel.

        Macht pro Monat im Augenblick ca. 9 KWh weniger Stromverbrauch…

        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 last edited by

          Zur Schimmelgefahr und der Steuerung eines Entfeuchters wurden für die http://hausautomation.stern-av.de/homematic-raumklimaueberwachung-und-entfeuchtung/ Lösungen diskutiert und Skripte erstellt.

          1 Reply Last reply Reply Quote 0
          • PowerPan
            PowerPan @coffee-junk last edited by

            @coffee-junk

            Hi ich würde davon gerne einen Adapter bauen und allen einfach bereitstellen 😉

            Was machen die ganzen ! Im Code ?

            Kannst du mir den Code anständig formatiert zukommen lassen ?

            BBTown H D Chaot 4 Replies Last reply Reply Quote 1
            • BBTown
              BBTown @PowerPan last edited by

              @PowerPan Du weisst schon, dass Du auf 2,5 Jahre alten Thread antwortest?

              PowerPan 1 Reply Last reply Reply Quote 0
              • PowerPan
                PowerPan @BBTown last edited by

                @BBTown
                Ja .... und?

                1 Reply Last reply Reply Quote 1
                • H
                  Hamudulu @PowerPan last edited by

                  @PowerPan Da wär ich sehr interessiert dran...

                  1 Reply Last reply Reply Quote 0
                  • B
                    BoBeRzE last edited by

                    @PowerPan Einen Adapter würde ich auch klasse finden (y)

                    1 Reply Last reply Reply Quote 0
                    • K
                      klaus88 @coffee-junk last edited by

                      @coffee-junk : Erstmal Danke für die wirklich tolle Erklärung, aber eher eine allgemeine Frage an dich: Welchen Luftenetfeuchter verwendest du, denn ich bekomme keinen, den ich per (z.B. WLAN Steckdose oder HomematicIP) aus und einschalten kann. Jeder Entfeuchter braucht prinzipiell Strom, aber muss dann extra noch am Bedienfeld "speziell" eingestellt werden, damit er auch dann läuft. Kannst du mir hier einen Tipp geben, bzw. kann mir wer vom Forum einen Tipp geben? Danke Klaus

                      W 1 Reply Last reply Reply Quote 0
                      • D
                        darkiop Most Active @PowerPan last edited by darkiop

                        @PowerPan sagte in Die Sache mir der Luftfeuchtigkeit, dem Taupunkt und der Schimmelgefahr:

                        Was machen die ganzen ! Im Code ?

                        Das sind Kommentare von der HomeMatic Skript-Sprache.

                        Hat das Skript noch jemand über ioBroker im Einsatz?

                        1 Reply Last reply Reply Quote 0
                        • Chaot
                          Chaot @PowerPan last edited by

                          @PowerPan An einem Adapter wäre ich auch sehr interessiert.

                          @darkiop Ich hatte das andere Script mal eine Zit lang im Einsatz. Aber nach der Systemumstellung auf den NUC habe ich das wohl wieder vergessen. Das werde ich mal wieder aktivieren bzw. dann einen Adapter nutzen wenn der gemacht würde.

                          D 1 Reply Last reply Reply Quote 0
                          • D
                            darkiop Most Active @Chaot last edited by

                            @Chaot Würdest du deine Version mal posten?

                            Chaot 2 Replies Last reply Reply Quote 0
                            • Chaot
                              Chaot @darkiop last edited by

                              @darkiop muss ich mal raussuchen. Ich habe die nur hier auf dem Rechner. Wie gesagt habe ich die nie mehr eingebaut nach dem Umzug auf den NUC.

                              1 Reply Last reply Reply Quote 0
                              • Chaot
                                Chaot @darkiop last edited by

                                @darkiop Ich habe mir das heute nochmal rausgekramt.
                                Aber ich bringe das Script nicht mehr zum laufen.
                                Keine Ahnung warum.

                                // von paul53 übernommen und angepasst
                                // http://forum.iobroker.net/viewtopic.php?f=20&t=2437&hilit=L%C3%BCftung%2A#p21476
                                createState('0_userdata.0.Taupunkt.Aussen.Temperatur', 0);            // °C
                                createState('0_userdata.0.Taupunkt.Aussen.rel_Feuchte', 0);           // %
                                createState('0_userdata.0.Taupunkt.Aussen.Feuchtegehalt', 0);         // g/kg  (nicht g/m3 !)
                                createState('0_userdata.0.Taupunkt.Aussen.Taupunkt', 0);              // °C
                                createState('0_userdata.0.Taupunkt.Aussen.Enthalpie', 0);             // kJ/kg
                                // Ordner Toilette/Aussen
                                // Offsets
                                var toffset = 0.0; // in K zur Korrektur, falls nötig
                                var rhoffset = 0;  // in % zur Korrektur, falls nötig
                                var tsid = "sonoff.0.BadSensor.BME280_Temperature";		// Sensor Aussen
                                var hsid = "sonoff.0.BadSensor.BME280_Humidity";
                                var tid = "0_userdata.0.Taupunkt.Aussen.Temperatur";
                                var rhid = "0_userdata.0.Taupunkt.Aussen.rel_Feuchte";
                                var xid = "0_userdata.0.Taupunkt.Aussen.Feuchtegehalt";
                                var dpid = "0_userdata.0.Taupunkt.Aussen.Taupunkt";
                                var enth = "0_userdata.0.Taupunkt.Aussen.Enthalpie";
                                var t = getState(tsid).val + toffset; // Temperatur, korrigiert in °C
                                var rh = getState(hsid).val + rhoffset; // rel. Feuchte, korrigiert in %
                                var x;  // Feuchtegehalt in g/kg
                                var dp; // Taupunkt in °C
                                var  DP = require('dewpoint');
                                // 70 m über NN
                                var xdp = new DP(36); 
                                function calc() {
                                  var y = xdp.Calc(t, rh);
                                  x = y.x;
                                  dp = y.dp;
                                  setState(xid, x);
                                  setState(dpid, dp);
                                }
                                function anzeige() {
                                 // Enthalpie berechnen
                                  var h = (1.00545 * t + (2.500827 + 0.00185894 * t) * x).toFixed(1);
                                  var tanz = t.toFixed(1);
                                  dp = dp.toFixed(1);
                                  var rhanz = rh.toFixed(0);
                                 x = x.toFixed(2);
                                   setState(tid, t);
                                  setState(rhid, rh);
                                  setState(xid, x);
                                  setState(dpid, dp);
                                  setState(enth, h);
                                }
                                function klima() {
                                 calc();
                                 anzeige();
                                }
                                klima(); // Script start
                                on(tsid, function (dp) {
                                  t = dp.state.val + toffset; 
                                  setState(tid, t);
                                 klima();
                                });
                                on(hsid, function (dp) {
                                  rh = dp.state.val + rhoffset; 
                                  setState(rhid, rh); 
                                 klima();
                                });
                                


                                // von paul53 übernommen und angepasst
                                // http://forum.iobroker.net/viewtopic.php?f=20&t=2437&hilit=L%C3%BCftung%2A#p21476
                                createState('0_userdata.0.Taupunkt.Toilette.Temperatur', 0);            // °C
                                createState('0_userdata.0.Taupunkt.Toilette.rel_Feuchte', 0);           // %
                                createState('0_userdata.0.Taupunkt.Toilette.Feuchtegehalt', 0);         // g/kg  (nicht g/m3 !)
                                createState('0_userdata.0.Taupunkt.Toilette.Taupunkt', 0);              // °C
                                createState('0_userdata.0.Taupunkt.Toilette.Enthalpie', 0);             // kJ/kg
                                // Ordner Toilette/Toilette
                                // Offsets
                                var toffset = 0.0; // in K zur Korrektur, falls nötig
                                var rhoffset = 0;  // in % zur Korrektur, falls nötig
                                var tsid = "sonoff.0.BadSensor.SI7021_Temperature"; // Toilette Temperatur
                                var hsid = "sonoff.0.BadSensor.SI7021_Humidity";    // Toilette relative Feuchtigkeit
                                var tid = "0_userdata.0.Taupunkt.Toilette.Temperatur";
                                var rhid = "0_userdata.0.Taupunkt.Toilette.rel_Feuchte";
                                var xid = "0_userdata.0.Taupunkt.Toilette.Feuchtegehalt";
                                var dpid = "0_userdata.0.Taupunkt.Toilette.Taupunkt";
                                var enth = "0_userdata.0.Taupunkt.Toilette.Enthalpie";
                                var t = getState(tsid).val + toffset;           // Temperatur, korrigiert in °C
                                var rh = getState(hsid).val + rhoffset;         // rel. Feuchte, korrigiert in %
                                var x;  // Feuchtegehalt in g/kg
                                var dp; // Taupunkt in °C
                                var  DP = require('dewpoint');
                                // 275 m über NN (Meter über dem Meeresspiegel)
                                var xdp = new DP(275); 
                                function calc() {
                                  var y = xdp.Calc(t, rh);
                                  x = y.x;
                                  dp = y.dp;
                                  setState(xid, x);
                                  setState(dpid, dp);
                                }
                                function anzeige() {
                                 // Enthalpie berechnen
                                  var h = (1.00545 * t + (2.500827 + 0.00185894 * t) * x).toFixed(1);
                                  dp = dp.toFixed(1);
                                  x = x.toFixed(2);
                                   setState(tid, t);
                                  setState(rhid, rh);
                                  setState(xid, x);
                                  setState(dpid, dp);
                                  setState(enth, h);
                                }
                                function klima() {
                                 calc();
                                 anzeige();
                                }
                                klima(); // Script start
                                on(tsid, function (dp) {
                                  t = dp.state.val + toffset; 
                                  setState(tid, t);
                                 klima();
                                });
                                on(hsid, function (dp) {
                                  rh = dp.state.val + rhoffset; 
                                  setState(rhid, rh); 
                                 klima();
                                });
                                


                                // Ordner Toilette/Fenstersteuerung
                                createState('0_userdata.0.Taupunkt.Fenstersteuerung.Mindesttemperatur');              // 12   => in Objekte oder vis festlegen
                                createState('0_userdata.0.Taupunkt.Fenstersteuerung.Fenstersteuerung.Maximaltemperatur');              // 25
                                createState('0_userdata.0.Taupunkt.Fenstersteuerung.Fenstersteuerung.Mindestfeuchte');                  // 55
                                createState('0_userdata.0.Taupunkt.Fenstersteuerung.Fenstersteuerung.Maximalfeuchte');                 // 63
                                var mintid = getIdByName("0_userdata.0.Taupunkt.Fenstersteuerung.Fenstersteuerung.Mindesttemperatur"); // Holt sich State
                                var maxtid = getIdByName("0_userdata.0.Taupunkt.Fenstersteuerung.Fenstersteuerung.Maximaltemperatur");
                                var minfid = getIdByName("0_userdata.0.Taupunkt.Fenstersteuerung.Fenstersteuerung.Mindestfeuchte");
                                var maxfid = getIdByName("0_userdata.0.Taupunkt.Fenstersteuerung.Fenstersteuerung.Maximalfeuchte");
                                var mint = getState(mintid).val;                                // zieht Wert aus State
                                var maxt = getState(maxtid).val;
                                var minf = getState(minfid).val;
                                var maxf = getState(maxfid).val;
                                var aktfid = "sonoff.0.BadSensor.SI7021_Humidity";      // Aktuelle Kellerfeuchte relativ
                                var akttid = "sonoff.0.BadSensor.SI7021_Temperature";   // Aktuelle Kellertemperatur 
                                var levelwa = "hm-rpc.0.MEQ051xxxx.1.LEVEL";        // HM Jalousieaktor Waschraum Level:      0 % = zu; 100 % auf
                                var levelsi = "hm-rpc.0.MEQ039xxxx.1.LEVEL";        // HM Jalousieaktor Sicherungsraum Level: 0 % = zu; 100 % auf
                                var aktf = getState(aktfid).val;
                                var aktt = getState(akttid).val;
                                var lueft = getState('Lueften.Lueften').val;        // Lüften möglich? Aus Script Toilette/Lueften
                                //var mint = 12;       // Mindesttemperatur in °C für Toilette
                                //var maxt = 25;      // Maximaltemperatur in °C für Toilette
                                //var minf = 57;       // Schliessfeuchte in % (relativ)
                                //var maxf = 63;       // Öffnungsfeuchte in % (relativ)
                                // Fenster Waschraum
                                function fensterwasch() {
                                  if (lueft === false || aktt <= mint || aktt >= maxt || aktf <= minf) setState(levelwa, 0); 
                                  else if (lueft === true && aktf >= maxf) setState(levelwa, 100);
                                }
                                // Fenster Sicherungsraum
                                function fenstersich() {
                                  if (lueft === false || aktt <= mint || aktt >= maxt || aktf <= minf) setState(levelsi, 0);
                                  else if (lueft === true && aktf >= maxf) setState(levelsi, 100);
                                }
                                // Script Start und Auslöser
                                fensterwasch();     
                                fenstersich();
                                on(aktfid, function (dp) {
                                  aktf = dp.state.val;
                                 fensterwasch();
                                 fenstersich();
                                });
                                on(akttid, function (dp) {
                                  aktt = dp.state.val;
                                 fensterwasch();
                                 fenstersich();
                                });
                                // Pushovernachricht über einen Fenstersensor
                                // on({id: "hm-rpc.0.MEQ028xxxx.1.STATE"/*Fenstersensor Keller Waschraum.STATE*/, val: true, change: "ne"}, function() {     //Bei Änderung auf TRUE
                                  sendTo("pushover", "Fenster wurden geöffnet");                                                          // Sende Pushover Nachricht
                                });
                                // on({id: "hm-rpc.0.MEQ028xxxx.1.STATE"/*Fenstersensor Keller Waschraum.STATE*/, val: false, change: "ne"}, function() {
                                  sendTo("pushover", "Fenster wurden geschlossen");
                                });
                                


                                // Ordner Toilette/Lueften
                                // Prüft ob Lüften möglich ist
                                // von paul53 übernommen und angepasst
                                //http://forum.iobroker.net/viewtopic.php?f=20&t=2437&hilit=L%C3%BCftung%2A&start=20#p21506
                                createState('Lueften.Lueften');      
                                var tiid = getIdByName("0_userdata.0.Taupunkt.Toilette.Temperatur");
                                var taid = getIdByName("0_userdata.0.Taupunkt.Aussen.Temperatur");
                                var xiid = getIdByName("0_userdata.0.Taupunkt.Toilette.Feuchtegehalt");
                                var xaid = getIdByName("0_userdata.0.Taupunkt.Aussen.Feuchtegehalt");
                                var lid  = getIdByName("Lueften.Lueften");
                                var ti = getState(tiid).val;  // Raumtemperatur in °C
                                var ta = getState(taid).val;  // Aussentemperatur in °C
                                var xi = getState(xiid).val;  // Raumfeuchtegehalt in g/kg
                                var xa = getState(xaid).val;  // Aussenfeuchtegehalt in g/kg
                                // Lüftung steuern mit 0,3 g/kg und 0,5 K Hysterese
                                function lueften() {
                                 if (xa <= (xi - 0.4) && ta <= (ti - 0.6) && ti >= 10.0) setState(lid, true);
                                 else if (xa >= (xi - 0.1) || ta >= (ti - 0.1) || ti <= 9.5) setState(lid, false);
                                
                                }
                                lueften();  // Script start
                                on(xiid, function (dp) {
                                  xi = dp.state.val;
                                 lueften();
                                });
                                on(xaid, function (dp) {
                                  xa = dp.state.val;
                                 lueften();
                                });
                                on(tiid, function (dp) {
                                  ti = dp.state.val;
                                 lueften();
                                });
                                on(taid, function (dp) {
                                  ta = dp.state.val;
                                 lueften();
                                });
                                

                                Wobei ich die Fenstersteuerung nicht im Einsatz hatte.

                                Chaot 1 Reply Last reply Reply Quote 0
                                • Chaot
                                  Chaot @Chaot last edited by

                                  @Chaot Ok,
                                  habe den letzten Fehler gefunden.
                                  War im Script "Lueften" versteckt.

                                  // Ordner Toilette/Lueften
                                  // Prüft ob Lüften möglich ist
                                  // von paul53 übernommen und angepasst
                                  //http://forum.iobroker.net/viewtopic.php?f=20&t=2437&hilit=L%C3%BCftung%2A&start=20#p21506
                                  createState('0_userdata.0.Taupunkt.Lueften.Lueften');      
                                  var tiid = getIdByName("0_userdata.0.Taupunkt.Toilette.Temperatur");
                                  var taid = getIdByName("0_userdata.0.Taupunkt.Aussen.Temperatur");
                                  var xiid = getIdByName("0_userdata.0.Taupunkt.Toilette.Feuchtegehalt");
                                  var xaid = getIdByName("0_userdata.0.Taupunkt.Aussen.Feuchtegehalt");
                                  var lid  = getIdByName("0_userdata.0.Taupunkt.Lueften.Lueften");
                                  var ti = getState(tiid).val;  // Raumtemperatur in °C
                                  var ta = getState(taid).val;  // Aussentemperatur in °C
                                  var xi = getState(xiid).val;  // Raumfeuchtegehalt in g/kg
                                  var xa = getState(xaid).val;  // Aussenfeuchtegehalt in g/kg
                                  // Lüftung steuern mit 0,3 g/kg und 0,5 K Hysterese
                                  function lueften() {
                                   if (xa <= (xi - 0.4) && ta <= (ti - 0.6) && ti >= 10.0) setState(lid, true);
                                   else if (xa >= (xi - 0.1) || ta >= (ti - 0.1) || ti <= 9.5) setState(lid, false);
                                  
                                  }
                                  lueften();  // Script start
                                  on(xiid, function (dp) {
                                    xi = dp.state.val;
                                   lueften();
                                  });
                                  on(xaid, function (dp) {
                                    xa = dp.state.val;
                                   lueften();
                                  });
                                  on(tiid, function (dp) {
                                    ti = dp.state.val;
                                   lueften();
                                  });
                                  on(taid, function (dp) {
                                    ta = dp.state.val;
                                   lueften();
                                  });
                                  

                                  paul53 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @Chaot last edited by paul53

                                    @Chaot
                                    Wenn direkt die ID angegeben wird, darf nicht die Funktion getIdByName() verwendet werden.
                                    Mit createState() kann kein Datenpunkt unter 0_userdata.0 erzeugt werden.

                                    Chaot 1 Reply Last reply Reply Quote 0
                                    • Chaot
                                      Chaot @paul53 last edited by

                                      @paul53 Das habe ich mir schon fast gedacht.
                                      Ok, die Datenpunkte habe ich per Hand angelegt, weil ich schnell mal testen wollte ob der Rest vom Script fehlerfrei läuft.
                                      So wie es scheint scheint abber alles zu funktionieren.
                                      Ich hatte das damals nur als Lüftungsempfehlung im Einsatz und wollte dann noch einen automatischen Lüfter drüber steuern.
                                      Aber das habe ich dann wieder verworfen (warum weiß ich nicht mehr).
                                      Aktuell denke ich das ich das aber wieder in Angriff nehmen werde.

                                      1 Reply Last reply Reply Quote 0
                                      • W
                                        Walkinlarge2010 @klaus88 last edited by

                                        @klaus88 said in Die Sache mir der Luftfeuchtigkeit, dem Taupunkt und der Schimmelgefahr:

                                        @coffee-junk : Erstmal Danke für die wirklich tolle Erklärung, aber eher eine allgemeine Frage an dich: Welchen Luftenetfeuchter verwendest du, denn ich bekomme keinen, den ich per (z.B. WLAN Steckdose oder HomematicIP) aus und einschalten kann. Jeder Entfeuchter braucht prinzipiell Strom, aber muss dann extra noch am Bedienfeld "speziell" eingestellt werden, damit er auch dann läuft. Kannst du mir hier einen Tipp geben, bzw. kann mir wer vom Forum einen Tipp geben? Danke Klaus

                                        Den habe ich genommen: Comfee MDDF-16DEN3 Luftentfeuchter, Bautrockner, 16L in 24h, Raumgröße ca. 80m³ https://www.amazon.de/dp/B01A6SV4ZA/ref=cm_sw_r_cp_tai_p78bEbQ3BKYJ0

                                        Wird bei mir mit einer Steckdose geschalten und kann so aktiviert werden, da er einen always on modus hat 🙂

                                        K 1 Reply Last reply Reply Quote 1
                                        • K
                                          klaus88 @Walkinlarge2010 last edited by

                                          @Walkinlarge2010 DANKE und schon bestellt 👍

                                          siggi85 1 Reply Last reply Reply Quote 0
                                          • siggi85
                                            siggi85 @klaus88 last edited by

                                            Ist nun schon jemand an einem Adapter dran um diese Berechnungen komfortabel über eine Instanz zu erstellen. 🙂

                                            W 1 Reply Last reply Reply Quote 4
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            656
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            16
                                            25
                                            9261
                                            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