Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Timer (Gelöst)

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Timer (Gelöst)

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

        Hardware + Revision/Jahr
         Proxmox Container auf Minisforum Mini-PC
        Modell AMD Opteron 23xx (Gen 3 Class Opteron)
        RAM 11.45 GB
      
         Software   
         js-controller: 4.0.24
         node.js: 16.20
         npm: 8.19.4
         linux: debian (buster)
      

      Hallo,
      Ich möchte über Blockly einen Timer programmieren bei dem 2 Geräte beteiligt sind die kurz hintereinander (im Abstand von 10sec) eingeschaltet werden (1 u. 10sec später 2) und in der umgekehrten Reihenfolge (2 u. 10sec später 1) ausgeschaltet werden.

      Die Schaltung funktioniert prinzipiell aber ich möchte es auf einen Zeitbereich eingrenzen (7:30 - 20:00)
      Leider schaltet das Script in der vorliegenden Form nicht nur bis 20:00 sondern bis 0:00.
      Heute früh 7:30 hat es dann nicht mehr geschaltet.
      Habe ich einen prinzipiellen Fehler im Verständnis der Logik der Zeitschaltung?
      Hier der Code:

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable type="timeout" id="timeout2">timeout2</variable>
          <variable type="interval" id="Intervall">Intervall</variable>
          <variable type="timeout" id="timeout">timeout</variable>
        </variables>
        <block type="comment" id="G6nRBEc^zS/s9ct)rggV" x="-438" y="-237">
          <field name="COMMENT">test gewächshausbewässerung</field>
          <next>
            <block type="comment" id="$H)JV_C;0SG!E=4(sF3k">
              <field name="COMMENT">Alle 15min - 3min lang Anfang 10sec versetzt</field>
              <next>
                <block type="comment" id="pb=Bz4)sA]{i4h2%FQ8*">
                  <field name="COMMENT">shelly3_1=pumpe --- shelly3_2=magnetventil</field>
                  <next>
                    <block type="controls_if" id="kLDXUw%]_)$a:B^.1Gr9">
                      <value name="IF0">
                        <block type="time_compare_ex" id="NSQCUt=Mq|RW8`HwZ?eU">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation>
                          <field name="USE_ACTUAL_TIME">TRUE</field>
                          <field name="OPTION">between</field>
                          <value name="START_TIME">
                            <shadow type="text" id="Y?a|Sdmbq2$6;S7Uv.WV">
                              <field name="TEXT">7:30</field>
                            </shadow>
                          </value>
                          <value name="END_TIME">
                            <shadow type="text" id="Nblgnu+Vy18GD_Pd6{MO">
                              <field name="TEXT">20:00</field>
                            </shadow>
                          </value>
                        </block>
                      </value>
                      <statement name="DO0">
                        <block type="controls_if" id="jduGaA(hQv#)H%!$)+`Q">
                          <value name="IF0">
                            <block type="logic_compare" id="Cs`~sO0:i^_=0M%N4m1c">
                              <field name="OP">EQ</field>
                              <value name="A">
                                <block type="get_value" id="c9DknPHn/*Cgso+8nj/f">
                                  <field name="ATTR">val</field>
                                  <field name="OID">shelly.0.SHSW-25#D8BFC01A6588#1.Relay0.Switch</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="math_number" id="rF%~6z`0_?R0SjDP?(%:">
                                  <field name="NUM">0</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <statement name="DO0">
                            <block type="timeouts_setinterval" id="trpw=Wz@}8x2/`0AGB^#">
                              <field name="NAME">Intervall</field>
                              <field name="INTERVAL">15</field>
                              <field name="UNIT">min</field>
                              <statement name="STATEMENT">
                                <block type="control" id="M9LaUIsTA4EQE]C+uM,l">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">shelly.0.SHSW-25#D8BFC01A6588#1.Relay0.Switch</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                    <block type="logic_boolean" id="i+(n?o.bc.B0z|%9)feT">
                                      <field name="BOOL">TRUE</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="control" id="bssz])u;c2M]k%V{h0FD">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">shelly.0.SHSW-25#D8BFC01A6588#1.Relay1.Switch</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">10</field>
                                      <field name="UNIT">sec</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE">
                                        <block type="logic_boolean" id="iNHW7V[}#N~yL,!sQegm">
                                          <field name="BOOL">TRUE</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="debug" id="~/JU`...F+f5?DO=DN_B">
                                          <field name="Severity">log</field>
                                          <value name="TEXT">
                                            <shadow type="text" id="-CQN5[w/8CP(qr|]l2IC">
                                              <field name="TEXT">***shelly3_1 u. shelly3_2 ein</field>
                                            </shadow>
                                          </value>
                                          <next>
                                            <block type="timeouts_settimeout" id="%?YX2J)iGt#;:Hg3@9!(">
                                              <field name="NAME">timeout</field>
                                              <field name="DELAY">3</field>
                                              <field name="UNIT">min</field>
                                              <statement name="STATEMENT">
                                                <block type="control" id="!kWA7,9GbEJIt_RNoX.K">
                                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                  <field name="OID">shelly.0.SHSW-25#D8BFC01A6588#1.Relay1.Switch</field>
                                                  <field name="WITH_DELAY">FALSE</field>
                                                  <value name="VALUE">
                                                    <block type="logic_boolean" id=";Xf0ekrtXoq%[QSZL:H{">
                                                      <field name="BOOL">FALSE</field>
                                                    </block>
                                                  </value>
                                                  <next>
                                                    <block type="control" id="*PsU5V|@Xr0Pa~FVoXl2">
                                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                      <field name="OID">shelly.0.SHSW-25#D8BFC01A6588#1.Relay0.Switch</field>
                                                      <field name="WITH_DELAY">TRUE</field>
                                                      <field name="DELAY_MS">10</field>
                                                      <field name="UNIT">sec</field>
                                                      <field name="CLEAR_RUNNING">FALSE</field>
                                                      <value name="VALUE">
                                                        <block type="logic_boolean" id="1*Nz~BF?/=.n,#$y1Ue.">
                                                          <field name="BOOL">FALSE</field>
                                                        </block>
                                                      </value>
                                                      <next>
                                                        <block type="debug" id="znGcbg3HDwMu[IST[/sg">
                                                          <field name="Severity">log</field>
                                                          <value name="TEXT">
                                                            <shadow type="text" id="AP;LP1c[rcHX;I$F=:BD">
                                                              <field name="TEXT">***shelly3_2 u. shelly3_1 aus</field>
                                                            </shadow>
                                                          </value>
                                                        </block>
                                                      </next>
                                                    </block>
                                                  </next>
                                                </block>
                                              </statement>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                            </block>
                          </statement>
                        </block>
                      </statement>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </next>
        </block>
        <block type="controls_if" id="[#yuEMitvp.=!`@Y*q#2" disabled="true" x="712" y="-288">
          <value name="IF0">
            <block type="time_compare" id="M(i4x-snE{2xS[1vhYh7">
              <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true"></mutation>
              <field name="OPTION">between</field>
              <field name="START_TIME">6:00</field>
              <field name="END_TIME">23:00</field>
            </block>
          </value>
        </block>
        <block type="control" id=",:Yh]o7z)YKq}[*V%t!." disabled="true" x="988" y="-212">
          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
          <field name="OID">sonoff.0.sonoffmini1.POWER</field>
          <field name="WITH_DELAY">FALSE</field>
          <value name="VALUE">
            <block type="logic_boolean" id="RTI?TA^8LNM.JlGoIM.C">
              <field name="BOOL">TRUE</field>
            </block>
          </value>
          <next>
            <block type="debug" id="Qbg{Y?fTHqY*ijwv8tFr" disabled="true">
              <field name="Severity">log</field>
              <value name="TEXT">
                <shadow type="text" id="0|4$`6c4Ry$,`BIM2slm">
                  <field name="TEXT">***sonoffmini1 ein</field>
                </shadow>
              </value>
              <next>
                <block type="timeouts_settimeout" id="TAtH0ckGP0CVw^HH/]v%" disabled="true">
                  <field name="NAME">timeout2</field>
                  <field name="DELAY">5</field>
                  <field name="UNIT">min</field>
                  <statement name="STATEMENT">
                    <block type="control" id="mQA?SO)[3D)z[ap{}jY-">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                      <field name="OID">sonoff.0.sonoffmini1.POWER</field>
                      <field name="WITH_DELAY">FALSE</field>
                      <value name="VALUE">
                        <block type="logic_boolean" id="8Jx[;jFWFMo?:u,9+WIz">
                          <field name="BOOL">FALSE</field>
                        </block>
                      </value>
                    </block>
                  </statement>
                </block>
              </next>
            </block>
          </next>
        </block>
      </xml>
      
      

      Ich wäre sehr dankbar für Tipps zur Lösung

      Gruß
      Torsten

      1 Reply Last reply Reply Quote 0
      • DJMarc75
        DJMarc75 last edited by

        @crepp1967 zeig mal ein Screen vom Blockly bitte. Kann man dann auch am Smartphone ansehen.

        crepp1967 1 Reply Last reply Reply Quote 0
        • crepp1967
          crepp1967 @DJMarc75 last edited by

          @djmarc75

          8e08e089-b5c4-41cc-ac70-d27b4595bd3e-image.png

          Blöd ist nur das die beiden beteiligten Geräte nur "switch" heissen...

          DJMarc75 1 Reply Last reply Reply Quote 0
          • DJMarc75
            DJMarc75 @crepp1967 last edited by

            @crepp1967
            Da fehlt ja der Trigger.
            Wann (durch was) soll den geschalten werden ?

            crepp1967 1 Reply Last reply Reply Quote 0
            • crepp1967
              crepp1967 @DJMarc75 last edited by

              @djmarc75
              Wenn switch = 0

              oder reicht das nicht als Trigger?

              DJMarc75 1 Reply Last reply Reply Quote 0
              • DJMarc75
                DJMarc75 @crepp1967 last edited by

                @crepp1967 Switch kann kein 0 sondern nur true oder false.

                Vorschlag:

                Screenshot 2023-05-11 081700.png

                crepp1967 1 Reply Last reply Reply Quote 0
                • crepp1967
                  crepp1967 @DJMarc75 last edited by

                  @djmarc75
                  Danke für Deinen Vorschlag, ist auf jeden Fall eine Überlegung wert die trigger mit und zu verknüpfen.

                  Mittlerweile habe ich gesehen das er eingeschaltet hat...
                  7:55 obwohl ab 7:30 im Trigger steht - ich kann mir das nicht erklären aber ich möchte es verstehen.
                  Hast Du eine Erklärung für den Zeitversatz???

                  DJMarc75 2 Replies Last reply Reply Quote 0
                  • DJMarc75
                    DJMarc75 @crepp1967 last edited by

                    @crepp1967 Wenn das in Deinem Skript ist dann sind 15 Minuten "Versatz" beim Starten des Skripts normal weil Intervall erst 15 Minuten später ausgeführt wird. Ich gehe davon aus dass Du um 7:40 Uhr das Skript neu gestartet hast.

                    Wie gesagt fehlt Deinem Skript jeglicher Trigger und wird als solches nie richtig laufen.

                    1 Reply Last reply Reply Quote 0
                    • DJMarc75
                      DJMarc75 @crepp1967 last edited by

                      @crepp1967 sagte in Timer:

                      die trigger mit und zu verknüpfen.

                      das sind keine Trigger sondern Abhängigkeiten 😉

                      crepp1967 2 Replies Last reply Reply Quote 0
                      • crepp1967
                        crepp1967 @DJMarc75 last edited by

                        @djmarc75
                        OK, danke für die Klarstellung.
                        Ich werde Deine Version einrichten u. das Thema so lang offen lassen.

                        Gruß
                        Torsten

                        1 Reply Last reply Reply Quote 0
                        • crepp1967
                          crepp1967 @DJMarc75 last edited by

                          @djmarc75
                          Noch eine letzte Frage:
                          wo finde ich diesen Baustein:
                          aca1d27c-8f7f-4f35-9e91-714460ca5afe-image.png
                          Eigentlich sollte der in Logik zu finden sein...

                          DJMarc75 1 Reply Last reply Reply Quote 0
                          • DJMarc75
                            DJMarc75 @crepp1967 last edited by

                            @crepp1967 ja, der UND Baustein... dort dann mit der rechten Maustaste draufklicken und externe Eingänge auswählen.

                            crepp1967 2 Replies Last reply Reply Quote 0
                            • crepp1967
                              crepp1967 @DJMarc75 last edited by

                              @djmarc75
                              eigentlich ganz einfach...
                              Ich war blind...

                              Danke!

                              1 Reply Last reply Reply Quote 0
                              • crepp1967
                                crepp1967 @DJMarc75 last edited by

                                @djmarc75

                                Läuft jetzt seit zwei Stunden auber durch...

                                3e91435f-17ff-4291-af9b-d13902eb08f4-image.png
                                Was ich noch nicht verstanden habe, das markierte heisst, der Schalter ist nicht true?

                                DJMarc75 Codierknecht 2 Replies Last reply Reply Quote 0
                                • DJMarc75
                                  DJMarc75 @crepp1967 last edited by

                                  @crepp1967 sagte in Timer:

                                  der Schalter ist nicht true?

                                  richtich 😉 Wenn der Switch auf false steht, dann...

                                  1 Reply Last reply Reply Quote 0
                                  • Codierknecht
                                    Codierknecht Developer Most Active @crepp1967 last edited by Codierknecht

                                    @crepp1967
                                    das Markierte heißt übersetzt:
                                    not false und könnte genau so gut als = true notiert werden. Kommt aufs Gleiche raus, spart aber einen Vergleich.

                                    Edit:
                                    Es wird quasi der "Kehrwert" vom Status des Shelly gebildet.
                                    Wenn der Shelly auf false steht, ergibt ein not Wert dann true.
                                    Die Verkürzung sieht man am besten im JS-Code.
                                    Ein

                                    if (!value)
                                    

                                    ist das Gleiche wie ein

                                    if (value == false)
                                    

                                    Ein Vergleich kostet etwas mehr Rechenzeit als ein einfaches Negieren.

                                    crepp1967 paul53 2 Replies Last reply Reply Quote 0
                                    • crepp1967
                                      crepp1967 @Codierknecht last edited by

                                      @codierknecht

                                      👍

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

                                        @codierknecht sagte: ist das Gleiche wie ein

                                        Nicht ganz.

                                        if (!value)
                                        

                                        ist auch erfüllt bei null, undefined und NaN. Deshalb bevorzuge ich es.

                                        Codierknecht 1 Reply Last reply Reply Quote 0
                                        • Codierknecht
                                          Codierknecht Developer Most Active @paul53 last edited by

                                          @paul53
                                          Jaja, immer diese Typunsicherheit. In typisierten Sprachen kann ein Bool halt nur true oder false sein. Ich bevorzuge es einfach nur wegen der kürzeren Notation und der Rechenzeit. Es gab mal Zeiten, da war sowas wichtig. Da hat aber ein gewisser Herr Gates auch noch gesagt "640 KB Hauptspeicher reichen für alle Ewigkeit" 😉

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          591
                                          Online

                                          32.0k
                                          Users

                                          80.5k
                                          Topics

                                          1.3m
                                          Posts

                                          4
                                          19
                                          466
                                          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