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) Warten des Triggers auf anderes Objekt

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    (Gelöst) Warten des Triggers auf anderes Objekt

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

      Hallo zusammen,

      ich bin neu im IO-Broker und versuche nun meine Rolläden/Fenster-Kombinationen (Velux, angebunden über KLF200) ans Laufen zu kriegen. Dabei habe ich folgendes Problem:

      Fall ein Fenster öffnen Befehl kommt, soll er zuerst prüfen, ob der Rolladen weiter an 50% geöffnet ist. Denn sonst scheppert das Fenstern in den Rolladen hinein. Leider bekomme ich die Logik in Blocky nicht hin.
      d44f6201-9d37-4d65-8c1e-aac32b180091-image.png
      mit dieser Logik fährt er erst das Fenster durch und danach erst den Rolladen.

      Folgende Anlternative habe ich auch probiert:
      d08dba98-0058-46f1-9d8c-f451f5d0ebf9-image.png
      Aber dann geht das Script in die Todesschleife, weil sich die Änderungsbefehle gegenseitig triggern.

      Wie bekomme ich es also hin, das der eigentliche Trigger (targetPosition des Fensters) auf die Ausführung des Rolladenchecks und ggf. Korrektur wartet?

      Vielen Dank!

      Stefan


      Die Lösung war mit Blocky nicht zu erreichen, im JS über die richtigen Callbacks gar nicht so schwer.
      Die Schwierigkeit war lediglich, dass der Callback nicht beim Abschluss der physischen Aktion, sondern beim erfolgreichen Funktionsaufruf erfolgt. Daher habe ich die Statuswerte der KLF200 als eigentliche Bedingung für die fertige Bewegung des Rolladens verwendet. Hier mein finaler Code:

      /* Prüfe, ob Fenster weiter als bisher geöffnet werden soll*/
      on({ id: 'klf200.0.products.1.targetPosition'/*Position Fenster*/, change: "gt", ack: false }, async function (obj) {
          var valueFenster = obj.state.val;
          var oldValueFenster = obj.oldState.val;
          /* Prüfe, ob Rolle weiter als 50% geöffnet ist*/
          if (getState("klf200.0.products.0.currentPosition").val > 50) {
              /* Fenster anhalten */
              setState('klf200.0.products.1.stop'/*stop*/, true);
              /* Rolle auf 50% zurückfahren, dann kann das Fenster gefahrlos geöffnet werden */
              setState('klf200.0.products.0.targetPosition', 50, false, function () {
                  /* Callback: Trigger, wenn Rolloänderung fertig (Status 5) */
                  on({ id: 'klf200.0.products.0.state'/*state*/, val: 5, ack: true }, async function (obj) {
                      var valueRollo = obj.state.val;
                      var oldValueRollo = obj.oldState.val;
                      /* Wenn Trigger erfüllt, Fenster auf ursprünglich gewünste Position öffnen */
                      setState('klf200.0.products.1.targetPosition', valueFenster, false, function () {
                      /* Trigger auf Rolladenstatus abmelden*/
                      unsubscribe('klf200.0.products.0.state')
                      });
                  })
              })
          };
      });
      
      paul53 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @StefanS last edited by

        @StefanS
        Zuerst solltest Du den Datenpunkten eindeutige Namen geben, da so das Blockly nicht lesbar ist.

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

          @StefanS sagte:

          auf die Ausführung des Rolladenchecks und ggf. Korrektur wartet?

          Triggere zusätzlich auf die Ist-Position des Rollos. Vorschlag:

          Blockly_temp.JPG

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

          Support us

          ioBroker
          Community Adapters
          Donate

          762
          Online

          32.0k
          Users

          80.4k
          Topics

          1.3m
          Posts

          2
          3
          242
          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