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.
    • Codierknecht
      Codierknecht Developer Most Active @maik5066 last edited by

      @maik5066
      Bei Blockly bitte auch immer einen Screenshot liefern.
      Das XML kannst Du - (optional) am besten hinter einem Spoiler - zusätzlich liefern.

      Nicht jeder hier hat Lust und Zeit, das erstmal zu importieren um zu sehen was da los ist.

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

                              919
                              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