NEWS

Trigger mit Bedingung in Blockly


  • Hallo zusammen,

    ich bin noch blutiger Anfänger in Smart Home, mit der CCU3 und insb. mit ioBroker und Skripten.

    Nachdem ich mit Suchen nichts passendes gefunden habe, stelle ich meine aktuelle Frage hier direkt.

    Ein Blockly Skript fängt ja in der Regel wohl mit einem Trigger "Falls Objekt" an:
    15627_trigger01.png

    Ich möchte aber nur eine Aktion auslösen, wenn der Wert des Objektes (hier: Helligkeit) unter einem bestimmten Wert X ist. Also:
    15627_trigger03.png

    Mein Skript soll aber nur dann starten, wenn der Wert des Objektes sich geändert hat UND der Wert < X ist. Sonst, so meine Logik, läuft das Skript im Prinzip bei jeder Änderung und würde erst bei der nächsten if-Klausel wieder stoppen. Eigentlich unnötig, wie ich finde.

    Daher habe ich die Startbedingung wie folgt geändert:
    15627_trigger02.png

    Kann das so funktionieren, wie ich mir denke?

    Oder laufen beide Ansätze an sich identisch ab?


  • An Falls Objekt (Trigger) kann nur eine (oder mehrere) Datenpunkt-ID(s) übergeben werden. Der erste Ansatz (2. Bild) funktioniert, der zweite Ansatz nicht.

    Soll bei Unterschreitung des Grenzwertes bei jeder weiteren Änderung das Programm ausgeführt werden oder nur einmalig bei erstmaliger Unterschreitung ? Wenn nur einmalig, dann

    falls value < 200 und oldValue >= 200


  • Ok das ist schade.

    Aber wie komme ich denn an den oldValue?

    Die Auswahl gibt es bei mir nicht. Muss ich da mit Variablen arbeiten?


  • @buggybeast71:

    Aber wie komme ich denn an den oldValue? `
    oldValue ist so wie value eine vordefinierte <u>Variable</u>. Wenn Du den Javascript-Code Deines Blocklys ansiehst, wirst Du es feststellen.

      var value = obj.state.val;
      var oldValue = obj.oldState.val;
    
    

    Anstelle der Variablen value und oldValue kann man auch die Trigger-Datenpunkteigenschaften Wert und vorheriger Wert (unter Trigger) verwenden.


  • Danke Dir paul53 😄

    So müsste es jetzt dann gehen. Ich habe den Block "value" aus den Variablen dann ersetzt durch "Wert" und hinten die Bedingung mit "vorheriger Wert" gesetzt.

    15627_unbenannt.png

    Das macht für mich mehr Sinn, wenn man die Blöckchen aus den gleichen Blockbereichen verwendet 😉

Suggested Topics

  • 9
  • 17
  • 2
  • 3
  • 10
  • 2
  • 6
  • 9

765
Online

38.4k
Users

43.9k
Topics

613.2k
Posts