Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Warmwasser schalten mit PV Überschuss

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Warmwasser schalten mit PV Überschuss

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @jwedenig last edited by

      @jwedenig sagte: als Blockly Export auch?

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="#ZO}puq!byH)d[RA8.u~">stufe</variable>
          <variable id="S`Q7El*S8|6o7zjVveF`">ueberschuss</variable>
          <variable type="timeout" id="delayOn">delayOn</variable>
          <variable type="timeout" id="delayOff">delayOff</variable>
        </variables>
        <block type="variables_set" id="V88W|+Iln7v+rgj)=Zch" x="13" y="-63">
          <field name="VAR" id="#ZO}puq!byH)d[RA8.u~">stufe</field>
          <value name="VALUE">
            <block type="math_arithmetic" id="UPGMM~b*V$d-a*#;tS[D" inline="false">
              <field name="OP">ADD</field>
              <value name="A">
                <shadow type="math_number" id="~wy?L?:xH(Ni)}x,PFCD">
                  <field name="NUM">1</field>
                </shadow>
                <block type="logic_ternary" id="*J#=-SvRj,t10JsQT^g)" inline="true">
                  <value name="IF">
                    <block type="get_value" id="Di]!Es+iNie7c[+9)*;x">
                      <field name="ATTR">val</field>
                      <field name="OID">0_userdata.0.Blockly.Switch1</field>
                    </block>
                  </value>
                  <value name="THEN">
                    <block type="math_number" id="e=$;Dm*Kdv-Y8so-i~0#">
                      <field name="NUM">1</field>
                    </block>
                  </value>
                  <value name="ELSE">
                    <block type="math_number" id="`O}G]nrYU1J(u^B(cJ4D">
                      <field name="NUM">0</field>
                    </block>
                  </value>
                </block>
              </value>
              <value name="B">
                <shadow type="math_number" id="};}!|b@GbaTL{Y_1M4mO">
                  <field name="NUM">1</field>
                </shadow>
                <block type="logic_ternary" id=";LD9IL!$vH=aILt*01D]" inline="true">
                  <value name="IF">
                    <block type="get_value" id="UP`ZrOpZ0?YW7(BPAKu=">
                      <field name="ATTR">val</field>
                      <field name="OID">0_userdata.0.Blockly.Switch2</field>
                    </block>
                  </value>
                  <value name="THEN">
                    <block type="math_number" id="_#[$Y6bW6I=KD6W@i8-H">
                      <field name="NUM">2</field>
                    </block>
                  </value>
                  <value name="ELSE">
                    <block type="math_number" id="a`){P].I3sR02/vH?$|t">
                      <field name="NUM">0</field>
                    </block>
                  </value>
                </block>
              </value>
            </block>
          </value>
          <next>
            <block type="on_ext" id="^=k13pGi`kMjtE||vY.J">
              <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="n:wY~I3GQO$7,0:+.oY=">
                  <field name="oid">0_userdata.0.Blockly.Bezug-Einspeisung</field>
                </shadow>
              </value>
              <statement name="STATEMENT">
                <block type="variables_set" id="U0g[6)DF7XBr6PjSBC1%">
                  <field name="VAR" id="S`Q7El*S8|6o7zjVveF`">ueberschuss</field>
                  <value name="VALUE">
                    <block type="math_arithmetic" id="fF$hk1tVi-R05oeMt;V%">
                      <field name="OP">MINUS</field>
                      <value name="A">
                        <shadow type="math_number" id="ixiYq]/$A+RSmijBZE[,">
                          <field name="NUM">0</field>
                        </shadow>
                      </value>
                      <value name="B">
                        <shadow type="math_number" id="Cs,pKE7(!7+1jmwBW.2/">
                          <field name="NUM">1</field>
                        </shadow>
                        <block type="on_source" id="f=2?mi+jttya*Yya7dG.">
                          <field name="ATTR">state.val</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <next>
                    <block type="comment" id="9X:XKXRgH!xZ!=zZbThm">
                      <field name="COMMENT">3 mal 750 W</field>
                      <next>
                        <block type="controls_if" id="?{[99~rn+X@-!776Gil$">
                          <mutation elseif="1"></mutation>
                          <value name="IF0">
                            <block type="logic_compare" id="d%IZlzT50i(a7nefKk6]">
                              <field name="OP">LT</field>
                              <value name="A">
                                <block type="variables_get" id="lg4*^=8|`oo@q1o#)S/S">
                                  <field name="VAR" id="S`Q7El*S8|6o7zjVveF`">ueberschuss</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="math_number" id="vP_iZf?M;`@RCY1gD^i:">
                                  <field name="NUM">1000</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <statement name="DO0">
                            <block type="timeouts_cleartimeout" id="|#WysqWLOkMz:?pQ*-CZ">
                              <field name="NAME">delayOn</field>
                            </block>
                          </statement>
                          <value name="IF1">
                            <block type="logic_negate" id="dch2(fx(/ykyn#X-R`9x">
                              <value name="BOOL">
                                <block type="timeouts_gettimeout" id="xJVx:Mi5[U_(t*bw(Yq$">
                                  <field name="NAME">delayOn</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <statement name="DO1">
                            <block type="timeouts_settimeout" id="=EI:`22NaF],y?uV^b1B">
                              <field name="NAME">delayOn</field>
                              <field name="DELAY">10</field>
                              <field name="UNIT">min</field>
                              <statement name="STATEMENT">
                                <block type="controls_if" id="L^8:G3aDU.xP#v0K7^n[">
                                  <value name="IF0">
                                    <block type="logic_compare" id="rRm-_cjXetCm)~hcAE~}">
                                      <field name="OP">LT</field>
                                      <value name="A">
                                        <block type="variables_get" id="k?Bzt4RS=S!C{E%~JKR%">
                                          <field name="VAR" id="#ZO}puq!byH)d[RA8.u~">stufe</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="math_number" id="?UTjTS/9I`U;T!+,CaMi">
                                          <field name="NUM">3</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <statement name="DO0">
                                    <block type="math_change" id="j%wz0Z;.Z9l}/YcJ|u@O">
                                      <field name="VAR" id="#ZO}puq!byH)d[RA8.u~">stufe</field>
                                      <value name="DELTA">
                                        <shadow type="math_number" id="*QTjL.s^?cd[t)LK(x*L">
                                          <field name="NUM">1</field>
                                        </shadow>
                                      </value>
                                      <next>
                                        <block type="procedures_callnoreturn" id="toS^1+[sVXvM12+04n~j">
                                          <mutation name="Heizstab"></mutation>
                                          <next>
                                            <block type="timeouts_cleartimeout" id="WJ?t^mxt0H|jM5A2zX=v">
                                              <field name="NAME">delayOn</field>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </statement>
                                </block>
                              </statement>
                            </block>
                          </statement>
                          <next>
                            <block type="controls_if" id="U^YFuAk{|bn.*b{Ep;B=">
                              <mutation elseif="1"></mutation>
                              <value name="IF0">
                                <block type="logic_compare" id="GddE`U/xj*}WZ:OC-j_5">
                                  <field name="OP">GT</field>
                                  <value name="A">
                                    <block type="variables_get" id="Ji]v?2~|pv5`v!eeLtH`">
                                      <field name="VAR" id="S`Q7El*S8|6o7zjVveF`">ueberschuss</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id=":{IrB{m-gbX@X2|pVyXZ">
                                      <field name="NUM">100</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="timeouts_cleartimeout" id="_N.QOqsujv5EzF,e1:^`">
                                  <field name="NAME">delayOff</field>
                                </block>
                              </statement>
                              <value name="IF1">
                                <block type="logic_negate" id="0(6[M7amQ.RY*S4wPkX3">
                                  <value name="BOOL">
                                    <block type="timeouts_gettimeout" id="pTQJfLPne.dmqq!4K#Q.">
                                      <field name="NAME">delayOff</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO1">
                                <block type="timeouts_settimeout" id="b(4T]c7c@_xcR0^(IJQ#">
                                  <field name="NAME">delayOff</field>
                                  <field name="DELAY">5</field>
                                  <field name="UNIT">min</field>
                                  <statement name="STATEMENT">
                                    <block type="controls_if" id="N`KrOVa}E?2GEgP!,hnz">
                                      <value name="IF0">
                                        <block type="logic_compare" id="!!K9CK;|;n]ddqB#Sv9x">
                                          <field name="OP">GT</field>
                                          <value name="A">
                                            <block type="variables_get" id="(BxBl^T0kZqo1s{{@q2;">
                                              <field name="VAR" id="#ZO}puq!byH)d[RA8.u~">stufe</field>
                                            </block>
                                          </value>
                                          <value name="B">
                                            <block type="math_number" id="aJaeQbM-4{Urt]DVf9Q.">
                                              <field name="NUM">0</field>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                      <statement name="DO0">
                                        <block type="math_change" id="Sq6c}B`kReZUISESR)FH">
                                          <field name="VAR" id="#ZO}puq!byH)d[RA8.u~">stufe</field>
                                          <value name="DELTA">
                                            <shadow type="math_number" id="!F{}xNQ_117l8Vz1)Bw-">
                                              <field name="NUM">-1</field>
                                            </shadow>
                                          </value>
                                          <next>
                                            <block type="procedures_callnoreturn" id="$}C4r;1}f|vwd?j_@rJ*">
                                              <mutation name="Heizstab"></mutation>
                                              <next>
                                                <block type="timeouts_cleartimeout" id="OA/~iF@YN+W@j9A9#Eh~">
                                                  <field name="NAME">delayOff</field>
                                                </block>
                                              </next>
                                            </block>
                                          </next>
                                        </block>
                                      </statement>
                                    </block>
                                  </statement>
                                </block>
                              </statement>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </next>
        </block>
        <block type="procedures_defnoreturn" id="Q6,+1QdD4Bq`#0DA-`[=" x="412" y="237">
          <field name="NAME">Heizstab</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
          <statement name="STACK">
            <block type="control" id="qYesRpdij9z`93JQ2~w%">
              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
              <field name="OID">0_userdata.0.Blockly.Switch1</field>
              <field name="WITH_DELAY">FALSE</field>
              <value name="VALUE">
                <block type="math_number_property" id="2[3jGAZF1c!_#4rLN^lK">
                  <mutation divisor_input="false"></mutation>
                  <field name="PROPERTY">ODD</field>
                  <value name="NUMBER_TO_CHECK">
                    <shadow type="math_number" id="^mbt0I.5NcdGL)U11cys">
                      <field name="NUM">0</field>
                    </shadow>
                    <block type="variables_get" id="8/kAAEJZB_bXT3h*p`y9">
                      <field name="VAR" id="#ZO}puq!byH)d[RA8.u~">stufe</field>
                    </block>
                  </value>
                </block>
              </value>
              <next>
                <block type="control" id="S(zYFzv^}$AcCYB-`Q`e">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                  <field name="OID">0_userdata.0.Blockly.Switch2</field>
                  <field name="WITH_DELAY">FALSE</field>
                  <value name="VALUE">
                    <block type="logic_compare" id="2L^iKhb3yF2tiPb$(%l$">
                      <field name="OP">GTE</field>
                      <value name="A">
                        <block type="variables_get" id="/QAECrxs6x0t8U~:B%E*">
                          <field name="VAR" id="#ZO}puq!byH)d[RA8.u~">stufe</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="math_number" id="PH|,U:I~$fQ*Ja^o2^h0">
                          <field name="NUM">2</field>
                        </block>
                      </value>
                    </block>
                  </value>
                </block>
              </next>
            </block>
          </statement>
        </block>
      </xml>
      

      J 2 Replies Last reply Reply Quote 0
      • J
        jwedenig Most Active @paul53 last edited by

        @paul53
        vielen Dank!
        Wenn ich alles installiert habe werde ich darüber berichten wies läuft!
        Ich würde es auch sehr gerne verstehen, was Du da programmiert hast!
        Liebe Grüße
        Jürgen

        1 Reply Last reply Reply Quote 0
        • J
          jwedenig Most Active @paul53 last edited by

          @paul53

          Lieber paul53!

          Wo in dem Skript für 2 Heizstäbe mit 750W und 1,5kW müssten den meine Telegramm Benachrichtigungen eingefügt werden damit ich immer sehe wann sich Heizstab 1 und Heizstab 2 einschalten?
          Vielen Dank für deine Geduld!
          Liebe Grüße
          Jürgen

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

            @jwedenig sagte: Telegramm Benachrichtigungen eingefügt werden damit ich immer sehe wann sich Heizstab 1 und Heizstab 2 einschalten?

            In der Funktion "Heizstab".

            Blockly_temp.JPG

            J 1 Reply Last reply Reply Quote 0
            • J
              jwedenig Most Active @paul53 last edited by

              @paul53

              alles richtig?

              Dann wieder mal ein grosses Danke!

              Bildschirmfoto 2023-09-05 um 17.10.57.png

              paul53 2 Replies Last reply Reply Quote 0
              • paul53
                paul53 @jwedenig last edited by

                @jwedenig sagte: alles richtig?

                Kann keinen Fehler erkennen. Nur mit der Telegramm-Ausgabe wirst Du nicht ganz zufrieden sein: Es fehlen Trennzeichen (Leerzeichen).

                J 1 Reply Last reply Reply Quote 0
                • J
                  jwedenig Most Active @paul53 last edited by

                  @paul53

                  ok, das schaff ich 🙂

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

                    @jwedenig sagte: alles richtig?

                    Unten fehlt unter dem Funktionsaufruf "Heizstab" das "stop delayOff".

                    Blockly_temp.JPG

                    Funktion: Wenn nach Sonnenschein (Stufe 3) eine große, dicke Wolke kommt, dann wird nach 5 Minuten auf Stufe 2 geschaltet. Wenn innerhalb der 5 Minuten der Überschuss so weit zurückgegangen ist, dass die Bedingung "ueberschuss > 100" nicht wieder erfüllt wird, muss die Sperre "falls nicht Verzögerung delayOff" gelöst werden, sonst bleibt die Stufe auf 2. Das macht "stop delayOff" an dieser Stelle: Die Timervariable delayOff wird auf null gesetzt.

                    J 1 Reply Last reply Reply Quote 0
                    • J
                      jwedenig Most Active @paul53 last edited by

                      @paul53
                      vielen Dank!
                      Bin echt schon gespannt wie das dann beim Einbau funktionieren wird!!!!

                      J 1 Reply Last reply Reply Quote 0
                      • J
                        jwedenig Most Active @jwedenig last edited by

                        @paul53

                        Lieber Paul53!

                        Jetzt hätte ich noch eine Bitte für das Skript mit 2 Heizstäben.
                        Bei der Installation kamen wir drauf, dass ja auch die Pumpe nun einen Shelly hat.
                        Somit meine Frage:
                        Wie binde ich diesen Shelly nun im Skript ein?
                        Die Pumpe sollte sich natürlich immer Einschalten wenn sich der eine oder der andere Heizstab einschaltet und natürlich dann auch ausschalten wenn beide Heizstäbe wieder aus sind!
                        Wie realisiere ich. das?
                        Vielen Dank
                        LG
                        Jürgen
                        2 Heizstäbe.rtf

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

                          @jwedenig sagte: Die Pumpe sollte sich natürlich immer Einschalten wenn sich der eine oder der andere Heizstab einschaltet und natürlich dann auch ausschalten wenn beide Heizstäbe wieder aus sind!

                          In der Funktion Heizstab():
                          steuere Pumpe mit stufe > 0

                          J 1 Reply Last reply Reply Quote 0
                          • J
                            jwedenig Most Active @paul53 last edited by

                            @paul53
                            Vielen lieben Dank!
                            Bald ist es soweit, ich werde berichten!!!:-)
                            Bildschirmfoto 2023-09-21 um 18.43.17.png

                            J 1 Reply Last reply Reply Quote 0
                            • J
                              jwedenig Most Active @jwedenig last edited by

                              @paul53
                              Guten Morgen!
                              Entschuldige wenn ich dich wieder bezügl. deines Skriptes belästige, aber wo würde ich meinen Datenpunkt "Warmwassertemp" einbauen damit z.b. bei 70 Grad sich der Heizstab 1 & 2 ausschalten und bei z.b. 65 Grad sie sich wieder einschalten würden?
                              Danke Dir!
                              Liebe Grüße
                              Jürgen

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

                                @jwedenig sagte: "Warmwassertemp" einbauen damit z.b. bei 70 Grad sich der Heizstab 1 & 2 ausschalten und bei z.b. 65 Grad sie sich wieder einschalten würden?

                                Ergänze einen 2-Punkt-Regler für die Temperatur, der eine Freigabevariable temp für die Einspeise-Steuerung setzt:

                                Blockly_temp.JPG

                                J 2 Replies Last reply Reply Quote 0
                                • J
                                  jwedenig Most Active @paul53 last edited by

                                  @paul53
                                  danke dir, ich werde es versuchen

                                  1 Reply Last reply Reply Quote 0
                                  • J
                                    jwedenig Most Active @paul53 last edited by

                                    @paul53
                                    du meinst hier dazwischen, oder?
                                    Bildschirmfoto 2023-09-26 um 08.53.41.png

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

                                      @jwedenig sagte: du meinst hier dazwischen, oder?

                                      Ja, z.B.

                                      J 1 Reply Last reply Reply Quote 0
                                      • J
                                        jwedenig Most Active @paul53 last edited by

                                        @paul53
                                        Lieber Paul53!
                                        Anbei nochmals das Skript ink. Temp Schwelle.
                                        Wenn Du so nett wärest und kurz einen Blick drauf wirfst?
                                        Ohne dem Zusatz funktioniert es perfekt:
                                        Jeweils bei einem Überschuss von 1000W schalten sich Heizstab 1 und Pumpe ein, dann Heizstab 2 und Pumpe und dann beide Heizstäbe mit Pumpe.
                                        Aus geht auch alles richtig!
                                        Meine Frage:
                                        Was passiert jetzt bei dem Skript, wenn die 70 Grad erreicht werden, dann schalten sich beide Heitstäbe und Pumpe aus, richtig?
                                        Und was passiert, wenn die Temperatur unter 65 Grad sinkt?
                                        Wird dann wieder das Einschaltszenario gestartet mit zuerst Herzstab 1 und Pumpe usw. oder schalten sich dann gleich alle Verbraucher wieder ein da ja Überschuss vorhanden ist?
                                        Vielen Dank
                                        Liebe Grüße
                                        Jürgen

                                        Bildschirmfoto 2023-09-27 um 13.46.46.png

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

                                          @jwedenig
                                          Es fehlt die Prüfung der Variablen temp im Einspeise-Trigger:

                                          Blockly_temp.JPG

                                          Außerdem fehlt die Initialisierung der Variablen temp bei Skriptstart:

                                          Blockly_temp.JPG

                                          Wenn die Temperatur unter 65°C sinkt, erfolgt das Zuschalten über Stufe 1 --> Stufe 2 --> Stufe 3 im 10 Minuten Abstand.

                                          J 1 Reply Last reply Reply Quote 0
                                          • J
                                            jwedenig Most Active @paul53 last edited by

                                            @paul53
                                            So?
                                            Bildschirmfoto 2023-09-27 um 14.15.54.png Skript.rtf

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            885
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            71
                                            5364
                                            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