Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Hilfe! Wie kann ich mehrere datenpunkte in einem skript nur 1 mal triggern lassen?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Hilfe! Wie kann ich mehrere datenpunkte in einem skript nur 1 mal triggern lassen?

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

      ich habe ein blockly erstellt das mittels Bewegungsmelder getriggert wird. leider sind es 6 sensoren und ich möchte gerne das das skript nur 1 mal getriggert wird auch wenn mehrere bewegungsmelder auslösen. wie muss ich das realisieren? Gedacht ist es für eine Alarmanlage. Siehe Skript.
      Danke schon mal für eure Hilfe.!
      Vielleicht kann mir da jemand ein skript zusammenbasteln?Unbenannt.PNG

      Hier noch das Skript Skript.txt

      Asgothian 1 Reply Last reply Reply Quote 0
      • M
        mehrwiedu last edited by

        Ich bin mal mutig und gebe wieder, was ich hier gelernt habe. 😉
        Der Trigger gehört doch eigentlich nach außen und nicht hinter oder innerhalb eines Steuerbefehls.

        Und dann kannst Du doch die einzelnen Trigger voneinander abkoppeln, wenn das so gewünscht ist und für jeden einen einzelnen Block im Skript erstellen.

        D 1 Reply Last reply Reply Quote 0
        • D
          Daniel1103 @mehrwiedu last edited by

          @mehrwiedu hi. das ist gewollt so von mir da ich meine alarmanlage per vis einschalte und sie erst nach 30 sekunden aktiv werden soll. somit soll das triggern auch erst nach 30 sekunden funktionieren.

          M Homoran 2 Replies Last reply Reply Quote 0
          • M
            mehrwiedu @Daniel1103 last edited by mehrwiedu

            @Daniel1103 sagte in Hilfe! Wie kann ich mehrere datenpunkte in einem skript nur 1 mal triggern lassen?:

            @mehrwiedu hi. das ist gewollt so von mir da ich meine alarmanlage per vis einschalte und sie erst nach 30 sekunden aktiv werden soll. somit soll das triggern auch erst nach 30 sekunden funktionieren.

            Und das funktioniert so bei Dir, bzw. macht man so?
            Ich hatte eher gedacht, dass man mittels VIS einen erstellten Datenpunkt in Javascript.0 (z. B. Alarmanlage) ändert und darauf triggert und dann alles weitere dahinter erst mit Verzögerung und in Abhängigkeit von Bewegungen steuert.

            Bin jetzt nicht an meiner Instanz, aber in etwa so:

            Falls Objekt "Javascript.0.Alarmanlage" wurde geändert

            • Falls Wert von "Alarmanlage" = true,
              mache......
            1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @Daniel1103 last edited by

              @Daniel1103 sagte in Hilfe! Wie kann ich mehrere datenpunkte in einem skript nur 1 mal triggern lassen?:

              somit soll das triggern auch erst nach 30 sekunden funktionieren.

              Das funktioniert aber nicht!
              Alles was außerhalb eines Triggers ist wird nur einmal bei Skriptstart ausgeführt

              thewhobox 1 Reply Last reply Reply Quote 0
              • thewhobox
                thewhobox @Homoran last edited by

                @Homoran Wenn er per Vis aber das Skript starte und stoppt (= Alarmanlage an/aus) dann sollte es doch funktioniern oder?
                Da Alarmanlage an ist gleich Skript starten.

                M Homoran 2 Replies Last reply Reply Quote 0
                • M
                  mehrwiedu @thewhobox last edited by

                  @thewhobox sagte in Hilfe! Wie kann ich mehrere datenpunkte in einem skript nur 1 mal triggern lassen?:

                  @Homoran Wenn er per Vis aber das Skript starte und stoppt (= Alarmanlage an/aus) dann sollte es doch funktioniern oder?
                  Da Alarmanlage an ist gleich Skript starten.

                  Das Skript läuft doch permanent und zumindest im obigen Blockly wird außerhalb des Triggers nur ein speak Command an Alexa gesendet.
                  Wie genau ist denn dann der Button in VIS mit diesem Skript verklöppelt?

                  thewhobox 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @thewhobox last edited by

                    @thewhobox
                    er wird doch nicht....

                    mit script enabled arbeiten???

                    1 Reply Last reply Reply Quote 0
                    • thewhobox
                      thewhobox @mehrwiedu last edited by thewhobox

                      @mehrwiedu Wenn es permanent läuft dann funktioniert es nicht.

                      Ich würde es lieber anders lösen, als das Skript zu starten/stoppen.

                      Ich würde ein Trigger nehmen der die Variable:

                      • wenn true: "isAlarmOn" mit einem Timeout von 30s auf true setzt
                      • wenn false: "isAlarmOn" ohne Timeout auf false setzt
                        Und im Trigger der Bewegungsmelder fragst du dann ab "if isAlarmOn = true".

                      Edit: @Homoran Ich hoffe nicht, aber es war meine erste vermutung.

                      Homoran M 2 Replies Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @thewhobox last edited by

                        @thewhobox
                        Meine auch 😉

                        aber das wollte ich erst von ihm hören

                        1 Reply Last reply Reply Quote 0
                        • M
                          mehrwiedu @thewhobox last edited by

                          @thewhobox sagte in Hilfe! Wie kann ich mehrere datenpunkte in einem skript nur 1 mal triggern lassen?:

                          Edit: @Homoran Ich hoffe nicht, aber es war meine erste vermutung.

                          @Homoran sagte in Hilfe! Wie kann ich mehrere datenpunkte in einem skript nur 1 mal triggern lassen?:

                          @thewhobox
                          er wird doch nicht....

                          mit script enabled arbeiten???

                          Lasst mich bitte mitlernen. Was wäre an "script enabled" böse?

                          Homoran 1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @mehrwiedu last edited by

                            @mehrwiedu
                            https://forum.iobroker.net/topic/20846/über-scriptenabled-triggern-verboten-aber-wie-richtig

                            M 1 Reply Last reply Reply Quote 0
                            • M
                              mehrwiedu @Homoran last edited by mehrwiedu

                              @Homoran sagte in Hilfe! Wie kann ich mehrere datenpunkte in einem skript nur 1 mal triggern lassen?:

                              @mehrwiedu
                              https://forum.iobroker.net/topic/20846/über-scriptenabled-triggern-verboten-aber-wie-richtig

                              Ja, das habe ich gelesen, wurde nur nicht in meinem Verständnis befriedigt, warum es verboten sein soll.
                              Es ist aus meiner Sicht, so wie sich das in dem Thread darstellt keine probate und eventuell auch in der Instanz eine Fehler auslösende Lösung, aber dennoch durchführbar. Deswegen auch nicht zu empfehlen und auch ungerne gesehen bei der Problembehandlung und Lösungssuche hier im Forum.
                              Aber verboten impliziert bei mir mehr als unerwünscht und mit gravierenden Folgen für z. B. nicht nur die eigene Instanz, sondern eventuell auch für die Cloud (also mit Auswirkung auf den Betreiber). Ist das so?
                              Wenn ja, warum nimmt man die reine Möglichkeit dann nicht raus?

                              Und das ist auch ohne Bezug auf mein Verständnis gefragt, denn mir erschließt sich tatsächlich keine Sinnhaftigkeit dahinter, ein Skript darüber bewusst zu stoppen und wieder zu starten, denn die logische Möglichkeit ein Skript ausführen zu lassen, ergibt sich durch Datenpunkte im Skript, auf die getriggert wird.

                              Homoran 1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @mehrwiedu last edited by

                                @mehrwiedu sagte in Hilfe! Wie kann ich mehrere datenpunkte in einem skript nur 1 mal triggern lassen?:

                                Wenn ja, warum nimmt man die reine Möglichkeit dann nicht raus?

                                Der Punkt ist nur für den Admin, deswegen auch nur im Expertenmodus sichtbar
                                Man müsste es vielleicht RO machen.
                                Andererseits weiß ich nicht ob der Datenpunkt nicht direkt mit dem Start/Pause Icon gekoppelt ist

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

                                  @Daniel1103
                                  Also.. ein Script in Blockly zusammenbauen kann ich dir leider nicht. Ich würde das über eine Scriptverkettung in JS lösen. Das geht wahrscheinlich irgendwie auch als Blockly, nur das kann ich noch weniger gut hier schreiben. Durch die Aufspaltung in kleinere Funktionseinheiten wird es besser skalierbare und einfacher zu handeln.

                                  Mein Aufbau sähe so aus:

                                  var timeout = null;
                                  var script_active = false;
                                  var activationDelay = 100;
                                  
                                  
                                  on ({id:'datenpunkt_aktivierung_durch_vis', change:'ne'}, function() { 
                                      if (obj.newState.val) { setTimeout(function() { script_active = true; },activationDelay); } 
                                     else script_active=false; });
                                  
                                  function Activate() {
                                    if (timeout == null && script_active) {
                                      timeout = setTimeout(function() { timeout = null; }, 100);
                                    // Hier deine Aktion machen
                                    }
                                  }
                                  
                                  on ({ id: 'datenpunkt_sensor_1', change: 'gt'} Activate);
                                  on ({ id: 'datenpunkt_sensor_2', change: 'gt'}, Activate);
                                  ...
                                  on ({ id: 'datenpunkt_sensor_N', change: 'gt'}, Activate);
                                  

                                  dazu noch ein paar Warnhinweise

                                  • ich bin im Büro, kann die Syntax also nicht checken - es können Tippfehler drin sein
                                  • die Variable ActivationDelay gibt an wieviel zeit zwischen Aktivierung im Vis und Scharf gehen vergeht.
                                  • Die Datenpunkte musst du natürlich korrekt setzen, ich kenne deine Objektstruktur nicht.
                                  • Du brauchst für jeden Sensor den du überwachen willst ein "on" statement
                                  • Durch das "change:'gt'" triggert der "on" Befehl nur auf Änderungen von false auf true, nicht umgekehrt
                                  • Durch das "change:'ne" triggert der erste "on" Befehl nur auf Änderungen, nicht auf Aktualisierungen des Status
                                  • Was du bei // Hier deine Aktion machen rein kopieren musst kannst Du dir aus dem Quelltext des Blocklys das du oben hast heraus kopieren. Ich kenne die Syntax für Pushover leider nicht.

                                  Ich hoffe das Gibt Dir ein paar Hinweise.

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  870
                                  Online

                                  32.0k
                                  Users

                                  80.4k
                                  Topics

                                  1.3m
                                  Posts

                                  blockly javascript security
                                  5
                                  15
                                  820
                                  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