Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Anzahl Summe Liter

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Anzahl Summe Liter

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

      Hallo,

      habe 6 DP mit Liter , möchte das alle zusammengezählt werden und in einen DP geschrieben werden.
      Ventil 1-2 funktioniert aber.

      Das funktioniert so nicht? Wo habe ich da einen Fehler?

      Screenshot (3706).png

      Blockly:


      <block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="tZnz%8ds=VLfvvmP2oB@" x="13" y="-462">
      <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="|8jdYn7?BTl]q(:yE_[">
      <field name="oid">sprinklecontrol.0.sprinkle.Ventil_1.history.lastOn</field>
      </shadow>
      </value>
      <statement name="STATEMENT">
      <block type="update" id="2kb;^Jp+%|qX-h2OD~I
      ">
      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
      <field name="OID">0_userdata.0.Summe_Liter</field>
      <field name="WITH_DELAY">FALSE</field>
      <value name="VALUE">
      <block type="math_arithmetic" id="IM}~LQl!=g(kD](j^ZR~">
      <field name="OP">ADD</field>
      <value name="A">
      <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number" id="=%)X_Q9+tP{-tu_vYHq"> <field name="NUM">1</field> </shadow> <block type="get_value" id="]Gf8s#=Cgsw~[p[5B;T">
      <field name="ATTR">val</field>
      <field name="OID">sprinklecontrol.0.sprinkle.Ventil_1.history.curCalWeekConsumed</field>
      </block>
      </value>
      <value name="B">
      <shadow type="math_number" id="p?ZmI:^Nw:#RaXF~i!X;">
      <field name="NUM">1</field>
      </shadow>
      <block type="get_value" id="VIox?K!q[vPsRsT!}77^">
      <field name="ATTR">val</field>
      <field name="OID">sprinklecontrol.0.sprinkle.Ventil_2.history.curCalWeekConsumed</field>
      </block>
      </value>
      </block>
      </value>
      <next>
      <block type="update" id="1@7{yW_M,R+jYV1N:p">
      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
      <field name="OID">0_userdata.0.Summe_Liter</field>
      <field name="WITH_DELAY">FALSE</field>
      <value name="VALUE">
      <block type="math_arithmetic" id="9(.9CYea!+5jHUSiZx*"> <field name="OP">ADD</field> <value name="A"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="?/O/o#:yxZ97ZDA:iUo["> <field name="ATTR">val</field> <field name="OID">sprinklecontrol.0.sprinkle.Ventil_3.history.curCalWeekConsumed</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="[eHYyyj2@5lBbm4.#)=">
      <field name="ATTR">val</field>
      <field name="OID">sprinklecontrol.0.sprinkle.Ventil_4.history.curCalWeekConsumed</field>
      </block>
      </value>
      </block>
      </value>
      <next>
      <block type="update" id="oRqJOqMYFXYmoMdziOhF">
      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
      <field name="OID">0_userdata.0.Summe_Liter</field>
      <field name="WITH_DELAY">FALSE</field>
      <value name="VALUE">
      <block type="math_arithmetic" id="MM)(1Q6C2nQBv^AgD]p"> <field name="OP">ADD</field> <value name="A"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="j3|HJ}e3Vm3(-YtdAS!">
      <field name="ATTR">val</field>
      <field name="OID">sprinklecontrol.0.sprinkle.Ventil_5.history.curCalWeekConsumed</field>
      </block>
      </value>
      <value name="B">
      <shadow type="math_number">
      <field name="NUM">1</field>
      </shadow>
      <block type="get_value" id="Pny#z5!{o5}qt+=-K79u">
      <field name="ATTR">val</field>
      <field name="OID">sprinklecontrol.0.sprinkle.Ventil_6.history.curCalWeekConsumed</field>
      </block>
      </value>
      </block>
      </value>
      </block>
      </next>
      </block>
      </next>
      </block>
      </statement>
      </block>

      Homoran dslraser 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @sigi234 last edited by Homoran

        @sigi234 sagte in Anzahl Summe Liter:

        Das funktioniert so nicht?

        was genau?

        du arbeitest mit Datenpunkten, das läuft asynchron ab.
        die DPs (der DP) haben noch nicht die neuen Werte, wenn der zweite Befehl kommt

        Am besten mit variablen arbeiten und erst zum Schluss in den DP schreiben.

        1 Reply Last reply Reply Quote 0
        • dslraser
          dslraser Forum Testing Most Active @sigi234 last edited by

          @sigi234
          Oder vielleicht mit einer kleinen Verzögerung.
          Probier mal...

          Screenshot_20210429-135238_Chrome.jpg

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

            @dslraser sagte in Anzahl Summe Liter:

            Oder vielleicht mit einer kleinen Verzögerung.
            Probier mal...

            Sorry, aber dieses einbauen von kurzen Verzögerungen um aus der "async" Falle zu kommen ist nicht gut. Zum einen hängt die Frage ob / wie es geht davon ab wie schnell der Objektbaum prinzipiell arbeitet, zum anderen hast du dadurch auch andere Probleme.

            Insbesondere kann bei Deinem Beispiel das Ergebnis deutlich zu hoch ausfallen. Dazu kommt das du jedes mal wenn sich EIN wert Ändert alle 6 Werte einliest.

            das ist nicht gut.

            Beim Arbeiten mit Datenpunkten gilt meiner Meinung nach ganz hart:

            • Erst lesen
            • Dann Rechnen
            • Am Ende Schreiben.

            Auf dieses Beispiel gemünzt:
            Screenshot 2021-04-29 at 14.35.49.png

            Wichtig dabei: Der Baustein "state value" ist keine Variable sondern der Baustein im "Trigger" Bereich der mit "objekt ID" vorbelegt ist. Darin ist immer genau der Wert des DP der den Trigger ausgelöst hat.

            Wenn immer nur die Änderung gegenüber dem Vorwert hinzu addiert werden soll geht das auch einfach: (Auch hier ist der Baustein "previous value" der gleiche wie oben - nur statt "state value" auf "previous value" gesetzt. Dieser beinhaltet den Wert des auslösenden DP BEVOR die Änderung den Trigger ausgelöst hat.)
            Screenshot 2021-04-29 at 14.37.54.png

            dslraser 1 Reply Last reply Reply Quote 2
            • dslraser
              dslraser Forum Testing Most Active @Asgothian last edited by dslraser

              @asgothian
              Vielen Dank für die Erklärung.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              850
              Online

              32.0k
              Users

              80.5k
              Topics

              1.3m
              Posts

              blockly
              4
              5
              367
              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