Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Aufheizrate Pool bestimmen

    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

    Aufheizrate Pool bestimmen

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Markus 7 last edited by Markus 7

      Ich möchte die Aufheizrate [in °C/h] eines Whirlpools bestimmen.
      Dazu messe ich zeitlich versetzt (~ 30 min) die Temperatur und bestimme durch Differenzbildung die Aufheizrate pro Zeit. Soweit so gut - in der Theorie.

      Mit diesem ersten Script wurde mir die Aufheizrate zwar kurzzeitig berechnet, jedoch immer wieder auf "0" gesetzt. Hat also nicht funktioniert, vermutlich weil bei jeder Aktualisierung des Triggerwertes "Pool_Temperatur" das Script von vorne losgebrettert ist:

      a5dcd99a-58a4-4445-b1ae-f29650a6fa9d-image.png
      Das sah dann immer so aus:

      1717afe5-f0a0-4103-838c-c4b5496f6eaa-image.png

      Also neuer Versuch, mittels eines "State" die zwei Messungen zeitlich voneinander zu trennen:

      6d97ea27-888f-4dd3-912d-fa214f7aac7e-image.png

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="state">state</variable>
          <variable id="oOsMZNR0kWr%DKpVTac%">temp_1</variable>
          <variable id="CqIi$mc34-]S$X(9K;*Q">temp_2</variable>
          <variable id="+hw(BRJ7LWj#x?jkz*j!">aufheizrate</variable>
        </variables>
        <block type="on_ext" id="XQ1h@q3{]E(z|ZPie!0." x="-362" y="-87">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
          <field name="CONDITION">ne</field>
          <field name="ACK_CONDITION"></field>
          <value name="OID0">
            <shadow type="field_oid" id="@FwY30x87UBieD*y#9+]">
              <field name="oid">alias.0.Pool.Pool_Temperatur</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="controls_if" id="Fb(U=Ctdb5sfdR8,d5g{">
              <value name="IF0">
                <block type="logic_compare" id="iZ8H6ImQ9eJ%RdVu?ZXZ">
                  <field name="OP">EQ</field>
                  <value name="A">
                    <block type="variables_get" id="G9vk9KsIkeTLQKg$o-Hu">
                      <field name="VAR" id="state">state</field>
                    </block>
                  </value>
                  <value name="B">
                    <block type="math_number" id="8jI;%{tH72}Kb/UNLmwW">
                      <field name="NUM">0</field>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="comment" id="K_UZ]E0D.qK$Jhe/n`3?">
                  <field name="COMMENT">1. Messung Pooltemperatur</field>
                  <next>
                    <block type="variables_set" id="9?fQGfz^rBk0,~1OdM@:">
                      <field name="VAR" id="oOsMZNR0kWr%DKpVTac%">temp_1</field>
                      <value name="VALUE">
                        <block type="get_value" id="-f`*9F)49ah)Tay.54+I">
                          <field name="ATTR">val</field>
                          <field name="OID">alias.0.Pool.Pool_Temperatur</field>
                        </block>
                      </value>
                      <next>
                        <block type="comment" id="-mE0E=Td3N@d2{K.^c|E">
                          <field name="COMMENT">nur zur Überprüfung der Temperaturwerte</field>
                          <next>
                            <block type="update" id="uA.|0{Wt?R4o`Iw3AZq$">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                              <field name="OID">0_userdata.0.4_Temperaturen_T.Pool_temp_1</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE">
                                <block type="variables_get" id=")O!;H3[#Irrk^h5+HZ3T">
                                  <field name="VAR" id="oOsMZNR0kWr%DKpVTac%">temp_1</field>
                                </block>
                              </value>
                              <next>
                                <block type="variables_set" id="set_state_to_1">
                                  <field name="VAR" id="state">state</field>
                                  <value name="VALUE">
                                    <block type="math_number" id="number_1">
                                      <field name="NUM">1</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="timeouts_wait" id="thvwdx972e^6;A$IgS]f">
                                      <field name="DELAY">30</field>
                                      <field name="UNIT">min</field>
                                      <next>
                                        <block type="controls_if" id="if_block_2">
                                          <value name="IF0">
                                            <block type="logic_compare" id="compare_block_2">
                                              <field name="OP">EQ</field>
                                              <value name="A">
                                                <block type="variables_get" id="get_state_2">
                                                  <field name="VAR" id="state">state</field>
                                                </block>
                                              </value>
                                              <value name="B">
                                                <block type="math_number" id="number_1_copy">
                                                  <field name="NUM">1</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                          <statement name="DO0">
                                            <block type="comment" id="?LQiF~Vd_4AirU2wicZY">
                                              <field name="COMMENT">2. Messung Pooltemperatur</field>
                                              <next>
                                                <block type="variables_set" id="=V{xewm65U#D(Kc7n@=-">
                                                  <field name="VAR" id="CqIi$mc34-]S$X(9K;*Q">temp_2</field>
                                                  <value name="VALUE">
                                                    <block type="get_value" id="d2^KURC%{~[0Jn3U!a5z">
                                                      <field name="ATTR">val</field>
                                                      <field name="OID">alias.0.Pool.Pool_Temperatur</field>
                                                    </block>
                                                  </value>
                                                  <next>
                                                    <block type="comment" id="{d@U^aQSr8lwEK#DcSJA">
                                                      <field name="COMMENT">nur zur Überprüfung der Temperaturwerte</field>
                                                      <next>
                                                        <block type="update" id="=F1l8%lI4N}EmVm*,h=W">
                                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                          <field name="OID">0_userdata.0.4_Temperaturen_T.Pool_temp_2</field>
                                                          <field name="WITH_DELAY">FALSE</field>
                                                          <value name="VALUE">
                                                            <block type="variables_get" id="1%`mfL9$L.asb%U8x3}(">
                                                              <field name="VAR" id="CqIi$mc34-]S$X(9K;*Q">temp_2</field>
                                                            </block>
                                                          </value>
                                                          <next>
                                                            <block type="comment" id="ImjjsvwzFEk:6x*s$us%">
                                                              <field name="COMMENT">Berechnung Aufheizrate in [°C/h]</field>
                                                              <next>
                                                                <block type="variables_set" id="Ap(i7[0e}DNVJ:5Tg(Ee">
                                                                  <field name="VAR" id="+hw(BRJ7LWj#x?jkz*j!">aufheizrate</field>
                                                                  <value name="VALUE">
                                                                    <block type="math_arithmetic" id="rAO]$1pH(di82=h|u,pE">
                                                                      <field name="OP">DIVIDE</field>
                                                                      <value name="A">
                                                                        <shadow type="math_number" id=",63(myE%F%tIQ}{Jc_a0">
                                                                          <field name="NUM">1</field>
                                                                        </shadow>
                                                                        <block type="math_arithmetic" id="S!U*KnIq!Nr2u}t*{zL9">
                                                                          <field name="OP">MINUS</field>
                                                                          <value name="A">
                                                                            <shadow type="math_number" id="!l5dv1!G6fjE#Z))^6#U">
                                                                              <field name="NUM">1</field>
                                                                            </shadow>
                                                                            <block type="variables_get" id="i)c!eh1QvBD+5Ie;y?q[">
                                                                              <field name="VAR" id="CqIi$mc34-]S$X(9K;*Q">temp_2</field>
                                                                            </block>
                                                                          </value>
                                                                          <value name="B">
                                                                            <shadow type="math_number" id="?Pm#mTVpWQvWYbd?^pbB">
                                                                              <field name="NUM">1</field>
                                                                            </shadow>
                                                                            <block type="variables_get" id="M%Vzy^yU(]X[G+$6cpmJ">
                                                                              <field name="VAR" id="oOsMZNR0kWr%DKpVTac%">temp_1</field>
                                                                            </block>
                                                                          </value>
                                                                        </block>
                                                                      </value>
                                                                      <value name="B">
                                                                        <shadow type="math_number" id="Xi.eU-~YC;PAK-VqrcaC">
                                                                          <field name="NUM">0.5</field>
                                                                        </shadow>
                                                                      </value>
                                                                    </block>
                                                                  </value>
                                                                  <next>
                                                                    <block type="comment" id="UR6o!20(,OmcEVIfNrg:">
                                                                      <field name="COMMENT">Schreibe Wert Aufheizrate in Objekt</field>
                                                                      <next>
                                                                        <block type="update" id="=[rVi.^gZC=IZn_VP_$c">
                                                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                          <field name="OID">0_userdata.0.4_Temperaturen_T.Aufheizrate</field>
                                                                          <field name="WITH_DELAY">FALSE</field>
                                                                          <value name="VALUE">
                                                                            <block type="variables_get" id="xfavm!KZ8-=:};}DB5%|">
                                                                              <field name="VAR" id="+hw(BRJ7LWj#x?jkz*j!">aufheizrate</field>
                                                                            </block>
                                                                          </value>
                                                                          <next>
                                                                            <block type="variables_set" id="U0XHB*PFa;z6)[j,wrD0">
                                                                              <field name="VAR" id="state">state</field>
                                                                              <value name="VALUE">
                                                                                <block type="math_number" id="JWpJXo|})uc0ncGe{|mF">
                                                                                  <field name="NUM">0</field>
                                                                                </block>
                                                                              </value>
                                                                            </block>
                                                                          </next>
                                                                        </block>
                                                                      </next>
                                                                    </block>
                                                                  </next>
                                                                </block>
                                                              </next>
                                                            </block>
                                                          </next>
                                                        </block>
                                                      </next>
                                                    </block>
                                                  </next>
                                                </block>
                                              </next>
                                            </block>
                                          </statement>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
        </block>
      </xml>
      

      Hierbei bekomme ich aber weder eine Aufheizrate geschrieben, noch wird die testweise in ioBroker gesetzte Variable "State" aktualisiert.

      6c4d9e05-38fa-4c16-8362-c403a849b804-image.png

      Was mache ich hier falsch? Danke für ein paar sachdienliche Hinweise 🙂

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

        @markus-7
        Zwei Vorschläge:

        Blockly_temp.JPG

        M 2 Replies Last reply Reply Quote 2
        • M
          Markus 7 @paul53 last edited by

          @paul53

          Danke dir für die Vorschläge, bin gerade am Probieren und sitze auf dem Schlauch, wo ich diese Funktionsbausteine (Mathematik?) finde:

          ae38710b-47cb-42af-83dc-fb50fda14324-image.png

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

            @markus-7 sagte in Aufheizrate Pool bestimmen:

            ich diese Funktionsbausteine (Mathematik?) finde:

            unter der rechten Maustaste 😉
            externe Eingänge

            M 1 Reply Last reply Reply Quote 1
            • M
              Markus 7 @Homoran last edited by

              @homoran

              Danke dir ... die rechte Maustaste wird einfach unterschätzt 😀

              1 Reply Last reply Reply Quote 1
              • M
                Markus 7 @paul53 last edited by Markus 7

                @paul53

                Noch eine Frage zu der Zahl "3.600.000" in deinem ersten Script:
                Wo geht dort die eigentliche Zeiteinheit "pro Stunde" oder "Messung pro x Minuten" ein? Der Faktor wäre ja Umrechnung h in ms oder so ähnlich?

                Btw: Die beiden Scripte geben recht unterschiedliche Werte aus (1. Script=Aufheizrate, 2. Script=Aufheizrate_2).

                6fffac9a-0597-4efe-9536-fcfba427b22e-image.png

                PS: So sieht der tatsächliche Temperaturverlauf aus:

                118fe744-4406-45de-aa7d-e5f76559253a-image.png

                Homoran paul53 3 Replies Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @Markus 7 last edited by

                  @markus-7 sagte in Aufheizrate Pool bestimmen:

                  Der Faktor wäre ja Umrechnung h in ms oder so ähnlich?

                  = 3600000

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    Markus 7 @Homoran last edited by

                    @homoran

                    Ja, hatte ich ja schon geschrieben ... nur wofür brauche ich diesen Wert?

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

                      @markus-7 sagte in Aufheizrate Pool bestimmen:

                      Die beiden Scripte geben recht unterschiedliche Werte aus

                      bitte keine schwarzen Briefmarken im Megapixelfornat
                      Screenshot_20240720-154530_Firefox.jpg

                      Fenster schmaler ziehen ohne dass Infos verloren gehen.
                      Dann ist das auch mobil lesbar

                      https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1

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

                        @markus-7 sagte in Aufheizrate Pool bestimmen:

                        nur wofür brauche ich diesen Wert?

                        zum Umrechnen der Wertedifferenz bezogen auf eine Zeitdifferenz in msec auf "pro Stunde"

                        Die timestamps in iobroker sind in Millisekunden

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          Markus 7 @Homoran last edited by

                          @homoran

                          Ah, danke für die Info mit den Timestamps 👍

                          Mit den Screenshots werde ich zukünftig schauen, wie ich sie vorher verkleiner kann.

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

                            @markus-7 sagte: Die beiden Scripte geben recht unterschiedliche Werte aus
                            ... So sieht der tatsächliche Temperaturverlauf aus:

                            Da die Temperatur nicht nur steigt, sondern stark schwankt, erhält man zufällige Werte, die stark voneinander abweichen können.
                            Einen großen Teil der Schwankungen kann man ausfiltern, wenn man nur Anstiege berücksichtigt:

                            Blockly_temp.JPG

                            Der Trigger auf "Pumpe schaltet ein" soll den Beginn der Aufheizung symbolisieren. Dann werden die Variablen auf Anfangswerte zurück gesetzt.

                            M 1 Reply Last reply Reply Quote 1
                            • M
                              Markus 7 @paul53 last edited by

                              @paul53

                              Danke für die Erklärung, nur das mit der Aufheizung ist leider nicht so einfach, da der Pool an einer PV-Solarthermie-Kopplung hängt und die Solarthermiepumpe Sonneneinstarhlungsabhängig ein- und ausschaltet:

                              c29b6d91-0c58-4141-9760-08d37c368c26-image.png

                              Daher hatte ich ursprünglich über eine Zeitdifferenz von ~ 30 Minuten die unterschiedlichen Temperaturwerte ermittelt, um diese Schwankungen auszugleichen.

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

                                @markus-7 sagte: über eine Zeitdifferenz von ~ 30 Minuten die unterschiedlichen Temperaturwerte ermittelt, um diese Schwankungen auszugleichen.

                                Mit Pause funktioniert so etwas nicht. Eine gleitende Mittelwertbildung über 30 Minuten sieht so aus:

                                Blockly_temp.JPG

                                Der Datenpunkt "Liste" muss vom Typ "array" sein.
                                Eine Mittelwertbildung hat den Nachteil, dass sie zeitlich hinterher hinkt.

                                M 1 Reply Last reply Reply Quote 1
                                • M
                                  Markus 7 @paul53 last edited by

                                  @paul53

                                  Werde ich so probieren, danke!
                                  Nur für mich zum Verständnis: warum funktioniert eine "Pause" zwischen zwei Messungen nicht?

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  865
                                  Online

                                  31.9k
                                  Users

                                  80.1k
                                  Topics

                                  1.3m
                                  Posts

                                  3
                                  15
                                  593
                                  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