Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. PV Überschuss SMA Toogle vermeiden

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    PV Überschuss SMA Toogle vermeiden

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

      @maik5066 sagte: per XML zusenden ?

      <xml xmlns="https://developers.google.com/blockly/xml">
       <variables>
         <variable type="timeout" id="delayOn">delayOn</variable>
         <variable type="timeout" id="delayOff">delayOff</variable>
       </variables>
       <block type="on" id="!Qbb5{lAFMZT#M$Q2P%P" x="87" y="12">
         <field name="OID">0_userdata.0.Blockly.EVU-Einspeisung</field>
         <field name="CONDITION">any</field>
         <field name="ACK_CONDITION"></field>
         <statement name="STATEMENT">
           <block type="comment" id="9X:XKXRgH!xZ!=zZbThm">
             <field name="COMMENT">3 mal 2000 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="on_source" id="XUIHKI9ro9*6gU8Y~cuh">
                         <field name="ATTR">state.val</field>
                       </block>
                     </value>
                     <value name="B">
                       <block type="math_number" id="vP_iZf?M;`@RCY1gD^i:">
                         <field name="NUM">2500</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="i.:l;5vs?$}^L}N-R(^T">
                         <mutation elseif="2"></mutation>
                         <value name="IF0">
                           <block type="logic_negate" id="R(_3jAG`Md_w[,(|^wr/">
                             <value name="BOOL">
                               <block type="get_value" id="NG3*!?gfl8{k3cP;uW1`">
                                 <field name="ATTR">val</field>
                                 <field name="OID">0_userdata.0.Blockly.Switch1</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <statement name="DO0">
                           <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="logic_boolean" id="ndh[{X~M{gFV,0p.u?49">
                                 <field name="BOOL">TRUE</field>
                               </block>
                             </value>
                           </block>
                         </statement>
                         <value name="IF1">
                           <block type="logic_negate" id="r:ak[AbR=(fM06(!MiNq">
                             <value name="BOOL">
                               <block type="get_value" id="Wk#V-l{Fi[!?`_6`Qj_b">
                                 <field name="ATTR">val</field>
                                 <field name="OID">0_userdata.0.Blockly.Switch2</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <statement name="DO1">
                           <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_boolean" id="r_?O8H8QBzI#o|3X!Q%#">
                                 <field name="BOOL">TRUE</field>
                               </block>
                             </value>
                           </block>
                         </statement>
                         <value name="IF2">
                           <block type="logic_negate" id="jM5~.3jyY`N/(9mGWI:O">
                             <value name="BOOL">
                               <block type="get_value" id="*guxu@lyFFjMcgr}bL4V">
                                 <field name="ATTR">val</field>
                                 <field name="OID">0_userdata.0.Blockly.Switch3</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <statement name="DO2">
                           <block type="control" id="XXUi|!^XGmi4z|s+a-/j">
                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                             <field name="OID">0_userdata.0.Blockly.Switch3</field>
                             <field name="WITH_DELAY">FALSE</field>
                             <value name="VALUE">
                               <block type="logic_boolean" id="J{N8i(G2CBr~GS95U1P5">
                                 <field name="BOOL">TRUE</field>
                               </block>
                             </value>
                           </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="on_source" id="z9x%H=D2G,S;~Zza^j$m">
                             <field name="ATTR">state.val</field>
                           </block>
                         </value>
                         <value name="B">
                           <block type="math_number" id=":{IrB{m-gbX@X2|pVyXZ">
                             <field name="NUM">200</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="?qIetfb=Y~enZP|MFl{L">
                             <mutation elseif="2"></mutation>
                             <value name="IF0">
                               <block type="get_value" id="Gfj4~P(NGH1)wmLG*_5i">
                                 <field name="ATTR">val</field>
                                 <field name="OID">0_userdata.0.Blockly.Switch3</field>
                               </block>
                             </value>
                             <statement name="DO0">
                               <block type="control" id="+}7@V!ZV,:MdpdXzwfQM">
                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                 <field name="OID">0_userdata.0.Blockly.Switch3</field>
                                 <field name="WITH_DELAY">FALSE</field>
                                 <value name="VALUE">
                                   <block type="logic_boolean" id="7]gwCTD%n]L)8L{d}UV;">
                                     <field name="BOOL">FALSE</field>
                                   </block>
                                 </value>
                               </block>
                             </statement>
                             <value name="IF1">
                               <block type="get_value" id="c5)cE;gpnkQiW1,[Z~lq">
                                 <field name="ATTR">val</field>
                                 <field name="OID">0_userdata.0.Blockly.Switch2</field>
                               </block>
                             </value>
                             <statement name="DO1">
                               <block type="control" id="mz4KPZXji[VtQd%D^Q)G">
                                 <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_boolean" id="aHm,f%vDaSf!ndb?Gy^;">
                                     <field name="BOOL">FALSE</field>
                                   </block>
                                 </value>
                               </block>
                             </statement>
                             <value name="IF2">
                               <block type="get_value" id="qiL4rv;pF_`rhwPjnuos">
                                 <field name="ATTR">val</field>
                                 <field name="OID">0_userdata.0.Blockly.Switch1</field>
                               </block>
                             </value>
                             <statement name="DO2">
                               <block type="control" id="1)T#:T-4fP9.161U$Ox!">
                                 <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="logic_boolean" id="EpsV1@;P~LvEiJ]XiL]D">
                                     <field name="BOOL">FALSE</field>
                                   </block>
                                 </value>
                               </block>
                             </statement>
                           </block>
                         </statement>
                       </block>
                     </statement>
                   </block>
                 </next>
               </block>
             </next>
           </block>
         </statement>
       </block>
      </xml>
      

      Wird der Zeitstempel noch regelmäßig aktualisiert, wenn der Überschuss 0 ist?
      Falls nicht, muss man den Trigger erweitern:

      Blockly_temp.JPG

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

        @paul53
        Danke dir,
        Ist der Delay, der Abfrage bzw. Änderungsntervall oder stehe ich gerade auf dem Schlauch
        ich habe es jetzt so umgesetzt :
        Screenshot 2024-02-21 152501.png

        paul53 Codierknecht 3 Replies Last reply Reply Quote 0
        • paul53
          paul53 @maik5066 last edited by paul53

          @maik5066 sagte: ich habe es jetzt so umgesetzt :

          So wird es nichts. Sind es 3 Stufen mit je 2000 W oder 6 Stufen mit je 1000 W?
          Beispiel mit 6 Stufen

          1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @maik5066 last edited by Codierknecht

            @maik5066 sagte in PV Überschuss SMA Toogle vermeiden:

            Abfrage bzw. Änderungsntervall

            Trigger reagieren auf Ereignisse - nicht auf Intervalle.

            Das "delay" trägt Deiner Anforderung Rechnung

            ich möchte aber nicht, das sofort der Datenpunkt Bsp. Stufe 1 auf false gesetzt wird

            Erst wenn der Zustand länger als X-Minuten ansteht, wird geschaltet bzw. geschrieben.
            Fällt er währenddessen aus den Grenzen, wird das "delay" gestoppt und es passiert ... nix.

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

              @maik5066
              Du hast 6 Datenpunkte für jeweils eine 1000-W-Stufe?
              Vorschlag:

              Blockly_temp.JPG

              Bei PV-Überschuss muss die Hysterese etwas größer sein als die Leistungsaufnahme einer Stufe.
              Das Skript funktioniert so nur, wenn auch tatsächlich in jeder Stufe 1000 W Verbrauch zugeschaltet werden.
              Ohne das Zuschalten von Verbrauchern machen Stufen keinen Sinn, denn dann ist der Überschuss in W ausreichend aussagekräftig.

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

                @paul53 Danke dir, 2 kleine Fragen habe ich noch, welche Objekt ID soll ich in der Funktion wie in der oben rechten Prüfung einsetzten ? Gibt es nur einen Datenpunkt der dann Zahlen von 1-6 beinhaltet ?

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

                  @maik5066 sagte: Gibt es nur einen Datenpunkt der dann Zahlen von 1-6 beinhaltet ?

                  Nein, es sind 6 DP vom Typ "boolean", die jeweils einen 1000 W Verbraucher zuschalten.

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

                    @paul53 danke dir, ich habe es jetzt mit 10 Stufen so umgesetzt , was soll ich auf den Abfragen ob rechts eintragen
                    Screenshot 2024-02-23 1517122.png !Screenshot 2024-02-23 151635.png

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

                      @maik5066 sagte: was soll ich auf den Abfragen ob rechts eintragen

                      Oben beginnend mit "PVueber10000" abwärts.
                      Mit den User-Datenpunkten wird es nicht funktionieren, da damit keine Verbraucher geschaltet werden. Das Zu- und Abschalten von Verbrauchern hat Rückwirkung auf den PV-Überschuss, was im Skript vorausgesetzt wird.

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

                        @paul53 Entschuldige ich verstehe es leider nicht :
                        der Block setze Stufe auf , kannst mir diesen beschreiben
                        Die Funktion "um Stufen" , kannst du mir diesen auch beschreiben
                        Danke dir für deine Hilfe.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        507
                        Online

                        32.0k
                        Users

                        80.4k
                        Topics

                        1.3m
                        Posts

                        3
                        14
                        469
                        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