Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Falls zwei Trigger Einfluss auf eine Veränderung haben

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    766

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Falls zwei Trigger Einfluss auf eine Veränderung haben

Geplant Angeheftet Gesperrt Verschoben Blockly
9 Beiträge 3 Kommentatoren 213 Aufrufe 2 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    Mika 0
    schrieb am zuletzt editiert von
    #1

    Hallo,
    ich verzweifle an folgendem Vorhaben:

    Anwesenheitserkennung steuert Rufumleitung.
    Es muss nur eine Person im Haus sein, dann steuere Rufumleitung mit false.
    Wenn keine Person im Haus, Rufumleitung auf true.

    So wie ich das gemacht habe, ändert sich das willkürlich wenn nur eine Person das Haus verlässt. Wie macht man es denn richtig?

    <xml xmlns="https://developers.google.com/blockly/xml">
      <block type="on_ext" id="uwYo(qUyXt`C3CiGYgO^" x="288" y="-238">
        <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
        <field name="CONDITION">ne</field>
        <field name="ACK_CONDITION"></field>
        <value name="OID0">
          <shadow type="field_oid" id=",TM4eFuuXv[JBKzFkB7d">
            <field name="oid">0_userdata.0.Personen.Daniel</field>
          </shadow>
        </value>
        <value name="OID1">
          <shadow type="field_oid" id="z[j6TS*xS31?aTjNK_UO">
            <field name="oid">0_userdata.0.Personen.Andreas</field>
          </shadow>
        </value>
        <statement name="STATEMENT">
          <block type="controls_if" id="E+@%Vrm!LPTo)GF=7[z;">
            <mutation elseif="1"></mutation>
            <value name="IF0">
              <block type="logic_compare" id="{LhHF{{pLJuAAZa(j~.t">
                <field name="OP">EQ</field>
                <value name="A">
                  <block type="on_source" id="uITXc{[JLLjZqt4;D/{[">
                    <field name="ATTR">state.val</field>
                  </block>
                </value>
                <value name="B">
                  <block type="logic_boolean" id=",SQA0:/p$h8+}#K/.oRK">
                    <field name="BOOL">TRUE</field>
                  </block>
                </value>
              </block>
            </value>
            <statement name="DO0">
              <block type="control" id="+??q,}3nUDZRPn;8{*|1">
                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                <field name="OID">tr-064.0.callForwarding.0</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="logic_boolean" id="c3MzTm~dkz[DHJKKE:mk">
                    <field name="BOOL">FALSE</field>
                  </block>
                </value>
              </block>
            </statement>
            <value name="IF1">
              <block type="logic_compare" id="#7cff:Fb;@[g_@$RhyS*">
                <field name="OP">EQ</field>
                <value name="A">
                  <block type="on_source" id="ye8i^#68k=x!fccp!dLO">
                    <field name="ATTR">state.val</field>
                  </block>
                </value>
                <value name="B">
                  <block type="logic_boolean" id="`.8qMYqtt%=nYnc*b%BJ">
                    <field name="BOOL">FALSE</field>
                  </block>
                </value>
              </block>
            </value>
            <statement name="DO1">
              <block type="control" id="07.u}DXs#ie4UOjg_K~z">
                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                <field name="OID">tr-064.0.callForwarding.0</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="logic_boolean" id="j:Gnw;NGLBqvczn`,(KQ">
                    <field name="BOOL">TRUE</field>
                  </block>
                </value>
              </block>
            </statement>
          </block>
        </statement>
      </block>
    </xml>
    

    dcb219a8-f7ea-4ea9-b8fd-c75ebd319516-image.png

    T paul53P 2 Antworten Letzte Antwort
    0
    • M Mika 0

      Hallo,
      ich verzweifle an folgendem Vorhaben:

      Anwesenheitserkennung steuert Rufumleitung.
      Es muss nur eine Person im Haus sein, dann steuere Rufumleitung mit false.
      Wenn keine Person im Haus, Rufumleitung auf true.

      So wie ich das gemacht habe, ändert sich das willkürlich wenn nur eine Person das Haus verlässt. Wie macht man es denn richtig?

      <xml xmlns="https://developers.google.com/blockly/xml">
        <block type="on_ext" id="uwYo(qUyXt`C3CiGYgO^" x="288" y="-238">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
          <field name="CONDITION">ne</field>
          <field name="ACK_CONDITION"></field>
          <value name="OID0">
            <shadow type="field_oid" id=",TM4eFuuXv[JBKzFkB7d">
              <field name="oid">0_userdata.0.Personen.Daniel</field>
            </shadow>
          </value>
          <value name="OID1">
            <shadow type="field_oid" id="z[j6TS*xS31?aTjNK_UO">
              <field name="oid">0_userdata.0.Personen.Andreas</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="controls_if" id="E+@%Vrm!LPTo)GF=7[z;">
              <mutation elseif="1"></mutation>
              <value name="IF0">
                <block type="logic_compare" id="{LhHF{{pLJuAAZa(j~.t">
                  <field name="OP">EQ</field>
                  <value name="A">
                    <block type="on_source" id="uITXc{[JLLjZqt4;D/{[">
                      <field name="ATTR">state.val</field>
                    </block>
                  </value>
                  <value name="B">
                    <block type="logic_boolean" id=",SQA0:/p$h8+}#K/.oRK">
                      <field name="BOOL">TRUE</field>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="control" id="+??q,}3nUDZRPn;8{*|1">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                  <field name="OID">tr-064.0.callForwarding.0</field>
                  <field name="WITH_DELAY">FALSE</field>
                  <value name="VALUE">
                    <block type="logic_boolean" id="c3MzTm~dkz[DHJKKE:mk">
                      <field name="BOOL">FALSE</field>
                    </block>
                  </value>
                </block>
              </statement>
              <value name="IF1">
                <block type="logic_compare" id="#7cff:Fb;@[g_@$RhyS*">
                  <field name="OP">EQ</field>
                  <value name="A">
                    <block type="on_source" id="ye8i^#68k=x!fccp!dLO">
                      <field name="ATTR">state.val</field>
                    </block>
                  </value>
                  <value name="B">
                    <block type="logic_boolean" id="`.8qMYqtt%=nYnc*b%BJ">
                      <field name="BOOL">FALSE</field>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO1">
                <block type="control" id="07.u}DXs#ie4UOjg_K~z">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                  <field name="OID">tr-064.0.callForwarding.0</field>
                  <field name="WITH_DELAY">FALSE</field>
                  <value name="VALUE">
                    <block type="logic_boolean" id="j:Gnw;NGLBqvczn`,(KQ">
                      <field name="BOOL">TRUE</field>
                    </block>
                  </value>
                </block>
              </statement>
            </block>
          </statement>
        </block>
      </xml>
      

      dcb219a8-f7ea-4ea9-b8fd-c75ebd319516-image.png

      T Nicht stören
      T Nicht stören
      ticaki
      schrieb am zuletzt editiert von ticaki
      #2

      Ist kein Blockly aber du musst ja nur die States anpassen:

      die oberen 4 0_userdata.0.Sensoren.Anwesenheit States auf deine Bedürfnisse anpassen und den Anyone erstellen, dann hast du einen State auf den du triggern kannst.

      const cAnyone = '0_userdata.0.Sensoren.Anwesenheit.Anyone'
      var someOne = [
          {atHome: false, id: '0_userdata.0.Sensoren.Anwesenheit.Sarah'},
          {atHome: false, id: '0_userdata.0.Sensoren.Anwesenheit.Tim'},// wenn du Gast löschst muß ach das komma hier weg
          {atHOme: false, id: '0_userdata.0.Sensoren.Anwesenheit.Gast'}
      ];
      
      var homeCount = 0;
      
      for (let a=0;a<someOne.length;a++) {
          someOne[a].atHome=getState(someOne[a].id).val;
      }
      
      function checkAnyone(obj) {
          homeCount = 0;
          for (var y = 0; y<someOne.length;y++){
              if (obj && obj.id == someOne[y].id) someOne[y].atHome=obj.state.val;
              if (someOne[y].atHome) homeCount++;
          }
          setState(cAnyone, homeCount > 0);
      }
      for (var x = 0; x<someOne.length;x++) {
          on({id:someOne[x].id, change:'ne'}, checkAnyone);
      }
      on({id:cAnyone, change:'any', ack:false}, function (obj){
          //setState('mqtt.1.display.show.Anwesenheit.value',homeCount);
          setState(cAnyone, obj.state.val, true);
      });
      checkAnyone(null);
      

      So wie das von Paul geht auch.

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      1 Antwort Letzte Antwort
      0
      • M Mika 0

        Hallo,
        ich verzweifle an folgendem Vorhaben:

        Anwesenheitserkennung steuert Rufumleitung.
        Es muss nur eine Person im Haus sein, dann steuere Rufumleitung mit false.
        Wenn keine Person im Haus, Rufumleitung auf true.

        So wie ich das gemacht habe, ändert sich das willkürlich wenn nur eine Person das Haus verlässt. Wie macht man es denn richtig?

        <xml xmlns="https://developers.google.com/blockly/xml">
          <block type="on_ext" id="uwYo(qUyXt`C3CiGYgO^" x="288" y="-238">
            <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
            <field name="CONDITION">ne</field>
            <field name="ACK_CONDITION"></field>
            <value name="OID0">
              <shadow type="field_oid" id=",TM4eFuuXv[JBKzFkB7d">
                <field name="oid">0_userdata.0.Personen.Daniel</field>
              </shadow>
            </value>
            <value name="OID1">
              <shadow type="field_oid" id="z[j6TS*xS31?aTjNK_UO">
                <field name="oid">0_userdata.0.Personen.Andreas</field>
              </shadow>
            </value>
            <statement name="STATEMENT">
              <block type="controls_if" id="E+@%Vrm!LPTo)GF=7[z;">
                <mutation elseif="1"></mutation>
                <value name="IF0">
                  <block type="logic_compare" id="{LhHF{{pLJuAAZa(j~.t">
                    <field name="OP">EQ</field>
                    <value name="A">
                      <block type="on_source" id="uITXc{[JLLjZqt4;D/{[">
                        <field name="ATTR">state.val</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="logic_boolean" id=",SQA0:/p$h8+}#K/.oRK">
                        <field name="BOOL">TRUE</field>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="control" id="+??q,}3nUDZRPn;8{*|1">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">tr-064.0.callForwarding.0</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="logic_boolean" id="c3MzTm~dkz[DHJKKE:mk">
                        <field name="BOOL">FALSE</field>
                      </block>
                    </value>
                  </block>
                </statement>
                <value name="IF1">
                  <block type="logic_compare" id="#7cff:Fb;@[g_@$RhyS*">
                    <field name="OP">EQ</field>
                    <value name="A">
                      <block type="on_source" id="ye8i^#68k=x!fccp!dLO">
                        <field name="ATTR">state.val</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="logic_boolean" id="`.8qMYqtt%=nYnc*b%BJ">
                        <field name="BOOL">FALSE</field>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO1">
                  <block type="control" id="07.u}DXs#ie4UOjg_K~z">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">tr-064.0.callForwarding.0</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="logic_boolean" id="j:Gnw;NGLBqvczn`,(KQ">
                        <field name="BOOL">TRUE</field>
                      </block>
                    </value>
                  </block>
                </statement>
              </block>
            </statement>
          </block>
        </xml>
        

        dcb219a8-f7ea-4ea9-b8fd-c75ebd319516-image.png

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #3

        @mika-0 sagte: Wenn keine Person im Haus, Rufumleitung auf true.

        Blockly_temp.JPG

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        T M 2 Antworten Letzte Antwort
        0
        • paul53P paul53

          @mika-0 sagte: Wenn keine Person im Haus, Rufumleitung auf true.

          Blockly_temp.JPG

          T Nicht stören
          T Nicht stören
          ticaki
          schrieb am zuletzt editiert von
          #4

          @paul53
          fehlt da nicht der delay? Wegen Falls Objekt und state.val != getState()

          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

          Spenden

          paul53P 1 Antwort Letzte Antwort
          0
          • T ticaki

            @paul53
            fehlt da nicht der delay? Wegen Falls Objekt und state.val != getState()

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #5

            @ticaki sagte: fehlt da nicht der delay?

            Was soll ein delay bewirken? Es ist lediglich eine Oderverknüpfung der beiden Anwesenheitswerte mit anschließender Negation.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            T 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @ticaki sagte: fehlt da nicht der delay?

              Was soll ein delay bewirken? Es ist lediglich eine Oderverknüpfung der beiden Anwesenheitswerte mit anschließender Negation.

              T Nicht stören
              T Nicht stören
              ticaki
              schrieb am zuletzt editiert von
              #6

              @paul53
              Das man, soweit mir bekannt, in einer on(x, y) Subscription nicht auf den Wert von x per getState() zugreifen soll, da getState().val != dp.state.val sein kann

              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

              Spenden

              paul53P 1 Antwort Letzte Antwort
              0
              • T ticaki

                @paul53
                Das man, soweit mir bekannt, in einer on(x, y) Subscription nicht auf den Wert von x per getState() zugreifen soll, da getState().val != dp.state.val sein kann

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #7

                @ticaki sagte: da getState().val != dp.state.val sein kann

                Das widerspricht meiner Erfahrung aus hunderten Beiträgen im Forum. Wenn auf Änderung getriggert wird, liefert auch getState(id).val den Wert, der zum Auslösen führte.
                Anders ausgedrückt: Die Callback-Funktion, die den Puffer der Javascript-Instanz mit dem Zustand aktualisiert, wird vor der Callback-Funktion im Skript ausgeführt.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                T 1 Antwort Letzte Antwort
                1
                • paul53P paul53

                  @ticaki sagte: da getState().val != dp.state.val sein kann

                  Das widerspricht meiner Erfahrung aus hunderten Beiträgen im Forum. Wenn auf Änderung getriggert wird, liefert auch getState(id).val den Wert, der zum Auslösen führte.
                  Anders ausgedrückt: Die Callback-Funktion, die den Puffer der Javascript-Instanz mit dem Zustand aktualisiert, wird vor der Callback-Funktion im Skript ausgeführt.

                  T Nicht stören
                  T Nicht stören
                  ticaki
                  schrieb am zuletzt editiert von ticaki
                  #8

                  @paul53 sagte in Falls zwei Trigger Einfluss auf eine Veränderung haben:

                  @ticaki sagte: da getState().val != dp.state.val sein kann

                  Das widerspricht meiner Erfahrung aus hunderten Beiträgen im Forum. Wenn auf Änderung getriggert wird, liefert auch getState(id).val den Wert, der zum Auslösen führte.
                  Anders ausgedrückt: Der Trigger, der den Puffer der Javascript-Instanz mit dem Zustand aktualisiert, erfolgt vor dem Trigger im Skript.

                  Ok, meine Informationen sind jetzt ca. 3 Jahre alt und ich mache es seit dem einfach nicht. Gut möglich dass das heute so ist. Oder der der es geschrieben hatte (mit nem developer tag) hat unsinn geschrieben

                  Edit: Test durchgeführt mit 100 Wertänderungen eines Adapters, jedesmal war state.val == getState(). Gut das ich gefragt habe und noch besser das du mir geantwortet hast. Danke wiedermal. :)

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @mika-0 sagte: Wenn keine Person im Haus, Rufumleitung auf true.

                    Blockly_temp.JPG

                    M Offline
                    M Offline
                    Mika 0
                    schrieb am zuletzt editiert von
                    #9

                    @paul53 Hi Paul, danke nochmals. funktioniert einfandfrei!

                    1 Antwort Letzte Antwort
                    0

                    Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                    Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                    Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                    Registrieren Anmelden
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    571

                    Online

                    32.8k

                    Benutzer

                    82.7k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Home
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe