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

  • Information zum Kontoabgleich und zur Namensänderung
    BluefoxB
    Bluefox
    10
    1
    384

  • Monatsrückblick Juli / August 2026 ist online!
    BluefoxB
    Bluefox
    9
    1
    1.9k

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    1.5k

eigene Funktion in Blockly (widerkehrende Funktion)

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
18 Beiträge 5 Kommentatoren 176 Aufrufe 4 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.
  • M
    M
    mike2712
    schrieb zuletzt editiert von
    #1

    ich würde gerne die rechte Funktion auch aus anderen Blöcken aufrufen,
    das Problem ist das ich mich zu dumm anstelle diese Funktion mit den 3 Eingangsvariablen irgendwo aufzurufen

    • diverse ähnlichen Problemstellungen haben mir bislang nicht geholfen
    • das Script unter globale gespeichert, einmal als Blockly und JS
    • in einem anderem Script erscheint nicht die angelegte Funktion
    • mit selben Namen vergeben klappt es nicht, sobald ich 3 Eingangsparameter vegebe, wird nach dem speichern das auf einem reduziert

    Denke das kann ja eigentlich nicht so schwer sein, ich möchte gerne viele diverse Funktionen global erstellen so das ich nur eine Stelle zum optimieren habe.
    Was mache ich falsch?

    image.jpeg

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

    CodierknechtC 1 Antwort Letzte Antwort
    0
    • geschildG
      geschildG
      geschild
      schrieb zuletzt editiert von
      #2

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

      M 1 Antwort Letzte Antwort
      0
      • geschildG geschild

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

        M
        M
        mike2712
        schrieb zuletzt editiert von mike2712
        #3

        @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

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

        paul53P 1 Antwort Letzte Antwort
        0
        • M mike2712

          ich würde gerne die rechte Funktion auch aus anderen Blöcken aufrufen,
          das Problem ist das ich mich zu dumm anstelle diese Funktion mit den 3 Eingangsvariablen irgendwo aufzurufen

          • diverse ähnlichen Problemstellungen haben mir bislang nicht geholfen
          • das Script unter globale gespeichert, einmal als Blockly und JS
          • in einem anderem Script erscheint nicht die angelegte Funktion
          • mit selben Namen vergeben klappt es nicht, sobald ich 3 Eingangsparameter vegebe, wird nach dem speichern das auf einem reduziert

          Denke das kann ja eigentlich nicht so schwer sein, ich möchte gerne viele diverse Funktionen global erstellen so das ich nur eine Stelle zum optimieren habe.
          Was mache ich falsch?

          image.jpeg

          CodierknechtC
          CodierknechtC
          Codierknecht
          Developer Most Active
          schrieb zuletzt editiert von Codierknecht
          #4

          @mike2712

          Ich befürchte, Du unterliegst hier einem Denkfehler.

          "Globale Scripte" in ioBroker sollte man nicht mit Bibliotheken oder ähnlichem verwechseln, wie man es aus anderen Sprachen kennt.

          Was in globalen Scripten in ioBroker deklariert ist, wird beim Start eines jeden anderen Script mit in dieses hineinkopiert, bevor es startet.
          Es ist also auch nicht so ohne weiteres möglich, an einer zentralen Stelle "herumzuschrauben". Denn bei einer Änderung an einem globalen Script müssen alle anderen Scripte neu gestartet werden. Das dürfte auch ein Grund dafür sein, dass bei Änderungen an einem globalen Script die komplette JS-Instanz angehalten wird.

          Wenn man seine Scripte direkt als JavaScript verfasst, funktioniert das sogar. Man kann dann in allen Scripten Funktionen aus globalen Scripten aufrufen.
          In Blockly funktioniert das aber so nicht. Man kann höchstens globale Scripte in JavaScript verfassen und in einem Blockly-Script wiederum eine JS-Funktion deklarieren, die diese zentrale Funktion aufruft.
          Schöner wird's dadurch allerdings auch nicht.

          Meine Empfehlung: Wer in JavaScript oder auch anderen Sprachen halbwegs sattelfest ist, sollte darüber nachdenken alle seine Scripte in JS zu verfassen. So habe ich das gemacht ... nach und nach.
          Neben dem Vorteil, hier auch zentrale Funktionen nutzen zu können, hat man mehr Möglichkeiten der Optimierung. So sind z.B. Konstanten nur in JS und nicht in Blockly einsetzbar.

          Man sollte es aber mit den globalen Scripten auch nicht übertreiben.
          Wie bereits geschrieben: Alles was dort steht wird in jedes "reguläre" Script mit rein kopiert.

          Eine andere Variante wäre, eine eigene Bibliothek zu schaffen und im Dateisystem abzulegen. Die kann man dann mit "require" verwenden. Geht aber auch nur, wenn man seine Scripte auf JS umstellt.

          "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 1 Antwort Letzte Antwort
          0
          • CodierknechtC Codierknecht

            @mike2712

            Ich befürchte, Du unterliegst hier einem Denkfehler.

            "Globale Scripte" in ioBroker sollte man nicht mit Bibliotheken oder ähnlichem verwechseln, wie man es aus anderen Sprachen kennt.

            Was in globalen Scripten in ioBroker deklariert ist, wird beim Start eines jeden anderen Script mit in dieses hineinkopiert, bevor es startet.
            Es ist also auch nicht so ohne weiteres möglich, an einer zentralen Stelle "herumzuschrauben". Denn bei einer Änderung an einem globalen Script müssen alle anderen Scripte neu gestartet werden. Das dürfte auch ein Grund dafür sein, dass bei Änderungen an einem globalen Script die komplette JS-Instanz angehalten wird.

            Wenn man seine Scripte direkt als JavaScript verfasst, funktioniert das sogar. Man kann dann in allen Scripten Funktionen aus globalen Scripten aufrufen.
            In Blockly funktioniert das aber so nicht. Man kann höchstens globale Scripte in JavaScript verfassen und in einem Blockly-Script wiederum eine JS-Funktion deklarieren, die diese zentrale Funktion aufruft.
            Schöner wird's dadurch allerdings auch nicht.

            Meine Empfehlung: Wer in JavaScript oder auch anderen Sprachen halbwegs sattelfest ist, sollte darüber nachdenken alle seine Scripte in JS zu verfassen. So habe ich das gemacht ... nach und nach.
            Neben dem Vorteil, hier auch zentrale Funktionen nutzen zu können, hat man mehr Möglichkeiten der Optimierung. So sind z.B. Konstanten nur in JS und nicht in Blockly einsetzbar.

            Man sollte es aber mit den globalen Scripten auch nicht übertreiben.
            Wie bereits geschrieben: Alles was dort steht wird in jedes "reguläre" Script mit rein kopiert.

            Eine andere Variante wäre, eine eigene Bibliothek zu schaffen und im Dateisystem abzulegen. Die kann man dann mit "require" verwenden. Geht aber auch nur, wenn man seine Scripte auf JS umstellt.

            M
            M
            mike2712
            schrieb zuletzt editiert von
            #5

            @Codierknecht

            erstmal vielen Dank für die Antwort, sicherlich ist es auf Dauer einfacher es direkt in JS zu machen, aber leider habe ich aktuell keinen Plan.
            Das dieses script in JS sein muss habe ich gelesen, das habe ich so versucht, siehe Test_B. Auch habe ich gelesen das es in jedem Script quasi reinkopiert wird.

            Das mit einer Bibliothek, so mache ich es bei SPS Steuerungen ja auch hört sich interessant an.
            Ein Script in Blockly zu erstellen und dann in JS zu kopieren ist sicherlich nicht der schönste weg, aber das bekomme ich ja hin.
            Allerdings weiß ich jetzt noch gar nicht was "Require" ist, ist das über Blockly aufrufbar?

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

            CodierknechtC Meister MopperM paul53P 3 Antworten Letzte Antwort
            0
            • M mike2712

              @Codierknecht

              erstmal vielen Dank für die Antwort, sicherlich ist es auf Dauer einfacher es direkt in JS zu machen, aber leider habe ich aktuell keinen Plan.
              Das dieses script in JS sein muss habe ich gelesen, das habe ich so versucht, siehe Test_B. Auch habe ich gelesen das es in jedem Script quasi reinkopiert wird.

              Das mit einer Bibliothek, so mache ich es bei SPS Steuerungen ja auch hört sich interessant an.
              Ein Script in Blockly zu erstellen und dann in JS zu kopieren ist sicherlich nicht der schönste weg, aber das bekomme ich ja hin.
              Allerdings weiß ich jetzt noch gar nicht was "Require" ist, ist das über Blockly aufrufbar?

              CodierknechtC
              CodierknechtC
              Codierknecht
              Developer Most Active
              schrieb zuletzt editiert von Codierknecht
              #6

              @mike2712

              In einem globalen Script habe ich folgendes deklariert:

              image.jpeg

              In jedem Blockly Script kann ich nun folgendes machen:

              1. Eine JS-Funktion, die das ganze kapselt
                image.jpeg
                image.jpeg

              2. ... und deren Aufruf
                image.jpeg

              Funktioniert wie erwartet

              javascript.0	18:04:55.950	info	start JavaScript (Blockly)
              javascript.0	18:04:55.952	info	Blubb42
              javascript.0	18:04:55.952	info	registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
              

              Den Aufruf der Funktion kann jetzt selbstverständlich mehrmals im Blockly vorkommen. Mit jeweils anderen Parametern.

              Schön geht aber anders 😞

              "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 1 Antwort Letzte Antwort
              0
              • M mike2712

                @Codierknecht

                erstmal vielen Dank für die Antwort, sicherlich ist es auf Dauer einfacher es direkt in JS zu machen, aber leider habe ich aktuell keinen Plan.
                Das dieses script in JS sein muss habe ich gelesen, das habe ich so versucht, siehe Test_B. Auch habe ich gelesen das es in jedem Script quasi reinkopiert wird.

                Das mit einer Bibliothek, so mache ich es bei SPS Steuerungen ja auch hört sich interessant an.
                Ein Script in Blockly zu erstellen und dann in JS zu kopieren ist sicherlich nicht der schönste weg, aber das bekomme ich ja hin.
                Allerdings weiß ich jetzt noch gar nicht was "Require" ist, ist das über Blockly aufrufbar?

                Meister MopperM
                Meister MopperM
                Meister Mopper
                Most Active
                schrieb zuletzt editiert von
                #7

                @mike2712

                Ist dir bewusst, dass ein globales Skript automatisch an jedes vorhandene Skript angehängt wird?

                Wenn du es änderst, starten alle Skripte neu.

                Proxmox und HA ...
                Ich schreibe den Code nicht mehr selbst – ich schimpfe mit der KI, bis es funktioniert.

                1 Antwort Letzte Antwort
                0
                • M mike2712

                  @Codierknecht

                  erstmal vielen Dank für die Antwort, sicherlich ist es auf Dauer einfacher es direkt in JS zu machen, aber leider habe ich aktuell keinen Plan.
                  Das dieses script in JS sein muss habe ich gelesen, das habe ich so versucht, siehe Test_B. Auch habe ich gelesen das es in jedem Script quasi reinkopiert wird.

                  Das mit einer Bibliothek, so mache ich es bei SPS Steuerungen ja auch hört sich interessant an.
                  Ein Script in Blockly zu erstellen und dann in JS zu kopieren ist sicherlich nicht der schönste weg, aber das bekomme ich ja hin.
                  Allerdings weiß ich jetzt noch gar nicht was "Require" ist, ist das über Blockly aufrufbar?

                  paul53P
                  paul53P
                  paul53
                  schrieb zuletzt editiert von paul53
                  #8

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

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

                  M 1 Antwort Letzte Antwort
                  0
                  • CodierknechtC Codierknecht

                    @mike2712

                    In einem globalen Script habe ich folgendes deklariert:

                    image.jpeg

                    In jedem Blockly Script kann ich nun folgendes machen:

                    1. Eine JS-Funktion, die das ganze kapselt
                      image.jpeg
                      image.jpeg

                    2. ... und deren Aufruf
                      image.jpeg

                    Funktioniert wie erwartet

                    javascript.0	18:04:55.950	info	start JavaScript (Blockly)
                    javascript.0	18:04:55.952	info	Blubb42
                    javascript.0	18:04:55.952	info	registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                    

                    Den Aufruf der Funktion kann jetzt selbstverständlich mehrmals im Blockly vorkommen. Mit jeweils anderen Parametern.

                    Schön geht aber anders 😞

                    M
                    M
                    mike2712
                    schrieb zuletzt editiert von
                    #9

                    @Codierknecht das ist ja eigentlich das was ich erreichen möchte, ich bekomme nur meine 3 unterschiedlichen Parameter nicht übergeben, er löscht das immer bis auf 1 weg

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

                    1 Antwort Letzte Antwort
                    0
                    • 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 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 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 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 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 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 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 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 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
                                    0
                                    • 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 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

                                      1 Antwort Letzte Antwort
                                      0

                                      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

                                      436

                                      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