Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Differenz zwischen zwei Zahlen

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Differenz zwischen zwei Zahlen

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      deta Most Active last edited by deta

      Hallo Folgendes Blocky erstellt.

      8a1534ee-cbae-45ab-ba72-93dd138e5e5b-grafik.png

      Die ersten beiden werden sauber ausgeführt und die richtigen Werte eingetragen.
      In der letzten Zeile soll die Differenz ausgerechnet werden. Obwohl in den beiden Feldern eine Zahl steht, wird nicht die Differenz errechnet.
      Wo liegt das Problem? Was hab ich da noch falsch gemacht?

      haselchen Asgothian 2 Replies Last reply Reply Quote 0
      • haselchen
        haselchen Most Active @deta last edited by

        @deta

        Hi und Guten Morgen ,
        korrigier mal bitte das Wort "Diverenz"
        im Titel und Text in "Differenz".
        Das findet sonst niemand in der Forensuche.

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

          @deta sagte in Differenz zwischen zwei Zahlen:

          Wo liegt das Problem? Was hab ich da noch falsch gemacht?

          Das Schlüsselwort ist asynchrone Abarbeitung.

          Auch wenn du die beiden DP direkt aktualisierst ist nicht sicher gestellt das die entsprechenden Werte bereits in der Objektdatenbank verfügbar sind wenn du den 3. DP aktualisierst.

          Korrekt ist:

          1. Lokale Variable "RegionOLvorgestern" anlegen, auf "wert von region_Oldenburg_lastDay_kompl" setzen.
          2. Lokale Variable "RegionOLgestern" anlegen, auf "wert von Amount of totally known cases" setzen
          3. Region_Oldenbiurg_beforeLastDay_comp mit RegionOLvorgestern aktualisieren
          4. Region_Oldenburg_lastDay_kompl" mit "RegionOLgestern" aktualisieren
          5. Region_Oldenburg_div_vortag mit "RegionOLvorgestern - RegionOLgestern" aktualisieren.

          Wenn das auch nicht geht muss noch geschaut werden ob die DP vom Typ "Numerisch" Sind. Wenn nein dann muss bei der Berechnung noch ein Screen Shot 2020-12-02 at 12.48.07 .png Block mit rein.

          A.

          D 1 Reply Last reply Reply Quote 0
          • D
            deta Most Active @Asgothian last edited by

            @Asgothian Ahm..
            Was ich sagen kann, das alle Datenfelder Zahl sind also Numerisch sind.
            Den Rest, versteh ich gerade nicht.
            So sehen die Felder aus:
            d258f9c1-6173-4daa-840c-4e16db6cd042-grafik.png
            Das Feld Differenz wird nur nicht gerechnet.

            haselchen Homoran Asgothian 3 Replies Last reply Reply Quote 0
            • haselchen
              haselchen Most Active @deta last edited by haselchen

              @deta

              Versuch mal im Blockly den Block STEUERE anstatt Aktualisiere.

              Wenn das noch nicht klappt , extrahiere mal den Differenz Block.
              Sprich, mach einen eigenen Block draus.

              a10d1458-d792-4dfd-84ad-814c088f592e-grafik.png

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

                @deta Wie sieht denn dein aktuelles Blockly vollständig aus?

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

                  @deta

                  Nochmal langsam.

                  Du machst, nacheinander:

                  setze Wert A auf Wert B
                  Setze Wert B auf Wert C
                  Setze Wert D auf Wert A - Wert B

                  Allerdings kann es sein das die Befehle Zeit brauchen, sprich der 3. Befehl wird ausgeführt bevor der 2. Befehl abgeschlossen ist.

                  Dann kommt in der Berechnung immer 0 heraus.

                  Deswegen macht es Sinn sich erst alle Werte zu holen, und dann alle Werte zu setzen:

                  Screen Shot 2020-12-02 at 17.59.51 .png

                  Natürlich musst di die korrekten Objekt ID;s auswählen, die hab ich nicht.

                  Das mit dem Timeout geht auch, ist aber nicht so gut. Es umgeht das eigentliche Problem des asynchronen setzen und holen von Werten.

                  Es ist durchaus sinnvoll in einem Skript das holen und schreiben von Werten voneinander zu trennen, insbesondere wenn ein Wert berücksichtgit werden soll nachdem er geschrieben wurde.

                  A.

                  Nachtrag: Um zu verstehen kannst du mal das folgende Skript laufen lassen (du musst natürlich einen geeigneten Datenpunkt anlegen und eintragen:

                  Screen Shot 2020-12-02 at 18.39.26 .png

                  Hinter dem Spoiler zum Import. Ist interessant.

                  <block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="NSs9tAzL,]qDbm!s{47o" x="137.6845703125" y="-187">
                    <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=")ri4[F:L*.A%:k|{|e1*">
                        <field name="oid">0_userdata.0.AsyncTest1</field>
                      </shadow>
                    </value>
                    <statement name="STATEMENT">
                      <block type="debug" id="?od46a0r4Uvv!,(:-7(^">
                        <field name="Severity">warn</field>
                        <value name="TEXT">
                          <shadow type="text">
                            <field name="TEXT">Loop </field>
                          </shadow>
                          <block type="text_join" id="RaM-{2uRxn37x-ZQSTYA">
                            <mutation items="2"></mutation>
                            <value name="ADD0">
                              <block type="text" id="DEvLG8*E2$SN.I3V)[,U">
                                <field name="TEXT">Trigger: </field>
                              </block>
                            </value>
                            <value name="ADD1">
                              <block type="on_source" id="h;7|yrCrS?5P,-D%tm6_">
                                <field name="ATTR">state.val</field>
                              </block>
                            </value>
                          </block>
                        </value>
                      </block>
                    </statement>
                  </block>
                  

                  D 2 Replies Last reply Reply Quote 0
                  • D
                    deta Most Active @Asgothian last edited by

                    @Asgothian Werde es später mal probieren!
                    Wichtig ist nur der Wert A ist bekannt, also Region_Oldenburg_lastDay_kompl ist bekannt.
                    Der Timer Tigger geht immer um 0 Uhr.
                    Soll um 0 Uhr den Wert von Region_Oldenburg_lastDay_kompl kopieren zu Region_Oldenburg_bevorlastDay_kompl.
                    So das man den Wert von Gestern und Vorgestern hat.
                    Der Wert Region_Oldenburg_lastDay_komplett ist ja jeden Tag anders.
                    Um jetzt zu sehen, was für eine Differenz von Vorgstern zu Gestern gewesen ist, soll der Wert dan den Wert Region_Oldenburg_div_vortag geschrieben werden. So man sehen, ob es weniger geworden sind oder mehr.
                    Das ist der Hintergedanke.

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

                      @deta

                      Die Idee ist schon gut, und sollte so auch funktionieren. Du fällst halt wegen der asynchronität auf die Nase.

                      1 Reply Last reply Reply Quote 0
                      • D
                        deta Most Active @Asgothian last edited by

                        @Asgothian Den Block finde ich nicht
                        d7490ff3-f21f-4703-9770-8ca605451e6f-grafik.png
                        Wo kommt der her? Wird denke in deutsch "setze xxx zu"

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

                          @deta

                          Aus dem Bereich "variablen". Hier musst du zunächst eine Variable definieren, und dann gibt es einen entsprechenden Baustein.

                          Auf Deutsch hab ich das leider nicht, aber zum Importieren (ist aber aus einem anderen Skript):

                          <block xmlns="https://developers.google.com/blockly/xml" type="variables_set" id="dbuf{[QT/[AC[X2IbpxA" x="163" y="713">
                            <field name="VAR" id="]ugPd]@N`!/,J-IXV(,g">LastTime</field>
                            <value name="VALUE">
                              <block type="time_get" id="M]5#*JOU)lUL8*`9[j90">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                <field name="OPTION">sid</field>
                              </block>
                            </value>
                          </block>
                          
                          D 2 Replies Last reply Reply Quote 0
                          • D
                            deta Most Active @Asgothian last edited by

                            @Asgothian hat erst mal alles geklappt. ob es funktioniert, werde ich morgen früh sehen.
                            Werde berichten.
                            Danke bis dahin

                            1 Reply Last reply Reply Quote 0
                            • D
                              deta Most Active @Asgothian last edited by deta

                              @Asgothian
                              Was mir gerade auffällt ist, jetzt wird der Wert Gestern ja noch auf Vorgstern kopiert.
                              Das fehlt doch noch oder?
                              NACHTRAG: Doch macht er... Mit dem steuere ....setzt er die Objekt Felder

                              28164017-1438-4c75-8e95-c3e001c3fb01-grafik.png

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

                                @deta
                                Der Exponent ^ ist der richtige Operator ?

                                D 1 Reply Last reply Reply Quote 0
                                • D
                                  deta Most Active @paul53 last edited by deta

                                  @paul53 sagte in Differenz zwischen zwei Zahlen:

                                  @deta
                                  Der Exponent ^ ist der richtige Operator ?

                                  Mh, es soll die Differenz der Beiden Tage ausgerechnet werden.
                                  Hab jetzt mal - eingetragen.

                                  Es kann ja höher oder weniger werden.

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  459
                                  Online

                                  31.6k
                                  Users

                                  79.5k
                                  Topics

                                  1.3m
                                  Posts

                                  5
                                  15
                                  1070
                                  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