Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Gelöst: Fehlfunktion: Shelly Leistungsgesteuert schalten

    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

    Gelöst: Fehlfunktion: Shelly Leistungsgesteuert schalten

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Markus 7 last edited by Markus 7

      Hallo zusammen,

      ich bin noch meilenweit weg, was die Programmierung von komplexen Skripten anbelangt, dennoch traue ich mir zu, einen Shelly Plug leistungsgesteuert zu schalten.

      Aber wie ich es auch anstelle, der Shelly wird auch bei einer Stromleistung >> 20 Watt geschaltet.
      Was habe ich übersehen?

      8e62f93f-702d-4233-ba06-7e513540378a-image.png

      <xml xmlns="https://developers.google.com/blockly/xml">
        <block type="on_ext" id="eF#Zha0wK];5Dwo{Ro%~" x="188" y="-312">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
          <field name="CONDITION">ne</field>
          <field name="ACK_CONDITION"></field>
          <value name="OID0">
            <shadow type="field_oid" id="bk`sT=?y14BETlgNu^a)">
              <field name="oid">shelly.0.shellyplusplugs#a0a3b3c274f0#1.Relay0.Power</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="controls_if" id="J%cA)A4k;3*p5`aE{I(c">
              <value name="IF0">
                <block type="logic_compare" id="3?:U-hVOLiRYwGMPQaWG">
                  <field name="OP">LT</field>
                  <value name="A">
                    <block type="get_value" id="|.*qf9TTo+}3lxCy;/##">
                      <field name="ATTR">val</field>
                      <field name="OID">shelly.0.shellyplusplugs#a0a3b3c274f0#1.Relay0.Power</field>
                    </block>
                  </value>
                  <value name="B">
                    <block type="math_number" id="mO7KF#x=W{mLn~797c[.">
                      <field name="NUM">20</field>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="control" id="2g9A5)JLvn8#N7T%KIzB">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                  <field name="OID">shelly.0.shellyplusplugs#a0a3b3c274f0#1.Relay0.Switch</field>
                  <field name="WITH_DELAY">TRUE</field>
                  <field name="DELAY_MS">5</field>
                  <field name="UNIT">min</field>
                  <field name="CLEAR_RUNNING">FALSE</field>
                  <value name="VALUE">
                    <block type="logic_boolean" id="WL(Dk!)@}|,X%|~vLjbk">
                      <field name="BOOL">FALSE</field>
                    </block>
                  </value>
                </block>
              </statement>
            </block>
          </statement>
        </block>
      </xml>
      

      Viele Grüße,
      Markus

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

        @markus-7
        Versuche es mal so:

        Blockly_temp.JPG

        <xml xmlns="https://developers.google.com/blockly/xml">
         <block type="on_ext" id="eF#Zha0wK];5Dwo{Ro%~" x="188" y="-312">
           <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
           <field name="CONDITION">ne</field>
           <field name="ACK_CONDITION"></field>
           <value name="OID0">
             <shadow type="field_oid" id="bk`sT=?y14BETlgNu^a)">
               <field name="oid">shelly.0.shellyplusplugs#a0a3b3c274f0#1.Relay0.Power</field>
             </shadow>
           </value>
           <statement name="STATEMENT">
             <block type="controls_if" id="J%cA)A4k;3*p5`aE{I(c">
               <value name="IF0">
                 <block type="logic_multi_and" id="[[U(@[$(Mw7Mmn(neq()">
                   <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
                   <value name="AND0">
                     <block type="logic_compare" id="3?:U-hVOLiRYwGMPQaWG">
                       <field name="OP">LT</field>
                       <value name="A">
                         <block type="on_source" id="_+aB@f-yFPpA~79:}w(m">
                           <field name="ATTR">state.val</field>
                         </block>
                       </value>
                       <value name="B">
                         <block type="math_number" id="mO7KF#x=W{mLn~797c[.">
                           <field name="NUM">20</field>
                         </block>
                       </value>
                     </block>
                   </value>
                   <value name="AND1">
                     <block type="logic_compare" id="lutm6vkjBa3R7}/leHwZ">
                       <field name="OP">GTE</field>
                       <value name="A">
                         <block type="on_source" id="L@3:?p%}etCyNwAqHDIV">
                           <field name="ATTR">oldState.val</field>
                         </block>
                       </value>
                       <value name="B">
                         <block type="math_number" id="X2Ai7320=@9ae90sHJ5F">
                           <field name="NUM">20</field>
                         </block>
                       </value>
                     </block>
                   </value>
                 </block>
               </value>
               <statement name="DO0">
                 <block type="control" id="2g9A5)JLvn8#N7T%KIzB">
                   <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                   <field name="OID">shelly.0.shellyplusplugs#a0a3b3c274f0#1.Relay0.Switch</field>
                   <field name="WITH_DELAY">FALSE</field>
                   <value name="VALUE">
                     <block type="logic_boolean" id="WL(Dk!)@}|,X%|~vLjbk">
                       <field name="BOOL">FALSE</field>
                     </block>
                   </value>
                 </block>
               </statement>
             </block>
           </statement>
         </block>
        </xml>
        

        M 1 Reply Last reply Reply Quote 1
        • M
          Markus 7 @paul53 last edited by

          @paul53

          Danke dir das probiere ich gerne 🙂

          Für mein Verständnis: Er schaltet nur dann, wenn die im Speicher des Trigger-Elementes "Falls Objekte..." enthaltenen Werte den Bedingungen entsprechen?

          M 1 Reply Last reply Reply Quote 0
          • M
            Markus 7 @Markus 7 last edited by

            @paul53

            Habe deine Idee jetzt getestet und was soll ich sagen - sie funktioniert 🙂
            Warum auch immer die einfache Abfrage der Leistung da nicht ausgereicht hat - mit den Abfragen der zwei Werte klappt es jedenfalls.

            Vielen Dank!
            VG Markus

            mickemup 1 Reply Last reply Reply Quote 0
            • mickemup
              mickemup @Markus 7 last edited by

              @markus-7 Deine Schaltung hat wohl schon funktioniert.
              Die hat einfach sobald mal die Leistung das erste mal kleiner 20W war noch 5min gewartet und dann ausgeschaltet...

              M 1 Reply Last reply Reply Quote 0
              • M
                Markus 7 @mickemup last edited by

                @mickemup

                Ok, ich war zu voreilig, hatte nicht ausgiebig getestet und jetzt den Denkfehler gefunden:

                Meine erste Version hatte zwar auch schon funktioniert, ich hatte aber immer mal wieder ein Ausschalten bei einer Leistung > 70 W und weiß jetzt auch warum:
                An dem Shelly hängt mein PC mit Monitoren etc. Wenn ich den PC jetzt nur kurz herunterfahre und dann wieder neu starte, läuft im Hintergrund das Script ja trotzdem weiter, auch wenn die Leistung mittlerweile wieder über 70 W liegt. Ergo schaltet der PC dann strikt nach 5 Minuten aus.

                Ich muss jetzt noch einen Timer o.ä. einbauen, dass mir den Shelly nur dann schaltet, wenn die Leistung "über einen Zeitraum von 5 Minuten" konstant < 70 W liegt.

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

                  @markus-7 sagte: nur dann schaltet, wenn die Leistung "über einen Zeitraum von 5 Minuten" konstant < 70 W liegt.

                  Vorschlag mit Schwelle 20 W:

                  Blockly_temp.JPG

                  mickemup 1 Reply Last reply Reply Quote 1
                  • mickemup
                    mickemup @paul53 last edited by

                    @paul53 nicht kleiner gleich 20 bei vorheriger Wert?

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

                      @mickemup sagte: nicht kleiner gleich 20 bei vorheriger Wert?

                      Nein! Genau so wie gezeigt bedeutet: Wert < 20 (sonst) UND vorheriger Wert >= 20.

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

                        @paul53 Aja sry, hast natürlich recht.
                        Das heisst hier wird sozusagen auf die abfallende Flanke geschaut (von grösser 20 zu kleiner 20) und dann mit x min Verzögerung ausgeschaltet falls der Wert nicht wieder über 20 steigt.

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

                          @mickemup sagte: dann mit x min Verzögerung ausgeschaltet falls der Wert nicht wieder über 20 steigt.

                          Ja. Die Prüfung von vorheriger Wert ist erforderlich, um das Starten mehrerer Timer bei Leistungen < 20 W zu verhindern, die sich dann nicht mehr stoppen lassen.

                          1 Reply Last reply Reply Quote 1
                          • M
                            Markus 7 last edited by

                            @paul53 sagte in Gelöst: Fehlfunktion: Shelly Leistungsgesteuert schalten:

                            Vorschlag mit Schwelle 20 W:

                            Danke dir, so funktioniert es perfekt. Mit den Funktionsbausteinen der Timeouts und Intervallen muss ich mich mal näher beschäftigen, verstehen tue ich sie noch nicht wirklich.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            778
                            Online

                            31.7k
                            Users

                            79.9k
                            Topics

                            1.3m
                            Posts

                            3
                            12
                            445
                            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