Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. ShellyPlug bei negativem Bezug einschalten

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    ShellyPlug bei negativem Bezug einschalten

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Schnotzler last edited by Schnotzler

      Screenshot 2023-12-17 080945.png

      Hallo,
      ich möchte eine ShellyPlug einschalten wenn die Einspeisung am Sttomzähler mehr als 600W beträgt.
      (Hier aufgrund der Jahreszeit zum testen mal nur 100W eingetragen) (Solarleistung > Hausverbrauch)

      Wenn der Bezug wieder positiv wird soll die Steckdose wieder ausschalten.
      Damit das nicht schwingen kann muss da eine Verzögerung rein.
      Ich habe das versucht mit dem timout von 60 sek zu lösen.

      Leidr funktioniert das so im Moment nicht.
      Die ShellyPlug schaltet ein aber nicht wieder aus...

      KAnn mir bitte jemand helfen?

      M paul53 2 Replies Last reply Reply Quote 0
      • M
        Meckii @Schnotzler last edited by Meckii

        @schnotzler
        Auch wenn ich dir nicht helfen kann - ich würde aber noch vor einem erneuten Einschalten ebenfalls ein paar Sekunden oder Minuten abwarten.
        Sonst hast du anderstrum evtl. das selbe Problem dass du abschaltest und gleich wieder einschaltest.

        Je nach dem was du daran betreiben willst - Kühlschrankkompressoren reagieren auf solche Ein/Ausschaltvorgänge oft sehr beleidigt. Da würde ich vor einem erneuten Einschalten mind. 15min abwarten.

        Edit:
        Mir ist gerade in der Dusche noch eine Idee gekommen.
        Ich würde den Messwert der Leistung des ShellyPlug hernehmen und gegen die Variable Einspeiseleistungswert vergleichen. Falls "Pshelly > PEinspeiseleistung" erfüllst du allein aus dem Verbraucher des Shelly das Abschaltkriterium und du hast ein lustiges An/Aus Dingens fabriziert.
        Ich würde den Verbraucher dann einfach Angeschaltet lassen und einen Fehler ins Log Schreiben.

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

          @schnotzler sagte: ShellyPlug schaltet ein aber nicht wieder aus...

          Der "stop timeout" in sonst-Zweig stoppt ständig, außer bei genau zwei Bedingungen, wobei der Vergleich mit vorheriger Wert falsch herum dargestellt ist. Stoppe nur zusammen mit dem Einschalten.

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

            @paul53
            Könntest du mir bitte zeigen wie das geht?
            Evtl. sogar mit den Vorschlägen von @Meckii
            Das ist mein erstes Blockly in meinem Leben 😉
            Ich bin total überfordert...

            Vielen lieben Dank

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

              @schnotzler sagte: zeigen wie das geht?

              Z.B. so:

              Blockly_temp.JPG

              5 Minuten Verzögerung sollten schon sein, damit nicht bei jeder kleinen Wolke bzw. Wolkenlücke geschaltet wird.
              Die Hysterese muss etwas größer sein als die Leistungsaufnahme des zu schaltenden Verbrauchers.

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

                @paul53
                Vielen Dank.
                Was passiert denn bei dem "falls Wert vom ID Swictch"?
                das danach " steuer Switch mit wahr/falsch" ist mir klar...

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

                  @schnotzler sagte: Was passiert denn bei dem "falls Wert vom ID Swictch"?

                  Es wird geprüft, ob eingeschaltet ist: Nur dann soll ausgeschaltet werden, um unnötigen Funkverkehr zu vermeiden ... und umgekehrt.

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

                    @paul53 Danke.
                    Screenshot 2023-12-17 113937.png
                    Ich hab das für interresierte nochmals angehängt...

                    <block xmlns="https://developers.google.com/blockly/xml" type="variables_set" id="Y},@#|Ad:x8SY%XWZf[6" x="83" y="123">
                     <field name="VAR" id="?:?Sz22Dj|@!x[AFBH6B">aktuellerUeberschuss</field>
                     <value name="VALUE">
                       <block type="math_arithmetic" id="Fw:/1FEL{BJ.CWEQm;1V">
                         <field name="OP">MINUS</field>
                         <value name="A">
                           <shadow type="math_number" id="8S$7wzFC#e~@rYFv=N{c">
                             <field name="NUM">1</field>
                           </shadow>
                           <block type="math_number" id=";N%0I$p3B{F.*)8haueh">
                             <field name="NUM">0</field>
                           </block>
                         </value>
                         <value name="B">
                           <shadow type="math_number" id="rWTYxtHnTxa)MdABDm`6">
                             <field name="NUM">1</field>
                           </shadow>
                           <block type="on_source" id="T,y.{uyMW+2z9EgABQ~X">
                             <field name="ATTR">state.val</field>
                           </block>
                         </value>
                       </block>
                     </value>
                     <next>
                       <block type="controls_if" id="+9A?v@x*j.fQA=~FY.@Q">
                         <mutation elseif="1"></mutation>
                         <value name="IF0">
                           <block type="logic_compare" id="gaHzP,xC|fWW[u}*dNB_">
                             <field name="OP">LTE</field>
                             <value name="A">
                               <block type="variables_get" id="hVw*@2imj6:=5=3vlr:Q">
                                 <field name="VAR" id="?:?Sz22Dj|@!x[AFBH6B">aktuellerUeberschuss</field>
                               </block>
                             </value>
                             <value name="B">
                               <block type="variables_get" id="7RLO.T{z8?rd][B:})+j">
                                 <field name="VAR" id="o?fO}X2?p~G8jlAVBYQ%">sollUeberschuss</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <statement name="DO0">
                           <block type="timeouts_cleartimeout" id="7eT_*?XnHBdD-Il;1o`A">
                             <field name="NAME">delayAn</field>
                           </block>
                         </statement>
                         <value name="IF1">
                           <block type="logic_negate" id="coWHmqsBW8lC.RCQNOXu">
                             <value name="BOOL">
                               <block type="timeouts_gettimeout" id="sZ$=Qm9=oVH@*B2Lul-.">
                                 <field name="NAME">delayAn</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <statement name="DO1">
                           <block type="timeouts_settimeout" id=",bYX[6n$NKUyqD=lBHy%">
                             <field name="NAME">delayAn</field>
                             <field name="DELAY">5</field>
                             <field name="UNIT">min</field>
                             <statement name="STATEMENT">
                               <block type="controls_if" id=",H[Ar6X%N;6bZ+hitTIm">
                                 <value name="IF0">
                                   <block type="logic_negate" id="soQMyLk.qp*:.of=I#PD">
                                     <value name="BOOL">
                                       <block type="get_value" id="Q=]RcGp%-.jNhp)|KOto">
                                         <field name="ATTR">val</field>
                                         <field name="OID">ID auswählen</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                                 <statement name="DO0">
                                   <block type="control" id="XJ7DZKXs#Y;/wAw@,FIt">
                                     <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                     <field name="OID">Object ID</field>
                                     <field name="WITH_DELAY">FALSE</field>
                                     <value name="VALUE">
                                       <block type="logic_boolean" id="5*xBho2#Pc8QRRGK:8iJ">
                                         <field name="BOOL">TRUE</field>
                                       </block>
                                     </value>
                                   </block>
                                 </statement>
                               </block>
                             </statement>
                           </block>
                         </statement>
                         <next>
                           <block type="controls_if" id="yF4@a-u8/yeH[g7*Gl/a">
                             <mutation elseif="1"></mutation>
                             <value name="IF0">
                               <block type="logic_compare" id="9cKv+bm])pm[)@VX^@dx">
                                 <field name="OP">GTE</field>
                                 <value name="A">
                                   <block type="variables_get" id="Qu/:!OyJLJ|5ukV5^d=Z">
                                     <field name="VAR" id="?:?Sz22Dj|@!x[AFBH6B">aktuellerUeberschuss</field>
                                   </block>
                                 </value>
                                 <value name="B">
                                   <block type="math_number" id="/TeP:d|}J9_Goi?t=+GR">
                                     <field name="NUM">0</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                             <statement name="DO0">
                               <block type="timeouts_cleartimeout" id="ZO/Jm:Yw*6rWm2p3X9cU">
                                 <field name="NAME">delayAus</field>
                               </block>
                             </statement>
                             <value name="IF1">
                               <block type="logic_negate" id="?T{eF?hz%6h2L?b[Z2)a">
                                 <value name="BOOL">
                                   <block type="timeouts_gettimeout" id="G^L6v.v|_D!t-`fIOucs">
                                     <field name="NAME">delayAus</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                             <statement name="DO1">
                               <block type="timeouts_settimeout" id="tlQ(|Q#[C8an!3vleXB0">
                                 <field name="NAME">delayAus</field>
                                 <field name="DELAY">5</field>
                                 <field name="UNIT">min</field>
                                 <statement name="STATEMENT">
                                   <block type="controls_if" id="S[[N(:oCt.wG[t#mXgyo">
                                     <value name="IF0">
                                       <block type="get_value" id="6Nv_;%+D9ue`vjfG5s(q">
                                         <field name="ATTR">val</field>
                                         <field name="OID">ID auswählen</field>
                                       </block>
                                     </value>
                                     <statement name="DO0">
                                       <block type="control" id="!Qn94W(*8Ab$3l!KLU}*">
                                         <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                         <field name="OID">Object ID</field>
                                         <field name="WITH_DELAY">FALSE</field>
                                         <value name="VALUE">
                                           <block type="logic_boolean" id="]N}bP6#DIXbIeQc0q3e+">
                                             <field name="BOOL">FALSE</field>
                                           </block>
                                         </value>
                                       </block>
                                     </statement>
                                   </block>
                                 </statement>
                               </block>
                             </statement>
                           </block>
                         </next>
                       </block>
                     </next>
                    </block>
                    

                    da_Woody 1 Reply Last reply Reply Quote 0
                    • da_Woody
                      da_Woody @Schnotzler last edited by

                      @schnotzler schön das es klappt! nachdem ich auch eine flasche mit js und blockly bin, schon mal mit rules getestet?
                      f85b801b-7df7-4d9d-9a75-7390fd3e6348-grafik.png

                      1 Reply Last reply Reply Quote 0
                      • M
                        Meckii last edited by

                        @paul53
                        Ich habe mir dein Skript heute auch mal kopiert - es funktioniert auch super.
                        Leider verstehe ich es nicht...

                        Was macht denn das "sonst falls nicht Verzögerung delayAn"?

                        Kannst du das irgendwie erklären wann da was durchlaufen wird? Und vor allem warum?

                        Vielen lieben Dank

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

                          @meckii sagte: Was macht denn das "sonst falls nicht Verzögerung delayAn"?

                          Es ist eine Sperre, die einen mehrfachen Start des Timeouts verhindert. Ein mehrfach gestarteter Timeout lässt sich nicht mehr stoppen.

                          1 Reply Last reply Reply Quote 0
                          • B
                            berndsolar13 last edited by

                            das selbe Script, ich glaube es war damals auch paul53 😉 läuft bei mir perfekt seit gut einem Monat.

                            Heute wo gut die Sonne schien, hat es meine 2 Infraot Birnen eingeschaltet, und mir die Füße gewärmt 😉 Hängen unterm Büro Tisch 🙂

                            Ich hab die Hysterese aber mittlerweile auf 2 Min geändert, klappt trotzdem noch super.
                            Hab das Script mit 2x an.

                            Das war die günstigste Variante um den PV Überschuss in Wärme umzuwandeln fürs Balkonkraftwerkt. Infrarot Birne 5 Euro + 1 Tasmota Steckdose braucht man. Kann man beliebig erweitern. Aber im Winter kommt es selten vor, das ich mehr wie 250 W Überschuss habe. Aber die eine war recht oft an. Hab dafür meine Poolpumpen Tasmota Steckdose genommen, da die ja im Winter nicht genutzt wurde.

                            G 1 Reply Last reply Reply Quote 0
                            • G
                              Gonzokalle @berndsolar13 last edited by

                              Zum Verständnis:
                              In dem Blockly wird nur der Strom von der PV/BKW berücksichtigt und von 100W Grundlast ausgegangen?
                              Der tatsächliche Bezug vom Versorger wird nicht berücksichtigt?

                              M 1 Reply Last reply Reply Quote 0
                              • M
                                Meckii @Gonzokalle last edited by Meckii

                                @gonzokalle Ich habe es so gemacht
                                https://www.heise.de/tests/Ausprobiert-Guenstiger-IR-Lesekopf-fuer-Smart-Meter-mit-Tastmota-Firmware-7065559.html
                                Wird hier der Bezug negativ habe ich echten Überschuss der aktuell verschenkt wird.
                                Damit schalte ich dann eine zigbee Dose ein und verbrauche den Strom selbst z.B. um meinen Akku-Handstaubsauger nachzuladen.

                                Edit:
                                https://tasmota-sml-parser.dicp.net Hier kannst du dann noch für deinen Stromzähler die passende Definition für Tasmota zusammen basteln.

                                Edit2:
                                Die 100W (sollüberschuss) müssen sinnvoll eingestellt werden.

                                Wenn du nun einen Verbraucher mit 120W dran hängst wird folgendes passieren:

                                • Du hast 100W überschuss
                                • Steckdose schaltet ein
                                • Verbraucher mit 120W springt an
                                • Du hast einen Bezug von 20W
                                • Steckdose wird abgeschaltet
                                • Du hast einen Überschuss von 100W
                                • usw...
                                  (Daher sollte dein soll Überschuss leicht höher als der tatsächliche Verbraucher eingestellt sein...)

                                Ich bin leider kein Blockly Profi. Aber aktuell überlege ich mir wie ich z.B. mit dem Messwert der zigbeesteckdose das Ein/Aus Pingpong verhindern kann.
                                Erste idee die ich versuchen möchte den Soll überschuss automatisch auf Messwert + 10W (als Reserve) zu setzen...

                                G 1 Reply Last reply Reply Quote 0
                                • G
                                  Gonzokalle @Meckii last edited by

                                  @meckii
                                  Aus deiner Antwort schließe ich zwei mal ein "ja" auf meine Fragen.
                                  Einen Shelly 3em habe ich schon im Schaltschrank. 😉

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    Meckii @Gonzokalle last edited by Meckii

                                    @gonzokalle Nur um Missverständnisse vorzubeugen:

                                    In dem Blockly wird nur der Strom von der PV/BKW berücksichtigt?
                                    Nein - Bei mit wird der Stromzähler mit diesem Skript abgefragt.

                                    und von 100W Grundlast ausgegangen?
                                    Jein - Es wird von einer Last < 100W an der Schaltsteckdose ausgegangen

                                    Der tatsächliche Bezug vom Versorger wird nicht berücksichtigt?
                                    Doch siehe oben - es wird mittels so eines Tasmotadings der Stromzähler abgefragt.

                                    1 Reply Last reply Reply Quote 0
                                    • G
                                      Gonzokalle last edited by

                                      @meckii
                                      Dankeschön, jetzt ist es klar.
                                      War für nicht ersichtlich, ob zwischen PV und Netz gemessen wurde oder am Zähler.

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        Speedy012 last edited by

                                        Hallo, ich stehe etwas auf dem Schlauch, ich habe eine Powerstation die mit 200 Watt läd.
                                        Die Steckdose wird über ein Shelly Plug S gesteuert.

                                        In der Verteilung habe ich ein Shelly 3EM was mir den Verbrauch anzeigt.

                                        Ich möchte wenn dieser -250 Watt anzeigt die Shelly Plug S Steckdose einschalten zum laden, und wenn weniger über ist soll wieder abgeschaltet werden.

                                        Mit dem Delay hört sich gut an wegen der Wolken.

                                        Jetzt verstehe ich nicht genau wie ich die Werte ändern soll und wo genau ich welche Objekt ID zuweisen muss.

                                        Könnte mir jemand helfen?

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

                                          @speedy012 sagte: wie ich die Werte ändern soll

                                          Ersetze hier den Vergleichswert 600 durch 250.

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

                                            @paul53
                                            habe es jetzt so gemacht:

                                            solar.png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            896
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            26
                                            1968
                                            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