Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Script in Blockly ausführen!

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Script in Blockly ausführen!

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @LaBamba last edited by

      @labamba sagte in Script in Blockly ausführen!:

      Wie kann ich ein script in Blockly ausführen lassen?

      ?????
      Die Frage verstehe ich nicht!

      Blockly generiert Skripte und bei richtiger Anlage laufen die

      1 Reply Last reply Reply Quote 0
      • I
        ITCrowd @LaBamba last edited by

        @labamba Meintest du so etwas?
        a389afcd-8094-4380-8984-fc624c4034d9-grafik.png
        44a45335-ec6c-4e72-8b15-3fd7b48fa053-grafik.png

        1 Reply Last reply Reply Quote 0
        • P
          perry last edited by

          Hallo @LaBamba

          wie schon liv-in-sky geschrieben hat einen eigenen Datenpunkt anlegen ... dann

          Skript_1) Trigger auf diesen Datenpunkt ... dieses Skript ändert dann (siehe Bild) evt. den DP deiner anderen Skripte
          .... javascript.0.scriptEnabled.1000-Skripte-aktiv-Geraete.1200-Licht.1210-Licht-EIN ... (Skript_2)
          oder
          ... javascript.0.scriptEnabled.1000-Skripte-aktiv-Geraete.1200-Licht.1220-Licht-AUS ... (Skript_3)

          Skript_2 + _3) ... beinhaltet dann deine weiteren Befehle (z.B.: Lichter EIN oder AUS)

          Skript_startet_skript.jpg

          Erklärung des Bildes:

          1. Trigger auf den Datenpunkt: "01-Licht_on" (...z.B.: nach Sonnenuntergang)
          2. sollte der WERT = true sein, dann wird das Skript_2 "1200-Licht.1210-Licht-EIN" auf WAHR gesetzt, also eingeschaltete
          3. nach einer Pause von 2 Minuten wird das Skript_2 wieder ausgeschaltet.
          4. wird dann der DP abends (bei mir 22:30) wieder auf WERT = false gesetzt wird das
            ... "javascript.0.scriptEnabled.1000-Skripte-aktiv-Geraete.1200-Licht.1220-Licht-AUS" (Skript_3)
            auf WAHR gesetzt, also eingeschaltet und nach 2 Minuten wieder ausgeschaltet

          Ich hoffe, die Beschreibung hilft die weiter
          cu perry

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

            @perry sagte in Script in Blockly ausführen!:

            javascript.0.scriptEnabled

            wollt ihr tatsächlich über scriptEnabled die Scripte "triggern"????

            liv-in-sky P 2 Replies Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @Homoran last edited by

              @homoran iiiiiich nicht - habe ich auch nicht beschrieben

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

                @homoran sagte in Script in Blockly ausführen!:

                wollt ihr tatsächlich über scriptEnabled die Scripte "triggern"????

                ok ... wenn nicht, dann sei die Frage erlaubt ... wie es anders geht ? oder warum nicht - was spricht dagegen ?

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

                  @perry sagte in Script in Blockly ausführen!:

                  oder warum nicht - was spricht dagegen ?

                  "Das macht man nicht" 😉
                  in javascript laufen die Skripts immer - sie werden nur nicht durchgehend ausgeführt.
                  Die Ausführung wird Event-basiert gesteuert, über den Trigger.

                  Wenn du schon mit einem eigenen Datenpunkt arbeitest, ist dieser wahrscheinlich der Trigger für alle drei Skripte
                  z.B. Skript A - wenn der DP auf true steht, und Skript B und C, wenn der DP auf false steht.

                  Also werden alle drei Skripte durch den DP getriggert (auf Änderung) Anschließend folgt der Logikteil:
                  FALLS Wert von Datenpunkt = wahr (bei den anderen beiden falsch) dann mache - und jeweils was zu tun ist

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

                    @homoran sagte in Script in Blockly ausführen!:

                    "Das macht man nicht"

                    Hallo homoran,

                    vielen Dank für deine Antwort. Sie zeigt mir aber auch, das es "technisch" gesehehen nicht falsch ist und darum ging es mir auch ersteinmal, zumal ich es in zwei Fällen bei mir eingesetz habe und es funkt einwandfrei.

                    @homoran sagte in Script in Blockly ausführen!:

                    Wenn du schon mit einem eigenen Datenpunkt arbeitest ...

                    hmmm ... nicht ganz ... nur in dem Skript_1 wird der DP gesetzt und hier enthalten ist auch der Trigger, der dann entweder TRUE (Skript_2) oder FALSE (Skript_3) startet und diese dann (siehe Bild) 2 min auf aktiv setzt. Als Beispiel: der DP wird mit Sonnenuntergang auf TRUE gesetzt (Lichter an, DP bleibt auf TRUE) und um 22:30 auf FALSE gesetzt (Lichter aus).

                    Problem:
                    Natürlich hast du Recht mit deiner Aussage "so etwas macht man nicht" mit der Betrachtungsweise, wenn man nur die Skripte_2 und _3 alleine betrachtet, das man nicht erkennen kann, wann .. von wem ... woher ... wodurch werden die beiden Skripte aufgerufen. Zumal, wenn keine vernünftige Dokumentation in den Skripten vorhanden ist und wenn in den Skripten auch noch TIMEOUTS vorhanden sind, die dann evt Probleme bereiten könnten (Skript wird auf inaktiv gesetzt und Timeout läuft noch)

                    Lösung_1:
                    Die beiden Skripte werden aktiv gesetzt und in beide kommt je ein Trigger auf den DP der eine auf TRUE und der andere auf FALSE ... dann wäre auch das Problem mit evt TIMEOUTS gelöst. (natürlich kann man auch beide Skripte zusammenlegen).

                    Lösung_2:
                    ... aus beiden Skripten wird je eine GLOBALE Funktion, die dann in dem Skript_1 zum Einsatz kommen würden.

                    Für die Lösung_2 bräuchte ich mal deine Hilfe. Ich kann leider keine zusammenhängende Erklärung für die
                    Ordner "common" und "global" finden ... funkt Blockly in den Ordnern ? oder nur Java ? (wenn Blockly in welcher Reihenfolge und wenn nur Java - warum) ... weiterhin fehlt mir in/für iobroker eine Beschreibung der Variablendefinition von "const", "let" und "var" ... Was muss in welcher Reihenfolge definiert werden ? Gibt es auch hier (habe leider nichts gefunden) eine zusammenhängende Erklärung ? Vielleicht hättest du ja für beide einen geeigneten Link für eine Wochenend(Corona)lektüre 😊

                    Vielen Danke für deine Hilfe
                    perry

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

                      @perry lösung 1 wäre wohl besser.

                      bei lösung zwei wird jedes script unter global in alle scripte (intern) kopiert
                      da könnte man dann evtl. bei variablen declaration ein problem bekommen - also vorsichtig damit

                      P 1 Reply Last reply Reply Quote 0
                      • P
                        perry @liv-in-sky last edited by

                        @liv-in-sky sagte in Script in Blockly ausführen!:

                        bei lösung zwei wird jedes script unter global in alle scripte (intern) kopiert

                        Hallo liv-in-sky,
                        vielen Dank für deine Antwort. Kann ich denn unter GLOBAL auch Blockly-Skripte speichern oder Blockly-Funktionen ? ... und ... Was für eine Rolle spielt in dem Zusammenhange der Ordner COMMON ?
                        cu perry

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

                          @perry

                          @perry

                          habe noch nie blockly unter global genutzt - aber auch noch nix gelesen, dass man das nicht machen soll

                          soweit ich mich erinnere wird auch die instanz neugestartet bei speicherung eines globalen scriptes - es muss ja für jedes script neu geladen werden

                          common ist sowas wie 0_userdata.0 bei den datenpunkten - eine art sammelordner - wüßte nicht, was da besonders dran wäre - ich habe da nur 3,4 uralt scripte drinliegen - nutze eigene ordnerstruktur - evtl hat ein anderer mehr info darüber

                          Homoran 1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @liv-in-sky last edited by

                            @liv-in-sky sagte in Script in Blockly ausführen!:

                            evtl hat ein anderer mehr info darüber

                            ist korrekt.
                            Der Ordner ist als "Kontrast" zu global gedacht.

                            Ich bin mir aber nicht sicher, ob @perry vollständig verstanden hat welche Gefahr die Verwendung des global-Verzeichnisses birgt.

                            liv-in-sky P 2 Replies Last reply Reply Quote 0
                            • liv-in-sky
                              liv-in-sky @Homoran last edited by

                              @homoran ich auch nicht - nutze das nur mit einer function um bestimmte fehler/log meldungen zu generieren und in jedem script zur verfügung zu haben

                              sonst lasse ich eigentlich die finger davon

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

                                @liv-in-sky sagte in Script in Blockly ausführen!:

                                habe noch nie blockly unter global genutzt - aber auch noch nix gelesen, dass man das nicht machen soll

                                @homoran sagte in Script in Blockly ausführen!:

                                Ich bin mir aber nicht sicher, ob @perry vollständig verstanden hat welche Gefahr die Verwendung des global-Verzeichnisses birgt.

                                Vielen Dank euch Beiden,

                                hat er nicht 😇 oder nur zum Teil ... COMMON ist klar ... GLOBAL leider nicht

                                Wenn ich im Forum von paul53 lese "... Blockly in GLOBAL funken nicht ...", dann ist die Aussage von ihm aber auch schon älterer Natur. In keinem Thread kommt die Diskussion mE nach am Ende auf den Punkt. Sicherlich ist die Entwicklung ja auch ständig weitergegangen und die aktuellen Probleme haben sicherlich immer Vorrang (herzlichen Danke an alle Entwickler und Mitwirkenden).

                                Auch die Vervollständigung des ioBoker-Handbuches hinkt sicherlich der Entwicklung weit hinterher. Dafür ist ja auch das Forum vorhanden, um diese Lücke zu schließen. Es wäre nach mM prima, wenn ein Insider oder Wissender einen Thread mal mit der Überschrift z.B.: GLOBALER ORDNER / GLOBALE FUNKTIONEN / GLOBALE VARIABLE ins Forum stellen würde, um hier zumindest für den jetzigen Entwicklungsstand eine klare Linie vorzugeben.

                                Also genug geschwafelt ... wenn ich ein Blockly in den Ordner GLOBAL speichere (sei es Variable oder Skripte) kann ich diese dann in den anderen Skripten (die nicht im Ordner GLOBAL liegen) nutzen ? ... wenn nein schade ... wenn ja bitte wie ?

                                cu perry

                                Homoran liv-in-sky 2 Replies Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @perry last edited by

                                  @perry sagte in Script in Blockly ausführen!:

                                  Blockly in GLOBAL funken nicht ...", dann ist die Aussage von ihm aber auch schon älterer Natur.

                                  ich habe es nie probiert.
                                  Aber da Blockly für Einsteiger gedacht ist kann es sein, dass die globalen Skripte für Blockly gesperrt sind, es kann aber auch ganz einfach sein, dass sie mit Blockly nicht funktionieren.

                                  @perry sagte in Script in Blockly ausführen!:

                                  Also genug geschwafelt ... wenn ich ein Blockly in den Ordner GLOBAL speichere (sei es Variable oder Skripte) kann ich diese dann in den anderen Skripten (die nicht im Ordner GLOBAL liegen) nutzen ?

                                  Das hat jetzt nichts mit Entwicklungsstand o.ä. zu tun!!

                                  Ein globales Skript wird immer vor jedem anderen Skript ausgeführt.

                                  Daher ist dieses Verzeichnis nur dann zu verwenden, wenn diese eben genannte Funktion auch gewünscht ist

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

                                    @perry wie @Homoran sagt

                                    wenn du in einem globalen script einen "falschen" trigger hast oder keinen trigger hast, wird das in jedem script ausgeführt - gleichzeitig - - das kann den iobroker schon lahmlegen

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

                                      @homoran sagte: dass die globalen Skripte für Blockly gesperrt sind, es kann aber auch ganz einfach sein, dass sie mit Blockly nicht funktionieren.

                                      Globale Funktionen können auch in Blockly aufgerufen werden, allerdings nur über den Umweg einer Javascript-Funktion, die einen anderen Bezeichner haben muss als die globale Funktion.

                                      P 1 Reply Last reply Reply Quote 1
                                      • P
                                        perry @paul53 last edited by

                                        @paul53 sagte in Script in Blockly ausführen!:

                                        Globale Funktionen können auch in Blockly aufgerufen werden, allerdings nur über den Umweg einer Javascript-Funktion, die einen anderen Bezeichner haben muss als die globale Funktion.

                                        Hallo paul53,
                                        wenn ich dich richtig verstanden habe, dann ist folgendes möglich:

                                        im ORDNER GLOBAL ...............................Java-Skript (nur Java / kein Blockly)........mit Funktion.....: gfunk_licht
                                        im ORDNER EGAL (nicht GLOBAL)......Blockly- oder Java-Skript.............................mit Funktion.....: lfunk_licht UND gfunk_licht

                                        das kann doch nicht so schwer sein 🤔 ... oder stehe ich immer noch neben mir 🤦‍♂️
                                        perry

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

                                          @perry sagte in Script in Blockly ausführen!:

                                          oder stehe ich immer noch neben mir

                                          du willst wirklich, dass dieses Skript in global jedesmal vor allen deinen anderen Skripten (jetzigen und zukünftigen!!) ausgeführt wird?

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

                                            @homoran sagte in Script in Blockly ausführen!:

                                            du willst wirklich, dass dieses Skript in global jedesmal vor allen deinen anderen Skripten (jetzigen und zukünftigen!!) ausgeführt wird?

                                            Hallo Homoran,
                                            das kann ich dir noch nicht abschließend versprechen 😁 ich möchte es ersteinmal zu 100 % verstehen, wie der Aufbau gemeint ist ... danke
                                            cu perry

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            909
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            40
                                            4354
                                            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