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: Könnt ihr mir weiterhelfen ?

      Prinzip 3-stufige Ansteuerung mit Prüfung der Mindestdauer von Grenzwertüber(unter)schreitung.

      Blockly_temp.JPG

      Voraussetzung: JS-Adapter Version >= 7.0.5.

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

        @paul53 Vielen Dank, kannst du mir das per XML zusenden ?
        Hier noch der Screenshot meines Skriptes :
        Screenshot 2024-02-21 132350.png

        paul53 1 Reply Last reply Reply Quote 0
        • 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

                            899
                            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