Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. eigene Funktion in Blockly

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    eigene Funktion in Blockly

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

      Hallo zusammen, hat von euch schon mal jemand eine eigene Funktion in Blockly erstellt?
      Ich möchte gerne meinen eigenen Funktionsbaustein erstellen welchen ich nur mit ein und Ausgangsvariablen parametriere und der Rest passiert dann in dem Baustein intern. Geht so etwas überhaupt?

      danke!

      Grüße

      M 1 Reply Last reply Reply Quote 0
      • M
        MCU @jan_xx last edited by

        @jan_xx Was soll die Funktion denn machen?
        0c381d61-528c-464e-8b1b-e8a77fe53cc1-image.png

        J 1 Reply Last reply Reply Quote 0
        • J
          jan_xx @MCU last edited by

          @mcu
          Ich würde gerne eine Funktion erstellen die ich von allen anderen Programmen aus nutzen kann.(Parametrierter Bausteinaufruf bei SPS z.B.) Als Eingang würde ich das Eingangsbit und die Zeiten mit übergeben und als Ausgangparameter den entsprechenden Schaltausgang bzw. Variable. Das ganze sollte dann irgendwie Global funktionieren. Anbei mal als Beispiel das Blockly was ich dann gerne als Funktion nutzen würde....
          blocklyeinaus.jpg

          paul53 Codierknecht 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @jan_xx last edited by

            @jan_xx sagte: die Zeiten mit übergeben

            Mit Timern funktioniert eine globale Blockly-Funktion nicht, da jeder aufrufende Prozess seine eigenen Timer benötigt.

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

              @paul53
              okay gibt es hier vielleicht eine andere Lösung?

              Ist es nicht irgendwie möglich den Zeitwert als Variable an den timeout zu übergeben?

              1 Reply Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @jan_xx last edited by

                @jan_xx sagte in eigene Funktion in Blockly:

                Ich würde gerne eine Funktion erstellen die ich von allen anderen Programmen aus nutzen kann

                Dazu muss man sich mal vergegenwärtigen, wie globale Funktionen funktionieren:
                Beim Start eines "normalen" (nicht globalen) Script wird der JS-Code sämtlicher globaler Scripte an den Anfang des zu startenden Script kopiert.

                Wenn man jetzt noch in Betracht zieht, dass:

                @paul53 sagte in eigene Funktion in Blockly:

                jeder aufrufende Prozess seine eigenen Timer benötigt

                ... wird schnell klar: Das wird ein nahezu aussichtloses Unterfangen.
                Beim Einsatz globaler Funktionen muss man eh schon höllisch aufpassen, was man da tut. Da noch mit Timeouts hantieren zu wollen, endet schnell in der Hölle.

                Ich will nicht ganz ausschließen, dass das technisch irgendwie zu lösen wäre.
                Aber Aufwand und Nutzen stehen dann wohl kaum in einem sinnvollen Verhältnis.
                Vielleicht können die Spezialisten ein paar Details zur technischen Möglichkeit liefern.

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

                  @codierknecht sagte in eigene Funktion in Blockly:

                  @jan_xx sagte in eigene Funktion in Blockly:

                  Ich würde gerne eine Funktion erstellen die ich von allen anderen Programmen aus nutzen kann

                  Dazu muss man sich mal vergegenwärtigen, wie globale Funktionen funktionieren:
                  Beim Start eines "normalen" (nicht globalen) Script wird der JS-Code sämtlicher globaler Scripte an den Anfang des zu startenden Script kopiert.

                  Wenn man jetzt noch in Betracht zieht, dass:

                  @paul53 sagte in eigene Funktion in Blockly:

                  jeder aufrufende Prozess seine eigenen Timer benötigt

                  ... wird schnell klar: Das wird ein nahezu aussichtloses Unterfangen.
                  Beim Einsatz globaler Funktionen muss man eh schon höllisch aufpassen, was man da tut. Da noch mit Timeouts hantieren zu wollen, endet schnell in der Hölle.

                  So einfach würde ich das nicht sehen. Prinzipiell ist es kein Problem wenn in einem globalen Skript nur Funktionen definiert werden, die aber nur etwas Machen wenn sie aufgerufen werden. Da kann man gerne auch mit Timern / Timeouts und so weiter hantieren - da sie im Kontext des aufrufenden Skriptes laufen ist alles sauber.

                  Wichtig ist halt das das globale Skript wirklich nur Funktionen (und ggf. Klassen) definiert und selber nichts macht.

                  Das ist in JS überhaupt kein problem. In Blockly sieht die Sache anders aus - da hast du im Editor keinen Zugriff auf irgendwelche 'Funktion' Blöcke für die im globalen Skript definierten Funktionen. Ob das trotzdem geht wage ich mal zu bezweifeln.

                  A.

                  paul53 1 Reply Last reply Reply Quote 1
                  • paul53
                    paul53 @Asgothian last edited by paul53

                    @asgothian sagte: auch mit Timern / Timeouts und so weiter hantieren - da sie im Kontext des aufrufenden Skriptes laufen ist alles sauber.

                    ... nur, wenn die Funktion im gleichen Skript nicht mehrmals aufgerufen wird.

                    @asgothian sagte in eigene Funktion in Blockly:

                    im Editor keinen Zugriff auf irgendwelche 'Funktion' Blöcke für die im globalen Skript definierten Funktionen. Ob das trotzdem geht wage ich mal zu bezweifeln.

                    Das geht über den Umweg eines JS-Funktions-Blockes, in dem wiederum die globale Funktion aufgerufen wird.

                    @asgothian sagte in eigene Funktion in Blockly:

                    kein Problem wenn in einem globalen Skript nur Funktionen definiert werden

                    ... aber keine Trigger!

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    587
                    Online

                    31.6k
                    Users

                    79.5k
                    Topics

                    1.3m
                    Posts

                    5
                    8
                    321
                    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