Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. (Gelöst) Warten des Triggers auf anderes Objekt

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    15
    1
    204

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

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

(Gelöst) Warten des Triggers auf anderes Objekt

Geplant Angeheftet Gesperrt Verschoben Blockly
3 Beiträge 2 Kommentatoren 309 Aufrufe 1 Watching
  • Ä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.
  • S Offline
    S Offline
    StefanS
    schrieb am zuletzt editiert von StefanS
    #1

    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')
                    });
                })
            })
        };
    });
    
    paul53P 2 Antworten Letzte Antwort
    0
    • S 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')
                      });
                  })
              })
          };
      });
      
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

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

      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

      1 Antwort Letzte Antwort
      0
      • S 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')
                        });
                    })
                })
            };
        });
        
        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #3

        @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

        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

        1 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        305

        Online

        32.7k

        Benutzer

        82.4k

        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