Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. javascripte generieren

    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

    javascripte generieren

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

      Hallo,

      kann ich eigentlich aus einem javascript heraus ein anderes javascript generieren? Was ich bräuche wäre sowas in der Art

      1. Script A stoppt Script B
      2. Script A schreibt neuen javascript code in Script B
      3. Script A startet Script B

      Danke 🙂
      Georg

      htrecksler UncleSam 2 Replies Last reply Reply Quote 0
      • htrecksler
        htrecksler Forum Testing @Goersch last edited by

        @goersch was wäre der Anwendungsfall?

        1 Reply Last reply Reply Quote 0
        • UncleSam
          UncleSam Developer @Goersch last edited by

          @goersch Ich wüsste nicht wie das ginge, aber ich habe auch noch nie einen Fall gesehen, wo man in diesem Fall Code generieren müsste. Ich schliesse mich also @htrecksler an: was willst du machen?!

          Goersch 1 Reply Last reply Reply Quote 0
          • Goersch
            Goersch @UncleSam last edited by

            Mittels zB einer csv Tabelle ca. 100 Eingangs- und 50 Ausgangsstates definieren, die aus einem TCPIP Telegramm gelesen und abgelegt werden sollen. Die TCPIP Telegramme können sich ändern. Gleichzeitig Funktionen anlegen, mittels denen man die Werte der States direkt lesen/schreiben kann, ohne dabei mit getState/setState direkt arbeiten zu müssen.

            (ganz grob beschrieben, da steckt noch mehr dahinter).

            Ich könnte natürlich für einen Teil der benötigten Funktionen auch den Code eines Adapter generieren lassen. Stoppen/Starten der Adapter geht ja aus der javascript Instanz. Dann hab ich aber nicht alles, was ich brauch.

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

              @goersch Irgendwie verwirrt mich das... einerseits willst du Code generieren und andererseits willst du aber Funktionen verwenden können, die sich verändern können.

              In meinen knapp zwanzig Jahren Software Entwicklung habe ich nur selten einen Fall erlebt, wo wirklich Code generiert werden musste.

              Wenn du dein Problem etwas konkreter erklären kannst, kann ich dir sicher eine Lösung aufzeigen.

              Goersch 1 Reply Last reply Reply Quote 0
              • Goersch
                Goersch @UncleSam last edited by

                @unclesam
                🙂 auch nach 20 Jahren kann man noch von jemandem lernen, der seit mehr als 30 Jahren dabei ist. Code zB aus einer Tabelle, etc. zu generieren, ist eigentlich einer der typischen Dinge, auf die ich immer wieder treffe.

                Ich habe eine Menge externer E/As (sowohl boolean als auch number), die von einer externen Struktur auf eine interne Struktur gemapped werden müssen. IdR ist sowas einfacher anhand einer config Tabelle (CSV, etc) zu konfigurieren und den notwendigen Code generieren zu lassen, anstatt das x-fach händisch zu programmieren. Zudem sind in der CSV dann auch direkt defaults, units, Beschreibungen, etc enthalten, so dass man alles was man an Code braucht auch generieren lassen kann. So hat man - wenn man es richtig macht - auch direkt Dokumentation ausserhalb des Codes und funktionierenden Code, wenn der Code-Generator einmal funktioniert.

                Goersch 1 Reply Last reply Reply Quote 0
                • Goersch
                  Goersch @Goersch last edited by Goersch

                  Beispiel vergessen

                  Wo ich hin will: Im Script kein getState('idXYZ').val zu verwenden, sondern in den globals eine Funktion getXYZ(). Wenn der Wert XYZ aber auf Grund einer Änderung der Schnittstelle in idABC liegt, kann ich das in der CSV konfigurieren, der Code generator baut das getXYZ richtig und der restliche Code bekommt gar nicht mit, dass der Wert aus idABC anstatt idXYZ kommt.

                  Nur eines der Beispiele.

                  Anderes Beispiel: Einfache select, insert, updates für definierte Tables generieren:
                  let result = selectSHEET(id);
                  insertSheet(id,value1,value2);
                  usw.

                  Goersch 1 Reply Last reply Reply Quote 0
                  • Goersch
                    Goersch @Goersch last edited by

                    das geht teilweise natürlich auch ohne Code generator - nur ist generierter Code idR deutlich schneller als zB ein
                    getOwnState('ABC') und getOwnState muss erst mal in einer Liste nachschauen, welcher Wert jetzt gelesen werden muss.

                    UncleSam 1 Reply Last reply Reply Quote 0
                    • UncleSam
                      UncleSam Developer @Goersch last edited by

                      @goersch In JavaScript kannst du ja auch einfach neue Funktionen erstellen. Ein (blödes) Beispiel:

                      var funcs = {};
                      funcs['abc'] = function () {};
                      
                      // Aufruf
                      funcs.abc();
                      

                      ‘abc' würde natürlich aus deinem CSV oder so kommen. Damit hast du "dynamische" Methoden Namen.

                      Und: bezüglich Geschwindigkeit würde ich mir bei JavaScript hier keine Gedanken machen, die Engine ist sehr schlau und viele lookups werden optimiert.

                      Goersch 1 Reply Last reply Reply Quote 0
                      • Goersch
                        Goersch @UncleSam last edited by

                        @UncleSam
                        🙂 ... und bezüglich Speicher und Geschwindigkeit brauchen wir uns keine sorgen zu machen ... 12 Monate später: äh, ich brauch da noch mal x Vcores in meiner VM und ein bisschen mehr RAM wäre auch gut ... oh, der Server ist am Limit ... ja, dann muss ich doch mal Anfangen über meine Code nachzudenken ...

                        Mir ist eine andere Idee gekommen. Ich lass den javascript Code extern generieren und mach dann Copy&Paste. Das sollte erst mal gehen.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        762
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        javascript
                        3
                        10
                        429
                        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