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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • 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.
    • 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

                        474
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

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