Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Script durch Button starten

    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

    Script durch Button starten

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

      Hallo,

      ich möchte mittels Button in Vis ein Java/ Blocklysctipt aktivieren bzw. deaktivieren. Ist so etwas möglich?

      Ich habe in iobroker unter Javascript0 ein neuen Datenpunkt als Zahl angelegt. Dort werden durch Buttons die ich in Vis bestätige Zahlen 1-3 als Wert gesetzt (1 = Script eins aktivieren usw.).
      Deshalb habe ich ein weiteres Blocklysctipt geschrieben welches die Werte ausliest und das entsprechende Script unter javascript0.scriptEnabled.[Name] auf true bzw. false setzt.

      Leider interessiert es iobroker nicht ob da nun true oder false drinsteht und wird ignoriert 😞 Nachdem ich erst das Script händisch aktiviere (Playknopf), wird es ausgeführt.

      Muss ich noch wo anders irgendwo was ändern?

      Freue mich auf eure Unterstützung.

      Grüße
      Philipp

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

        @PCGamer1988 sagte in Script durch Button starten:

        Deshalb habe ich ein weiteres Blocklysctipt geschrieben welches die Werte ausliest und das entsprechende Script unter javascript0.scriptEnabled.[Name] auf true bzw. false setzt.

        Wenn du im Forum mal nach diesen Datenpunkten suchst wirst du feststellen das es keine gute Idee ist, diese zum dynamischen Aktivieren von Skripten zu nutzen.

        Besser ist es, im betroffenen Script zu schauen wie dein Datenpunkt gesetzt ist und basierend darauf die eigentliche Aktion des Skriptes durchzuführen.

        A.

        liv-in-sky 1 Reply Last reply Reply Quote 1
        • liv-in-sky
          liv-in-sky @Asgothian last edited by

          @Asgothian
          @PCGamer1988
          kann mich nur anschliessen - ich mußte viele scripts ändern, nachdem ich von den profis darauf hingewiesen worden bin , doch über einen datenpunkt zu steuern/triggern

          zusätzlich wurde bei mir bei jedem script-start, welches ich programmierte, im admin (script-tab) eine art refresh gemacht - also während ich etwas programmierte hat hat der admin den focus verloren - da irgendein script gestartet wurde und beendet wurde

          paul53 1 Reply Last reply Reply Quote 1
          • paul53
            paul53 @liv-in-sky last edited by paul53

            @liv-in-sky sagte:

            im admin (script-tab) eine art refresh gemacht

            Bei jedem Scriptstart wird das Script compiliert. Unnötige Scriptstarts sind daher nicht gerade Resourcen schonend.

            @PCGamer1988
            Packe den kompletten Inhalt des bisherigen Skripts in eine Funktion und starte die Funktion über einen Trigger auf den VisDatenpunkt.

            function script1() {
               Hier das bisherige Skript rein
            }
            
            on({id: 'javascript.0.VisDatenpunkt', val: 1}, script1); // Triggert auf Wert 1
            
            1 Reply Last reply Reply Quote 1
            • P
              PCGamer1988 last edited by

              Danke für die Antworten.
              Ich werde da mal meine Scripte anpassen

              P 1 Reply Last reply Reply Quote 0
              • P
                PCGamer1988 @PCGamer1988 last edited by

                Kann man das auch mit Blockly bewerkstelligen? Ich habe mein komplettes Script in einer Funktion gepackt.
                Zusätzlich habe ich ein Trigger der ausgeführt wird falls sich das Objekt ändert. In Trigger prüfe ich ob es den Wert 1 hat und führt wenn es zutrifft die Funktion aus. Leider wird die Funktion auch ausgeführt, wenn sich der Wert von 1 auf 2 geändert hat. Gibt es noch ein passerden Trigger?
                Mein Script in der Funktion enthält auch verschiedene Trigger, funktionieren Trigger in einer Funktion?
                Zum Testen habe ich mal ein Trigger in der Funktion erstellt, wo eine Lampe umgeschalten wird wenn ein Objekt geändert wurde. Zwar geht das, aber die Lampe wird min. 3mal hintereinander geschalten als ob die Funktion mehrfach ausgeführt wird 😞

                Was habe ich falsch gemacht?

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

                  @PCGamer1988 sagte:

                  Mein Script in der Funktion enthält auch verschiedene Trigger, funktionieren Trigger in einer Funktion?

                  Nein, in der Regel nicht.

                  @PCGamer1988 sagte in Script durch Button starten:

                  In Trigger prüfe ich ob es den Wert 1 hat und führt wenn es zutrifft die Funktion aus. Leider wird die Funktion auch ausgeführt, wenn sich der Wert von 1 auf 2 geändert hat. Gibt es noch ein passerden Trigger?

                  on({id: 'javascript.0.VisDatenpunkt', change: 'ne', val: 1}, script1); // Triggert auf Wert 1
                  
                  1 Reply Last reply Reply Quote 0
                  • P
                    PCGamer1988 last edited by

                    Kann man ein eigenen Trigger in Blockly definieren? Ich habe mein Script in Blockly geschrieben und nicht in puren JS. Wenn Trigger aber in Funktionen nicht möglich sind, kann ich es für mich leider nicht so umsetzen 😞
                    Gibt es noch eine andere Möglichkeit?

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

                      @PCGamer1988:

                      Gibt es noch eine andere Möglichkeit?

                      Ja, wenn auf bestimmte Ereignisse getriggert werden soll, aber nur bei Freigabe durch einen Datenpunkt eine Aktion ausgelöst werden soll, kann man diesen Freigabe-Datenpunkt in jedem Trigger als erstes abfragen.

                      Blockly_temp.JPG

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      475
                      Online

                      31.9k
                      Users

                      80.1k
                      Topics

                      1.3m
                      Posts

                      vis
                      4
                      9
                      5247
                      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