Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Pause bei wertabhängigem Schalten

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Pause bei wertabhängigem 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 habe im Grunde was einfaches vor, scheitere aber an den unterschiedlichen Möglichkeiten.

      Abhängig von einem gemessenen Wert ("Helligkeit") möchte ich über den Ausgang eines Shelly UNI eine Pumpe ein- bzw. ausschalten. Da sich der gemessene Wert um die eingestellte Schwelle schnell ändert möchte ich verhindern, dass die Pumpe zu schnell an- und wieder ausgeschaltet wird. Also eine Pause zwischen den Schaltvorgängen einbauen.

      In Blockly habe ich dafür mit fast allen "Timeouts"-Bausteinen experimentiert, aber weder "Pause" noch "Ausführen Intervall..." oder "Ausführen Timeout..." bringen die Schaltung dazu, dass sich die Schaltung des Ausgangs nicht alle paar Sekunden ändert, wenn die gemessene Helligkeit gerade um den eingestellten Schwellwert herum sich verändert.

      Hier nur ein Beispiel, wie ich es versucht habe:

      2cf40520-a8d8-4a45-ac2f-72cab187b287-image.png

      <xml xmlns="https://developers.google.com/blockly/xml">
        <block type="on" id="clZzcvwIS].n)#lS$o,q" x="688" y="-1062">
          <field name="OID">shelly.0.SHUNI-1#C8C9A31B58D6#1.ADC.Power</field>
          <field name="CONDITION">ne</field>
          <field name="ACK_CONDITION"></field>
          <statement name="STATEMENT">
            <block type="controls_if" id="4=@4i]+bf9bp`[zMliGU">
              <mutation else="1"></mutation>
              <value name="IF0">
                <block type="logic_compare" id="zKH59J2NUNAMR*6o+~8e">
                  <field name="OP">GT</field>
                  <value name="A">
                    <block type="get_value" id="`B@E~98@l0`21L9U5zi}">
                      <field name="ATTR">val</field>
                      <field name="OID">shelly.0.SHUNI-1#C8C9A31B58D6#1.ADC.Power</field>
                    </block>
                  </value>
                  <value name="B">
                    <block type="math_number" id="eFg3Ac*G|0*/q0C%e!yb">
                      <field name="NUM">9.7</field>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="timeouts_wait" id="x=j%4(?JfTD}k3xD*2|D">
                  <field name="DELAY">10</field>
                  <field name="UNIT">sec</field>
                  <next>
                    <block type="control" id="Ep/x,Ezj!8Yrn5p}YV6{">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                      <field name="OID">shelly.0.SHUNI-1#C8C9A31B58D6#1.Relay0.Switch</field>
                      <field name="WITH_DELAY">FALSE</field>
                      <value name="VALUE">
                        <block type="logic_boolean" id="+tJG-dM(fF9P=1OJW_-i">
                          <field name="BOOL">TRUE</field>
                        </block>
                      </value>
                    </block>
                  </next>
                </block>
              </statement>
              <statement name="ELSE">
                <block type="timeouts_wait" id="4kEC!1@LlG-33}!]-A1-">
                  <field name="DELAY">10</field>
                  <field name="UNIT">sec</field>
                  <next>
                    <block type="control" id="GyV5Ul6ky8!R-mI!OvKI">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                      <field name="OID">shelly.0.SHUNI-1#C8C9A31B58D6#1.Relay0.Switch</field>
                      <field name="WITH_DELAY">FALSE</field>
                      <value name="VALUE">
                        <block type="logic_boolean" id="?9V=L,}ebv*uh-Tvxky^">
                          <field name="BOOL">FALSE</field>
                        </block>
                      </value>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
        </block>
      </xml>
      

      Danke für einen kleien Hinweis, was ich falsch gemacht habe bzw. wie ich einfach eine Verzögerung zwischen die Schaltvorgänge bekomme.

      Grüßle,
      Markus

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Markus 7 last edited by Homoran

        @markus-7 sagte in Pause bei wertabhängigem Schalten:

        aber weder "Pause" noch "Ausführen Intervall..." oder "Ausführen Timeout..." bringen die Schaltung dazu,

        zumindest bei dieser Pause ist es klar. Wenn der Wert innerhalb der 10 Sec erneut triggert, nutz das gar nichts.

        Du musst mit einer Hysterese arbeiten.

        an bei >9.7, aus bei kleiner 9 (als sonst wenn)

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

          Kann ich nicht einfach die ganze Abfrage in eine Schleife oder ähnliches packen, die nur alle X Sekunden durchlaufen wird?

          Asgothian Homoran 2 Replies Last reply Reply Quote 0
          • Asgothian
            Asgothian Developer @Markus 7 last edited by

            @markus-7 sagte in Pause bei wertabhängigem Schalten:

            Kann ich nicht einfach die ganze Abfrage in eine Schleife oder ähnliches packen, die nur alle X Sekunden durchlaufen wird?

            Nein.

            Versuch mal so

            40ff97f4-f116-4e56-b664-7c162b004fc9-image.png

            M 1 Reply Last reply Reply Quote 1
            • Homoran
              Homoran Global Moderator Administrators @Markus 7 last edited by

              @markus-7 javascript arbeitet eventbasiert.
              Alle paar Sekunden triggern um nur wenige Schaltvorgänge zu erreichen ist nicht sinnvoll.

              Wie oft ändert sich der Triggerwert und wie oft sollte dier Schalter wirklich sinnvoll schalten?

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

                @homoran said in Pause bei wertabhängigem Schalten:

                Wie oft ändert sich der Triggerwert und wie oft sollte dier Schalter wirklich sinnvoll schalten?

                Es wird über eine Photodiode die Sonneneinstrahlung gemessen, um bei voller Einstrahlung die Pumpe eine kleine Solarthermie geschaltet wird.

                Dabei kommt es bei kleinen Wölkchen schon vor, dass der eingestellte Schwellwert in kurzer Zeit mehrmals unter- bzw. überschritten wird.

                Ich möchte, dass nach einem Schaltvorgang (Pumpe ein oder Pumpe aus) dieser Status mindestens 30 Sekunden beibehalten wird.

                Homoran paul53 2 Replies Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @Markus 7 last edited by Homoran

                  @markus-7 Man könnte auch über ein Schieberegister die Helligkeitswerte glätten.

                  Aber die Frage war eigentlich nach der Sinnhaftigkeit häufigen Schaltens.

                  Ich denke nicht, dass ein 30 sekündliches Intervall

                  • der Pumpe gut tut
                  • für die Effektivität der Solarthermie unbedingt notwendig ist

                  ganz abgesehen davon, ob der Helligkeitswert überhaupt dafür geeignet ist.

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

                    @homoran

                    Da haste im Grunde schon recht. Ich sollte nur dazu erwähnen, dass die Solarthermie nur aus sowas wie 200 m schwarzem Schlauch besteht und zwei kleine 20 EUR Pumpen mittels einem 100 W Solarpanele bestrohmt sind.

                    Das letzte Jahr ist die Anlage schon gelaufen und die Steuerung der Pumpen wurde über ein Dämmerungsschalter (Platinenbausatz) vorgenommen. Da gab es regelmäßig die Situation, dass das Schaltrelais über mehrere Sekunden lang mehrmals pro Sekunde geschaltet hat 😱

                    Somit wäre ich mit einer Zyklusdauer von 30-60 Sekunden schon seeehr zufrieden 🙂

                    PS: Den Schwellwert kann ich durch Widerstände und den daraus resultierenden Spannungswert des Shellys gut einstellen.

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

                      @markus-7

                      Versuch mal so.
                      014f588d-06dc-4c03-bdd8-ec5bbbb23919-image.png
                      Die falls Abfrage auf wert > Limit und vorheriger Wert <= Limit dient dazu das der Rest nur aktiv wird wenn das Limit gerade überschritten wird. Wenn der Wert oberhalb der Schwelle zappelt ist das nicht interessant.

                      A.
                      P.s. du musst natürlich die korrekten Objekt IDs eintragen, die hab ich nicht.

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

                        @asgothian said in Pause bei wertabhängigem Schalten:
                        [...]

                        Versuch mal so [...])

                        Ich stehe gerade auf dem Schlauch: Wo finde ich diesen Baustein?

                        444a7fa9-934f-43eb-aad4-5b4acb21f867-image.png

                        (im deutschen Blockly)

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

                          @markus-7 im trigger block - da als ObjektID vordefiniert
                          673c1649-3118-40a1-9019-c2d689d48152-image.png

                          A.

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

                            @asgothian

                            🙏 Danke dir!

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

                              @markus-7 sagte: Dabei kommt es bei kleinen Wölkchen schon vor, dass der eingestellte Schwellwert in kurzer Zeit mehrmals unter- bzw. überschritten wird.

                              Wenn nicht auf jede kleine Wolke / Wolkenlücke reagiert werden soll, sollte die Ein-/Ausschaltdauer mind. 5 Minuten betragen. Vorschlag:

                              Blockly_temp.JPG

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

                                Danke euch erstmal vielmals @paul53 @Homoran @Asgothian für die Ideen und Vorschläge, ich teste jetzt die unterschiedlichen Möglichkeiten erstmal simuliert aus und melde mich dann, wie ich es letztendlich umgesetzt habe.

                                Und immer wieder schön, hier so eine hilfsbereite Community zu wissen 🤗

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

                                  Ich habe jetzt diese beiden Skripte getestet und beide funktionieren perfekt für meinen Anwendungsfall und sind somit gekauft 👍
                                  (Verzögerungen sind hier noch auf Testbetrieb eingestellt und werden für die Anwendung verlängert).

                                  5089bb35-a3f8-4b0e-b477-6f8f3d531dd6-image.png

                                  b22a3b2f-8b5a-4c32-acce-b76a0716a27b-image.png

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  816
                                  Online

                                  32.0k
                                  Users

                                  80.4k
                                  Topics

                                  1.3m
                                  Posts

                                  4
                                  15
                                  509
                                  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