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] Scripte die mehrfach auslösen und Objekte

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Scripte die mehrfach auslösen und Objekte

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

      Scripte die mehrfach auslösen und Objektaktualisierung

      Guten Abend zusammen,

      ich habe gleich mehrere Probleme mit selbstgebauten Blocky Scripten welche mehrfach auslösen.
      Ich bin kein Programmierer, daher würde ich mich über Hilfe freuen und vielleicht auch über die Erklärung was ich falsch gemacht habe. Ich würde mir das gern weiter beibringen und aus meinen Fehler lernen :-).
      Die beiden Scripte lösen die Telegram Nachrichten mehrfach aus. Das Anwesenheitsscript bringt mir die Telegram Nachricht im Schnitt 4x.
      Das Script an der SP111 weckte mich letzte Nacht bei über 900 Nachrichten in Unter einer Minute …

      SP111_11 Mehrfach Meldungen.png

      Anwesenheit Mehrfach.png

      Bei meinen Recherchen fiel mir nun auf das Teilweise die Objekte im IOBroker nicht Zeitnah aktualisiert werden. Am Beispiel der SP111_11 ist mir aufgefallen das Tasmota bereits 0 Watt meldet, in den Ereignissen beim IOBroker auch die Nachrichten mit der Meldung via MQTT eingehen. Das entsprechende Objekt aber weiterhin bei 25 Watt stand. Erst nach über einer Minute wurde das Objekt dann aktualisiert.

      Kann mir hier vielleicht jemand einen Tipp geben was hier falsch läuft?
      Lt HTOP auf dem RPi (Raspberry Pi 4 mit 4 GB) ist die CPU im Schnitt bei < 10% Auslastung auf allen Kernen und der RAM ist zu ca. 25% verwendet.

      Vielen Dank und viele Grüße
      Alex

      Asgothian 1 Reply Last reply Reply Quote 0
      • -Alex- 0
        -Alex- 0 last edited by

        ok, die lösen mehrfach aus.. sieht man, aber was willst Du denn eigentlich ursprünglich?
        ich verstehe die Verwendung und Zweck deiner mehreren Trigger nicht.
        Also beim ersten sagste,
        wenn Power Knopf an oder aus dann soll wenn Wert wahr(wo initialisiert?)
        wieder trigger hat sich power an/aus dann wenn wert keiner gelich 8 und vorheriger wert grösser 8
        dann ist sp11 abgeschaltet?
        das untere auch keine Ahnung warum denn zwei Trigger?
        für was?
        Schreibe bitte einfach was das Ergebnis sein soll, dann kann ich Dir sagen, wie das Blockly auszusehen hat.

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

          @Azrael
          Dinge die falsch sind:

          • trigger im trigger - das geht nie gut
          • timeout im trigger ohne Schutz vor mehrfachstart - der läuft öfter
          • trigger auf aktualisiert ohne und mit Bestätigung - auch die kommen meist zu oft.

          Ansonsten muss ich @Alex-0 zustimmen: beschreib mal was das tun soll, sonst wird das nichts.

          A.

          J 1 Reply Last reply Reply Quote 0
          • J
            Jan1 @Asgothian last edited by

            @Asgothian
            Eins hast noch vergessen😊
            Mit ner Funktion zu arbeiten macht nur Sinn, wenn man die auch mehrfach verwendet, ansonsten sorgt die nur für Unübersichtlichkeit und mehr unnötigen Code.

            1 Reply Last reply Reply Quote 0
            • A
              Azrael last edited by

              Hallo alle zusammen,

              vielen Dank soweit. Ich habe da glaube ich einen Denkfehler gehabt.
              Ich dachte ich muss erstmal die ganze Aufgabe Triggern bevor der Wert (8 Watt) geprüft wird.
              Daher dachte ich die Prüfung auf 8 Watt geschieht so nur wenn die Steckdose eingeschaltet ist.
              Die Funktion habe ich genommen um ggf. später mehrere Steckdosen für eine ähnliche Arbeitsweise in einem Script zusammen zu fassen.

              Ziel ist eigentlich einfach nur:

              Bild 1:
              Falls die Steckdose eingeschaltet und die Wattzahl unter 8 Watt liegt schalte die Steckdose ab.

              Bild 2:
              Sobald die Handy von meiner Freundin und mir länger wie 10 Minuten aus dem Haus sind schalte bestimmte Dinge ab. Hier ist das Telegram eben aktuell nur zum testen da.

              Gruß
              Alex

              1 Reply Last reply Reply Quote 0
              • -Alex- 0
                -Alex- 0 last edited by

                @Azrael
                ah ok, alles klar also zu block 1:
                einfach deine Objekte noch auswählen.

                Code:

                <block xmlns="http://www.w3.org/1999/xhtml" type="on_ext" id="?CTt[QE~-^5Fn*]Yk!|~" x="-212.2658705966163" y="-562">
                  <mutation items="1"></mutation>
                  <field name="CONDITION">ne</field>
                  <field name="ACK_CONDITION"></field>
                  <value name="OID0">
                    <shadow type="field_oid" id="x7vFLk_6+mb4wf7mL.bE">
                      <field name="oid">default</field>
                    </shadow>
                  </value>
                  <statement name="STATEMENT">
                    <block type="controls_if" id="Afv*=u{`+y;vW=Sws(GK">
                      <value name="IF0">
                        <block type="logic_operation" id="/IuvrhU0pYycG|dWeUxS" inline="false">
                          <field name="OP">AND</field>
                          <value name="A">
                            <block type="logic_compare" id="ogqHO/2?a^i`nW;E,6y-">
                              <field name="OP">EQ</field>
                              <value name="A">
                                <block type="get_value" id="EX{xdlEP!QAz2z`:^VQ?">
                                  <field name="ATTR">val</field>
                                  <field name="OID">ID auswählen</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="logic_boolean" id=":7wIbq!1*d8M-)s?U!o[">
                                  <field name="BOOL">TRUE</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <value name="B">
                            <block type="logic_compare" id=".AtOGM`mXZdoFOF`#[ct">
                              <field name="OP">LTE</field>
                              <value name="A">
                                <block type="get_value" id="0tHn-^4[dnb*`Dvtcdsf">
                                  <field name="ATTR">val</field>
                                  <field name="OID">ID auswählen</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="math_number" id="ZW`dXmtOKQYKm_2[3|VJ">
                                  <field name="NUM">8</field>
                                </block>
                              </value>
                            </block>
                          </value>
                        </block>
                      </value>
                      <statement name="DO0">
                        <block type="control" id="c_z0veHu=Q^KYZ^k)kA9">
                          <mutation delay_input="false"></mutation>
                          <field name="OID">Object ID</field>
                          <field name="WITH_DELAY">FALSE</field>
                          <value name="VALUE">
                            <block type="logic_boolean" id="bUQto8iNf8_qtGy4mx_C">
                              <field name="BOOL">FALSE</field>
                            </block>
                          </value>
                        </block>
                      </statement>
                    </block>
                  </statement>
                </block>
                
                

                7709d9b3-8012-428c-a526-7d0674c53d7f-image.png

                zu Block 2:

                hier mit einem Trigger arbeiten. Eigentlich müsste der erste Trigger ausreichen und dann deine Bedingung setzen.

                131b9f06-5ac2-4044-b611-70412c509129-image.png

                1 Reply Last reply Reply Quote 0
                • A
                  Azrael last edited by

                  @Alex-0

                  Danke Dir. Ich werd das mal entsprechend einbauen und testen.

                  Gruß
                  Alex

                  1 Reply Last reply Reply Quote 0
                  • A
                    Azrael last edited by

                    Hallo Zusammen,

                    wollte noch kurz Feedback geben.
                    Ich hatte das alles umgesetzt, und seither klappt es Prima.
                    Vielen Dank an alle!

                    VG

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    712
                    Online

                    32.0k
                    Users

                    80.4k
                    Topics

                    1.3m
                    Posts

                    blockly communication
                    4
                    8
                    634
                    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