Weiter zum Inhalt
  • Home
  • Aktuell
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. eigene Funktion in Blockly (widerkehrende Funktion)

NEWS

  • Neue Adresse: die ioBroker-Webseite liegt jetzt auf iobroker.com
    BluefoxB
    Bluefox
    3
    1
    114

  • Die neue ioBroker Webseite ist online!
    BluefoxB
    Bluefox
    10
    1
    159

  • Information zum Kontoabgleich und zur Namensänderung
    BluefoxB
    Bluefox
    11
    1
    463

eigene Funktion in Blockly (widerkehrende Funktion)

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
19 Beiträge 6 Kommentatoren 267 Aufrufe 5 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • paul53P paul53

    @mike2712 [sagte]: Ein Script in Blockly zu erstellen und dann in JS zu kopieren

    Man kann globale Funktionen auch mit Blockly erstellen. Das Problem ist der Aufruf von globalen Funktionen aus einem Blockly, denn es werden nur Funktionsaufrufe für im gleichen Skript erstellte Funktionen angeboten. Deshalb ist der Umweg über eine Javascript-Funktion erforderlich, wobei die Bezeichner der Funktionen (global / lokal) unterschiedlich sein müssen.

    M
    M
    mike2712
    schrieb am zuletzt editiert von
    #10

    @paul53 sagte:

    @mike2712 [sagte]: Ein Script in Blockly zu erstellen und dann in JS zu kopieren

    Man kann globale Funktionen auch mit Blockly erstellen. Das Problem ist der Aufruf von globalen Funktionen aus einem Blockly, denn es werden nur Funktionsaufrufe für im gleichen Skript erstellte Funktionen angeboten. Deshalb ist der Umweg über eine Javascript-Funktion erforderlich, wobei die Bezeichner der Funktionen (global / lokal) unterschiedlich sein müssen.

    ich kapier es nicht, ich bekomme kein globales Script irgendwo in einem lokalen eingebunden

    ioBroker im Docker auf Qnap TS-453A 16GB Ram 4-Bay

    1 Antwort Letzte Antwort
    0
    • M mike2712

      @geschild sagte:

      Ich habe mal "globale funktion in blockly" gegoogelt und folgende Antwort bekommen.

      Habe einiges gegoogelt und hier im Forum gelesen, ich bekomme es einfach in Blockly nicht hin, obwohl es ziemlich sicher gehen müsste.

      image.jpeg

      image.jpeg

      Sobald ich es einmal zuklappe....sind die anderen beiden Parameter verloren

      image.jpeg

      paul53P
      paul53P
      paul53
      schrieb am zuletzt editiert von paul53
      #11

      @mike2712 [sagte]: Sobald ich es einmal zuklappe....sind die anderen beiden Parameter verloren

      Du hast offenbar einen Fehler in den Javascript-Funktionen in der aktuellen Version (10.1.3) des JS-Adapters entdeckt, denn mir gelingt es auch nicht, mehrere Parameter zu übergeben.
      Die Javascript-Blöcke spinnen total.

      EDIT: In Version 10.2.3 (Beta) funktionieren die Javascript-Funktionen wieder.

      Globales Skript:

      Blockly_temp.JPG

      Lokales Blockly:

      Blockly_temp.JPG

      Javascript-Funktion:

      g_AlexaAnsage(x, y, z);
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: Asus PN42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

      CodierknechtC M 2 Antworten Letzte Antwort
      0
      • paul53P paul53

        @mike2712 [sagte]: Sobald ich es einmal zuklappe....sind die anderen beiden Parameter verloren

        Du hast offenbar einen Fehler in den Javascript-Funktionen in der aktuellen Version (10.1.3) des JS-Adapters entdeckt, denn mir gelingt es auch nicht, mehrere Parameter zu übergeben.
        Die Javascript-Blöcke spinnen total.

        EDIT: In Version 10.2.3 (Beta) funktionieren die Javascript-Funktionen wieder.

        Globales Skript:

        Blockly_temp.JPG

        Lokales Blockly:

        Blockly_temp.JPG

        Javascript-Funktion:

        g_AlexaAnsage(x, y, z);
        
        CodierknechtC
        CodierknechtC
        Codierknecht
        Developer Most Active
        schrieb am zuletzt editiert von
        #12

        @paul53 sagte:

        In Version 10.2.3 (Beta) funktionieren die Javascript-Funktionen wieder.

        Ich hab's mit der 10.2.0 getestet. Funktioniert ebenfalls einwandfrei.

        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
        HmIP|ZigBee|Tasmota|Unifi
        Zabbix Certified Specialist
        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

        1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @mike2712 [sagte]: Sobald ich es einmal zuklappe....sind die anderen beiden Parameter verloren

          Du hast offenbar einen Fehler in den Javascript-Funktionen in der aktuellen Version (10.1.3) des JS-Adapters entdeckt, denn mir gelingt es auch nicht, mehrere Parameter zu übergeben.
          Die Javascript-Blöcke spinnen total.

          EDIT: In Version 10.2.3 (Beta) funktionieren die Javascript-Funktionen wieder.

          Globales Skript:

          Blockly_temp.JPG

          Lokales Blockly:

          Blockly_temp.JPG

          Javascript-Funktion:

          g_AlexaAnsage(x, y, z);
          
          M
          M
          mike2712
          schrieb am zuletzt editiert von mike2712
          #13

          @paul53 / @codierknecht

          Vielen Dank, ich dachte schon ich wäre total blöd, funktionieren tut es leider immer noch nicht, aber da schaue ich noch mal in Ruhe.
          Eine Allgemeine Frage, Ich persönlich finde diesen Weg, da ich es in der Art aus der SPS technik kenne eigentlich sehr gut, Funktionen die immer wieder benutzt werden in dieser Art abzulegen.
          Ist es für das System wesentlich langsamer, durch das kopieren in jedem Script, oder welche anderweitigen Nachteile hat es?

          So konnte ich es jetzt auf die schnelle bauen, funktioniert aber nicht.
          image.jpeg

          Das ist das Original wie es funktioniert, hier habe ich das Script in allen Adaptern kopiert, da ich zunächst keine Lösung hatte, wo ist mein Fehler in der oberen Version?

          image.jpeg

          image.jpeg

          avascript.0	20:08:15.688	error	
          Error: ReferenceError: unbenannt is not defined
          javascript.0	20:08:15.689	error	
              at script.js.Device_EchoDot.Skript_1:25:1
          javascript.0	20:08:15.690	error	
              at script.js.Device_EchoDot.Skript_1:32:3
          javascript.0	20:08:15.690	error	
              at Script.runInContext (node:vm:149:12)
          

          ioBroker im Docker auf Qnap TS-453A 16GB Ram 4-Bay

          paul53P CodierknechtC 2 Antworten Letzte Antwort
          0
          • M mike2712

            @paul53 / @codierknecht

            Vielen Dank, ich dachte schon ich wäre total blöd, funktionieren tut es leider immer noch nicht, aber da schaue ich noch mal in Ruhe.
            Eine Allgemeine Frage, Ich persönlich finde diesen Weg, da ich es in der Art aus der SPS technik kenne eigentlich sehr gut, Funktionen die immer wieder benutzt werden in dieser Art abzulegen.
            Ist es für das System wesentlich langsamer, durch das kopieren in jedem Script, oder welche anderweitigen Nachteile hat es?

            So konnte ich es jetzt auf die schnelle bauen, funktioniert aber nicht.
            image.jpeg

            Das ist das Original wie es funktioniert, hier habe ich das Script in allen Adaptern kopiert, da ich zunächst keine Lösung hatte, wo ist mein Fehler in der oberen Version?

            image.jpeg

            image.jpeg

            avascript.0	20:08:15.688	error	
            Error: ReferenceError: unbenannt is not defined
            javascript.0	20:08:15.689	error	
                at script.js.Device_EchoDot.Skript_1:25:1
            javascript.0	20:08:15.690	error	
                at script.js.Device_EchoDot.Skript_1:32:3
            javascript.0	20:08:15.690	error	
                at Script.runInContext (node:vm:149:12)
            
            paul53P
            paul53P
            paul53
            schrieb am zuletzt editiert von
            #14

            @mike2712 [sagte]: Fehler in der oberen Version?

            Test_A ist eine Funktion in einem aktivierten Skript unter der Gruppe "global"?

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: Asus PN42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

            1 Antwort Letzte Antwort
            1
            • M mike2712

              @paul53 / @codierknecht

              Vielen Dank, ich dachte schon ich wäre total blöd, funktionieren tut es leider immer noch nicht, aber da schaue ich noch mal in Ruhe.
              Eine Allgemeine Frage, Ich persönlich finde diesen Weg, da ich es in der Art aus der SPS technik kenne eigentlich sehr gut, Funktionen die immer wieder benutzt werden in dieser Art abzulegen.
              Ist es für das System wesentlich langsamer, durch das kopieren in jedem Script, oder welche anderweitigen Nachteile hat es?

              So konnte ich es jetzt auf die schnelle bauen, funktioniert aber nicht.
              image.jpeg

              Das ist das Original wie es funktioniert, hier habe ich das Script in allen Adaptern kopiert, da ich zunächst keine Lösung hatte, wo ist mein Fehler in der oberen Version?

              image.jpeg

              image.jpeg

              avascript.0	20:08:15.688	error	
              Error: ReferenceError: unbenannt is not defined
              javascript.0	20:08:15.689	error	
                  at script.js.Device_EchoDot.Skript_1:25:1
              javascript.0	20:08:15.690	error	
                  at script.js.Device_EchoDot.Skript_1:32:3
              javascript.0	20:08:15.690	error	
                  at Script.runInContext (node:vm:149:12)
              
              CodierknechtC
              CodierknechtC
              Codierknecht
              Developer Most Active
              schrieb am zuletzt editiert von
              #15

              @mike2712 sagte:
              Ist es für das System wesentlich langsamer, durch das kopieren in jedem Script, oder welche anderweitigen Nachteile hat es?

              Langsamer wohl kaum.
              Auch der benötigte zusätzliche Speicherplatz dürfte zu vernachlässigen sein.

              Der (für mich) größte Nachteil: Jede noch so kleine Änderung an einem globalen Script erzwingt einen Neustart der Instanz.

              Außerdem ist zu beachten, dass in globalen Scripten Variablen eindeutige Namen haben müssen. Sonst kollidiert das mit den Variablen in den anderen Scripten.

              wo ist mein Fehler in der oberen Version?

              Ich rate mal: Deine Variablen und die Parameter haben identische Bezeichner.
              Ich persönlich würde entweder die Parameter oder die Variablen ändern in "Device", "Tag", "Message".
              Und in "Test_A" (dem globalen Script) müssen die wiederum eindeutige Namen tragen.

              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

              Proxmox 9.1.1 LXC|8 GB|Core i7-6700
              HmIP|ZigBee|Tasmota|Unifi
              Zabbix Certified Specialist
              Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

              M paul53P 2 Antworten Letzte Antwort
              1
              • CodierknechtC Codierknecht

                @mike2712 sagte:
                Ist es für das System wesentlich langsamer, durch das kopieren in jedem Script, oder welche anderweitigen Nachteile hat es?

                Langsamer wohl kaum.
                Auch der benötigte zusätzliche Speicherplatz dürfte zu vernachlässigen sein.

                Der (für mich) größte Nachteil: Jede noch so kleine Änderung an einem globalen Script erzwingt einen Neustart der Instanz.

                Außerdem ist zu beachten, dass in globalen Scripten Variablen eindeutige Namen haben müssen. Sonst kollidiert das mit den Variablen in den anderen Scripten.

                wo ist mein Fehler in der oberen Version?

                Ich rate mal: Deine Variablen und die Parameter haben identische Bezeichner.
                Ich persönlich würde entweder die Parameter oder die Variablen ändern in "Device", "Tag", "Message".
                Und in "Test_A" (dem globalen Script) müssen die wiederum eindeutige Namen tragen.

                M
                M
                mike2712
                schrieb am zuletzt editiert von
                #16

                @Codierknecht / @paul53

                Ich danke euch beiden, ja das Problem war das ich auf jeden Fall zu ungeduldig gewesen bin, wegen den Neustart.

                Und was ich nicht bedacht hatte, auch irgendwie nicht verstehe, das der Name der Funktion nicht gleich sein darf, ich habe gedacht es muss sogar zwingend gleich sein, nachdem ich dann die Funktion in Buero umbenannt hatte ging es.
                Ja das ist das Problem wenn man nur mit halbwissen an so etwas rangeht, ich danke euch für eure Unterstützung.

                image.jpeg

                image.jpeg

                ioBroker im Docker auf Qnap TS-453A 16GB Ram 4-Bay

                1 Antwort Letzte Antwort
                0
                • CodierknechtC Codierknecht

                  @mike2712 sagte:
                  Ist es für das System wesentlich langsamer, durch das kopieren in jedem Script, oder welche anderweitigen Nachteile hat es?

                  Langsamer wohl kaum.
                  Auch der benötigte zusätzliche Speicherplatz dürfte zu vernachlässigen sein.

                  Der (für mich) größte Nachteil: Jede noch so kleine Änderung an einem globalen Script erzwingt einen Neustart der Instanz.

                  Außerdem ist zu beachten, dass in globalen Scripten Variablen eindeutige Namen haben müssen. Sonst kollidiert das mit den Variablen in den anderen Scripten.

                  wo ist mein Fehler in der oberen Version?

                  Ich rate mal: Deine Variablen und die Parameter haben identische Bezeichner.
                  Ich persönlich würde entweder die Parameter oder die Variablen ändern in "Device", "Tag", "Message".
                  Und in "Test_A" (dem globalen Script) müssen die wiederum eindeutige Namen tragen.

                  paul53P
                  paul53P
                  paul53
                  schrieb am zuletzt editiert von
                  #17

                  @Codierknecht [sagte: in globalen Scripten Variablen eindeutige Namen haben müssen.

                  Übergabeparameter an Funktionen sind lokale Variablen innerhalb der Funktion, die Vorrang vor globalen Variablen (mit gleichem Bezeichner) haben.

                  @mike2712 sagte:

                  irgendwie nicht verstehe, das der Name der Funktion nicht gleich sein darf

                  Funktionsbezeichner sind global im Skript und müssen deshalb unterschiedlich sein.

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: Asus PN42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

                  CodierknechtC 1 Antwort Letzte Antwort
                  1
                  • paul53P paul53

                    @Codierknecht [sagte: in globalen Scripten Variablen eindeutige Namen haben müssen.

                    Übergabeparameter an Funktionen sind lokale Variablen innerhalb der Funktion, die Vorrang vor globalen Variablen (mit gleichem Bezeichner) haben.

                    @mike2712 sagte:

                    irgendwie nicht verstehe, das der Name der Funktion nicht gleich sein darf

                    Funktionsbezeichner sind global im Skript und müssen deshalb unterschiedlich sein.

                    CodierknechtC
                    CodierknechtC
                    Codierknecht
                    Developer Most Active
                    schrieb am zuletzt editiert von
                    #18

                    @paul53 sagte:

                    Übergabeparameter an Funktionen sind lokale Variablen innerhalb der Funktion, die Vorrang vor globalen Variablen (mit gleichem Bezeichner) haben.

                    Danke für die Info. Ich war mir dabei nicht sicher.
                    Dann ist es auch hier so wie in anderen Sprachen üblich.

                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                    HmIP|ZigBee|Tasmota|Unifi
                    Zabbix Certified Specialist
                    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                    OliverIOO 1 Antwort Letzte Antwort
                    1
                    • CodierknechtC Codierknecht

                      @paul53 sagte:

                      Übergabeparameter an Funktionen sind lokale Variablen innerhalb der Funktion, die Vorrang vor globalen Variablen (mit gleichem Bezeichner) haben.

                      Danke für die Info. Ich war mir dabei nicht sicher.
                      Dann ist es auch hier so wie in anderen Sprachen üblich.

                      OliverIOO
                      OliverIOO
                      OliverIO
                      schrieb am zuletzt editiert von OliverIO
                      #19

                      @Codierknecht

                      Wenn du mehr darüber lesen willst kannst du mal nach block scope variables, shadowing und hoisting suchen.
                      Deren leider nicht immer offensichtliche Funktionsweise bei JavaScript führt gelegentlich zu Problemen.
                      Da findet man auch den Unterschied zwischen
                      let und var

                      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#variables

                      Und die darauf anschließenden Abschnitte

                      Meine Adapter und Widgets
                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                      Links im Profil

                      1 Antwort Letzte Antwort
                      1

                      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                      Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                      Registrieren Anmelden
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      398

                      Online

                      33.1k

                      Benutzende

                      83.8k

                      Themen

                      1.4m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2026
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe