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.
    • 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

                          977
                          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