Zeit messen, in der ein Luftentfeuchter an war

Fragen zum Skripten mit ioBroker.javascript
Antworten
Christof.Kac
starter
Beiträge: 32
Registriert: 31.10.2017, 16:39

Zeit messen, in der ein Luftentfeuchter an war

Beitrag von Christof.Kac » 14.06.2018, 21:22

Hallo,
ich steuere einen Luftentfeuchter, der bei einer Luftfeuchtigkeit > 60% im Keller anspringt und bei 58% wieder ausgeht.
Wie kann ich die Zeit erfassen, in der der Luftentfeuchter an ist?
Dieses würde ich gerne in einen State schreiben, den ich dann schön mit Flot darstellen kann.

Vielleicht noch eine andere, technische Frage: Anstatt 60% als festen Schwellwert zu nutzen, kann man das auch pfiffiger machen? Wenn die Wand warm ist, kann man ja vielleicht mehr als 60% erlauben? Hier fehlen mir Grundlagen zum Thema Schimmelbildung....vielleicht hat jemand von Euch ja mehr Erfahrung.

Danke
Christof
ioBroker admin 3 mit cloud auf Raspberry Pi 3 mit CCU2, Rademacher Homepilot, FS20, Homematic, Google Home

Walkinlarge2010!
starter
Beiträge: 78
Registriert: 27.02.2018, 21:37

Re: Zeit messen, in der ein Luftentfeuchter an war

Beitrag von Walkinlarge2010! » 14.06.2018, 21:52

Ich habe mir ein Script gebastelt, das mir den Stromverbrauch berechnet. Es schreib den Startwert in eine Variable und den Endwert. Die beiden werden dann subtrahiert und ich hab den Verbrauch. Ggf. Geht das auch wenn man die Zeit dort einsetzt.

Ich starte den Trockner deutlich später (bei 68%) und lasse ihn bis 60% laufen. Problematisch ist es eigentlich nur, wenn warme Luft (wärmer als der Raum) mit hoher Feuchtigkeit auf die kalten Wände trifft. Dann kondensiert das Wasser. Ggf kannst du dir auch die absolute feuchte berechnen, dann weißt du wann lüften was bringt und wann nicht.

Hier mal mein Export von meinem Trockner Script (ein Blockly)

Code: Alles auswählen

<xml xmlns="http://www.w3.org/1999/xhtml">
  <block type="on_ext" id=":ROJ@N_D=Q%GCc9K}z}5" x="38" y="63">
    <mutation items="1"></mutation>
    <field name="CONDITION">any</field>
    <field name="ACK_CONDITION"></field>
    <value name="OID0">
      <shadow type="field_oid" id="5V|dkOvzmM@1f)i6?=-C">
        <field name="oid">netatmo.0.BN-Friesdorf.Keller.Humidity.Humidity</field>
      </shadow>
    </value>
    <statement name="STATEMENT">
      <block type="controls_if" id="j_^7|7Mual6u4@`8_w5U">
        <value name="IF0">
          <block type="logic_compare" id="t/?owzvRa.Gd7GR@|+o6" inline="false">
            <field name="OP">EQ</field>
            <value name="A">
              <block type="get_value" id=".;l^H,V:CW#7m{d^~i{h">
                <field name="ATTR">val</field>
                <field name="OID">javascript.0.Trockner.Lufttrockner_Automatik_on</field>
              </block>
            </value>
            <value name="B">
              <block type="logic_boolean" id="Mtl#ZK0u8?hA,U0qK{#o">
                <field name="BOOL">TRUE</field>
              </block>
            </value>
          </block>
        </value>
        <statement name="DO0">
          <block type="controls_if" id="Q_IQUh:I-6G[K8wr/yRy">
            <mutation elseif="1"></mutation>
            <value name="IF0">
              <block type="logic_compare" id="^WnEw4(W~ug4TO*IX)3U" inline="false">
                <field name="OP">GTE</field>
                <value name="A">
                  <block type="get_value" id="6J}MN5e/.7qn:K5vg{%4">
                    <field name="ATTR">val</field>
                    <field name="OID">netatmo.0.BN-Friesdorf.Keller.Humidity.Humidity</field>
                  </block>
                </value>
                <value name="B">
                  <block type="math_number" id="Rl;dT0qD=l-y)(]CGLXP">
                    <field name="NUM">68</field>
                  </block>
                </value>
              </block>
            </value>
            <statement name="DO0">
              <block type="control" id="FZGcPUk9Xe4lVV~,l8CR">
                <mutation delay_input="false"></mutation>
                <field name="OID">hm-rpc.0.LTK0120725.1.STATE</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="logic_boolean" id="DJ[9kA+Y`3+t@E34p}?.">
                    <field name="BOOL">TRUE</field>
                  </block>
                </value>
              </block>
            </statement>
            <value name="IF1">
              <block type="logic_compare" id="-wHa`3Mh;W@P_Z+c1b86" inline="false">
                <field name="OP">LTE</field>
                <value name="A">
                  <block type="get_value" id="u:=WcDZ#~Zn5DqIwz@|*">
                    <field name="ATTR">val</field>
                    <field name="OID">netatmo.0.BN-Friesdorf.Keller.Humidity.Humidity</field>
                  </block>
                </value>
                <value name="B">
                  <block type="math_number" id="wB~4`;wU~utxd@;bA6LY">
                    <field name="NUM">60</field>
                  </block>
                </value>
              </block>
            </value>
            <statement name="DO1">
              <block type="control" id="gl1x)@Tmdu!|FZ9Y(e#Q">
                <mutation delay_input="false"></mutation>
                <field name="OID">hm-rpc.0.LTK0120725.1.STATE</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="logic_boolean" id="0h04LV7@Qlfw8E8TLNmO">
                    <field name="BOOL">FALSE</field>
                  </block>
                </value>
              </block>
            </statement>
          </block>
        </statement>
      </block>
    </statement>
    <next>
      <block type="on_ext" id="Mt!nURLt|}W4b{NiD`eR">
        <mutation items="1"></mutation>
        <field name="CONDITION">ne</field>
        <field name="ACK_CONDITION"></field>
        <value name="OID0">
          <shadow type="field_oid" id="*#*f7+ja=`(XlEDsJpBR">
            <field name="oid">hm-rpc.0.LTK0120725.1.STATE</field>
          </shadow>
        </value>
        <statement name="STATEMENT">
          <block type="controls_if" id="?Zx]/=Jz2toVEhlL[W}~">
            <mutation else="1"></mutation>
            <value name="IF0">
              <block type="logic_compare" id="600#W}W]Ek.S!EXK^BNb" inline="false">
                <field name="OP">EQ</field>
                <value name="A">
                  <block type="get_value" id="u?W4X8(MJ){{[ez}nBM=">
                    <field name="ATTR">val</field>
                    <field name="OID">hm-rpc.0.LTK0120725.1.STATE</field>
                  </block>
                </value>
                <value name="B">
                  <block type="logic_boolean" id="bD%pv-ly|`C6HmCnEQsj">
                    <field name="BOOL">TRUE</field>
                  </block>
                </value>
              </block>
            </value>
            <statement name="DO0">
              <block type="update" id="8*LT]go;;RmKc84pUf6n">
                <mutation delay_input="false"></mutation>
                <field name="OID">javascript.0.Trockner.Lufttrockner_Status_on</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="math_number" id="|s}uSQtFKEX)u|^(M+Qf">
                    <field name="NUM">1</field>
                  </block>
                </value>
                <next>
                  <block type="variables_set" id="lKI-+VlN9j{lRbno9eOL">
                    <field name="VAR">Stromzähler_Beginn</field>
                    <value name="VALUE">
                      <block type="math_arithmetic" id="pqol-:SlthbzQZ{J8=~#">
                        <field name="OP">DIVIDE</field>
                        <value name="A">
                          <shadow type="math_number" id="j`I}nuE0pp)`7vJ--SSv">
                            <field name="NUM">1</field>
                          </shadow>
                          <block type="get_value" id="Q:B~mW3M[{RXx8cVU%7T">
                            <field name="ATTR">val</field>
                            <field name="OID">hm-rpc.0.LTK0120725.2.ENERGY_COUNTER</field>
                          </block>
                        </value>
                        <value name="B">
                          <shadow type="math_number" id=":7?6lka*Rqyxjca|8fS_">
                            <field name="NUM">1000</field>
                          </shadow>
                        </value>
                      </block>
                    </value>
                    <next>
                      <block type="pushover" id="u,g~oFTXn8kn-Sjcy:~?">
                        <field name="INSTANCE"></field>
                        <field name="SOUND"></field>
                        <field name="PRIORITY">0</field>
                        <field name="LOG"></field>
                        <value name="MESSAGE">
                          <shadow type="text" id="K5NNriQiL_DsF(|{:U;^">
                            <field name="TEXT">Trocknung im Büro UG wurde gestartet.</field>
                          </shadow>
                        </value>
                        <value name="TITLE">
                          <block type="text" id="B%fd%J:],#1z95C^v`gF">
                            <field name="TEXT">Lufttrockner</field>
                          </block>
                        </value>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </statement>
            <statement name="ELSE">
              <block type="update" id="91y*3,9aHH].]U9dkWNI">
                <mutation delay_input="false"></mutation>
                <field name="OID">javascript.0.Trockner.Lufttrockner_Status_on</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="math_number" id="8UzVdyD8(rR0F`5PCDZ@">
                    <field name="NUM">0</field>
                  </block>
                </value>
                <next>
                  <block type="variables_set" id="-@U207#t340Ie:qKbng]">
                    <field name="VAR">Stromzähler_Ende</field>
                    <value name="VALUE">
                      <block type="math_arithmetic" id="1O1YoOE:MD)yDvrh=D~`">
                        <field name="OP">DIVIDE</field>
                        <value name="A">
                          <shadow type="math_number" id="+L%s!KX{xyFcd2V}4tVh">
                            <field name="NUM">1</field>
                          </shadow>
                          <block type="get_value" id="K-=,K4CvyBVDL*Ldgrnb">
                            <field name="ATTR">val</field>
                            <field name="OID">hm-rpc.0.LTK0120725.2.ENERGY_COUNTER</field>
                          </block>
                        </value>
                        <value name="B">
                          <shadow type="math_number" id="mtFo1=!zzofPD?WrvA!#">
                            <field name="NUM">1000</field>
                          </shadow>
                        </value>
                      </block>
                    </value>
                    <next>
                      <block type="variables_set" id="V3?i7eh4kS5po*]udKWD">
                        <field name="VAR">Stromverbrauch</field>
                        <value name="VALUE">
                          <block type="math_arithmetic" id="aj?xu_8F6(kKwNkm*OR^">
                            <field name="OP">DIVIDE</field>
                            <value name="A">
                              <shadow type="math_number" id="xkvXpH}^y_%EZ-q-T_jq">
                                <field name="NUM">1</field>
                              </shadow>
                              <block type="math_round" id="LIS;;Rccg41?G;QR{JfI">
                                <field name="OP">ROUND</field>
                                <value name="NUM">
                                  <shadow type="math_number" id="[~c+blf9GQ03OV%WHS3a">
                                    <field name="NUM">3.1</field>
                                  </shadow>
                                  <block type="math_arithmetic" id="B{?HiiV`v[qf!*ojx?g@">
                                    <field name="OP">MULTIPLY</field>
                                    <value name="A">
                                      <shadow type="math_number" id="cKL.vDT@U1AdMje#(|U#">
                                        <field name="NUM">1</field>
                                      </shadow>
                                      <block type="math_arithmetic" id="EBW37VKFg32D87)7H35k">
                                        <field name="OP">MINUS</field>
                                        <value name="A">
                                          <shadow type="math_number" id="K:C1[slGeKPmKYP;53g-">
                                            <field name="NUM">1</field>
                                          </shadow>
                                          <block type="variables_get" id="h3!255L?egBZ_%[A.H3x">
                                            <field name="VAR">Stromzähler_Ende</field>
                                          </block>
                                        </value>
                                        <value name="B">
                                          <shadow type="math_number" id="3pkhNKo--EJWfr%P:*,v">
                                            <field name="NUM">1</field>
                                          </shadow>
                                          <block type="variables_get" id="8kz{cSCJi;F;):mekIC^">
                                            <field name="VAR">Stromzähler_Beginn</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <shadow type="math_number" id="K]8F5W`#%5%TMVJ(*ZGP">
                                        <field name="NUM">100</field>
                                      </shadow>
                                    </value>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <value name="B">
                              <shadow type="math_number" id="Q-Poc:9*w=T6GBZ)WMyt">
                                <field name="NUM">100</field>
                              </shadow>
                            </value>
                          </block>
                        </value>
                        <next>
                          <block type="pushover" id="Lt}X?#fd{1+NNL;r}}6a">
                            <field name="INSTANCE"></field>
                            <field name="SOUND"></field>
                            <field name="PRIORITY">0</field>
                            <field name="LOG"></field>
                            <value name="MESSAGE">
                              <shadow type="text" id="F#Xw4,hNRtH1OSdV24Q{">
                                <field name="TEXT">Trocknung im Büro UG wurde beendet.</field>
                              </shadow>
                              <block type="text_join" id="dlQGV1Tbzh-|,q#]OYU+">
                                <mutation items="3"></mutation>
                                <value name="ADD0">
                                  <block type="text" id="`d(h9lVC3Zc`Z8o(*Y._">
                                    <field name="TEXT">Trocknung im Büro UG wurde beendet. Der Stromverbrauch für den Trockenvorgang lag bei </field>
                                  </block>
                                </value>
                                <value name="ADD1">
                                  <block type="variables_get" id="G.-,cSw4~h~?vgD)meus">
                                    <field name="VAR">Stromverbrauch</field>
                                  </block>
                                </value>
                                <value name="ADD2">
                                  <block type="text" id="}Bh7s)wK``+*FlE]p7vH">
                                    <field name="TEXT">kWh.</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <value name="TITLE">
                              <block type="text" id=",H+b9xSHGhduyRJ*U-9p">
                                <field name="TEXT">Lufttrockner</field>
                              </block>
                            </value>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </statement>
          </block>
        </statement>
      </block>
    </next>
  </block>
</xml>
Hoffe das hilft weiter oder bringt dich auf weitere Ideen die hier mal geteilt werden

Gruß walkinlarge


Gesendet von iPad mit Tapatalk

Benutzeravatar
Solear
professional
Beiträge: 581
Registriert: 24.03.2016, 08:26

Re: Zeit messen, in der ein Luftentfeuchter an war

Beitrag von Solear » 15.06.2018, 06:44

Christof.Kac hat geschrieben:
14.06.2018, 21:22

Vielleicht noch eine andere, technische Frage: Anstatt 60% als festen Schwellwert zu nutzen, kann man das auch pfiffiger machen? Wenn die Wand warm ist, kann man ja vielleicht mehr als 60% erlauben? Hier fehlen mir Grundlagen zum Thema Schimmelbildung....vielleicht hat jemand von Euch ja mehr Erfahrung.

Danke
Christof

Wenn du nur mit einem Luftentfeuchter arbeitest, ist der Vergleich der relativen Luftfeuchte gut. So wie du das eingestellt hast, ist das OK. Ich habe bei mir auch eine Auslöseschwelle von 67 %, von wo es bis 55 % heruntertrocknet. Ab (gefühlt) 70 % fängt das Werkzeug im Keller an zu rosten und Papier wird klamm.
Um Strom zu sparen (die Luftentfeuchter fressen ja richtig, und wenn einer jeden 2. Tag mit 900 Watt durchläuft summiert sich das) habe ich in erster Linie eine Entfeuchtung via Kellerfensterlüftung. Bei der Lüftung kommt es aber nicht auf den Vergleich der relativen Luftfeuchte zwischen innen und außen an, sondern auf den Vergleich der absoluten Feuchte. Da spielt die Temperatur der Luft innen und außen noch eine Rolle, so dass es bei unterschiedlichen Temperaturen zu unterschiedlicher Wasserspeicherkapazität der Luft kommt (absolute Feuchte in z.B. Gramm pro Kubikmeter Luft).
Vergleicht man nur die relative (%), dann führt das dazu, dass im Sommer die warme Luft mit 50 % Feuchte in den Keller weht der 60 % Feuchte hat und trotzdem beschlagen die Wände, da die warme Luft an der kalten Wand kondensiert.
Bei mir ist das so als Faustregel, dass ich im Winter, Frühling und Herbst immer lüften kann (außer es ist eher neblig und regnerisch, wohne am See), im Sommer maximal in kühleren Sommernächten.

Wenn du dich für das Thema der absoluten Feuchte interessierst, suche hier mal nach Kellerbelüftung und ähnliches, da gibt es viele Skripte zur Berechnung etc.
iobroker als Docker-Container in einer Synology DS918+;
RP3 und HM-MOD-RPI-PCB - Hut sowie RasperryMatic-Image als CCU2-Ersatz;
iM871A-Stick am RPI3 zum Auslesen der SMI260 Wechselrichter

paul53
guru
Beiträge: 3529
Registriert: 09.06.2015, 16:03
Wohnort: Berlin

Re: Zeit messen, in der ein Luftentfeuchter an war

Beitrag von paul53 » 15.06.2018, 17:01

Christof.Kac hat geschrieben:
14.06.2018, 21:22
Wie kann ich die Zeit erfassen, in der der Luftentfeuchter an ist?

Code: Alles auswählen

const idEntfeuchter = '...';
const idED = 'Entfeuchter.ED'; // Einschaltdauer

createState(idED, 0, {type: 'number', unit: 'h'); // Datenpunkt für ED erzeugen

on(idEntfeuchter, function(dp) {
   if(!dp.state.val) { // Entfeuchter schaltet aus
      setState(idED, (dp.state.lc - dp.oldState.lc) / 3600000, true);
   }
});
Zuletzt geändert von paul53 am 15.06.2018, 18:45, insgesamt 1-mal geändert.
Versionen für RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs:
Jessie lite, Kernel 4.4.50-v7+, hmcon 0.18, node 8.11.3, Host 1.4.2, Admin 2.0.9, Javascript 3.6.4, HM-RPC 1.7.4, Email 1.0.4, History 1.8.5, Flot 1.9.1, Vis 1.0.4, Web 2.4.0

Jan1
professional
Beiträge: 482
Registriert: 08.01.2018, 16:50

Re: Zeit messen, in der ein Luftentfeuchter an war

Beitrag von Jan1 » 15.06.2018, 18:13

Bitte , Zeit in ms ;)
2018-06-15 19_12_02-javascript - ioBroker.png
2018-06-15 19_12_02-javascript - ioBroker.png (10.57 KiB) 147 mal betrachtet

Christof.Kac
starter
Beiträge: 32
Registriert: 31.10.2017, 16:39

Re: Zeit messen, in der ein Luftentfeuchter an war

Beitrag von Christof.Kac » 15.06.2018, 22:08

Hi,
ich würde am liebsten einen State haben, in dem die Gesamtzeit der Laufzeit pro Tag geloggt wird.
Mit

Code: Alles auswählen

setState(idED, (dp.state.lc - dp.oldState.lc) / 3600000, true);
wird ja die Laufzeit bei Abschalten des Entfeuchters gesetzt.

Ich könnte die Laufzeit pro Tag aufaddieren - problematisch wird aber der Übergang in den neuen Tag, wenn währenddessen der Entfeuchter läuft. Dann zähle ich ja am neuen Tag die Laufzeit des alten Tages mit.

Doch irgendwie schwieriger als gedacht. Alternativ könnte ich ja alle paar Sekunden einen Zähler hochzählen, wenn der Entfeuchter läuft - ich habe nur die Sorge, ob das zu viel für meinen Raspi ist.
Habt Ihr hier eine Idee, wie das möglichst einfach gehen könnte?

Danke
Christof
ioBroker admin 3 mit cloud auf Raspberry Pi 3 mit CCU2, Rademacher Homepilot, FS20, Homematic, Google Home

Jan1
professional
Beiträge: 482
Registriert: 08.01.2018, 16:50

Re: Zeit messen, in der ein Luftentfeuchter an war

Beitrag von Jan1 » 16.06.2018, 05:59

Deine Kreativität ist aber auch nicht wirklich ausgeprägt. Mach doch ne "wenn" Bedingung zum Datum rein und schreib das ganze in eine Variable.

Antworten