Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. (ERLEDIGT!) TypeScript, viele common/global Scripte --> CPU

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

(ERLEDIGT!) TypeScript, viele common/global Scripte --> CPU

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
55 Beiträge 10 Kommentatoren 6.2k Aufrufe 7 Watching
  • Ä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.
  • OliverIOO OliverIO

    @uwe72 sagte in (ERLEDIGT!) TypeScript, viele common/global Scripte --> CPU:

    sendTo

    ja das externe script hat ersteinmal keinen bezug zum aktuellen context in dem die funktionen verfügbar sind.

    wenn du testweise in einem separaten script von iobroker das folgende ausführst,
    dann siehst du alles was im script context verfügbar ist.
    wenn du an dein externes script this mit übergibst, dann kannst du dann unter der empfangenden variable dort, alle befehle erreichen.

    console.log(Object.keys(this).join(",\n"));
    

    Beipsiel

    iobroker script

    const xx=require("externesSkript");
    xx.externeFunktion(this)
    

    externes Skript

    export Function externeFunktion(iob) {
      iob.log("Logausgabe im iobroker log");
    }
    

    Hab das jetzt nicht direkt getestet, aber so müsste es grob laufen.

    Wenn du im externen script mit vscode arbeitest, dann erwarte da ersteinmal keine syntax überprüfung, da müsste man sciherlich noch eine type definition hinzufügen. aber da weiß ich auch nix

    U Offline
    U Offline
    uwe72
    schrieb am zuletzt editiert von
    #35

    @oliverio Danke dir! Werde ich mir anschauen. VG

    1 Antwort Letzte Antwort
    0
    • OliverIOO OliverIO

      @uwe72 sagte in (ERLEDIGT!) TypeScript, viele common/global Scripte --> CPU:

      sendTo

      ja das externe script hat ersteinmal keinen bezug zum aktuellen context in dem die funktionen verfügbar sind.

      wenn du testweise in einem separaten script von iobroker das folgende ausführst,
      dann siehst du alles was im script context verfügbar ist.
      wenn du an dein externes script this mit übergibst, dann kannst du dann unter der empfangenden variable dort, alle befehle erreichen.

      console.log(Object.keys(this).join(",\n"));
      

      Beipsiel

      iobroker script

      const xx=require("externesSkript");
      xx.externeFunktion(this)
      

      externes Skript

      export Function externeFunktion(iob) {
        iob.log("Logausgabe im iobroker log");
      }
      

      Hab das jetzt nicht direkt getestet, aber so müsste es grob laufen.

      Wenn du im externen script mit vscode arbeitest, dann erwarte da ersteinmal keine syntax überprüfung, da müsste man sciherlich noch eine type definition hinzufügen. aber da weiß ich auch nix

      T Nicht stören
      T Nicht stören
      ticaki
      schrieb am zuletzt editiert von ticaki
      #36

      @oliverio
      Danke geht:

      const { Person } = require('/home/iobroker/library/lib.js');
      const joe = new Person("Joe", "Müller", 31, this);
      log(joe.information());
      joe.log();
      

      lib.ts

      class Person {
          private nachname: string;
          private vorname: string;
          private alter: string;
          private adapter: any;
          constructor(vorname, nachname, alter, adapter) {
            this.vorname = vorname;
            this.nachname = nachname;
            this.alter = alter;
            this.adapter = adapter;
          }
        
          information(): string {
            return (`Mein Name ist ${this.vorname} ${this.nachname} und ich bin ${this.alter} Jahre alt!!!!1`);
          }
          log(): void {
              this.adapter.log(this.information());
          }
        }
       
      module.exports = { Person};
      

      muss nur noch raus bekommen welchen Type adapter haben sollte.

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      OliverIOO 1 Antwort Letzte Antwort
      0
      • T ticaki

        @oliverio
        Danke geht:

        const { Person } = require('/home/iobroker/library/lib.js');
        const joe = new Person("Joe", "Müller", 31, this);
        log(joe.information());
        joe.log();
        

        lib.ts

        class Person {
            private nachname: string;
            private vorname: string;
            private alter: string;
            private adapter: any;
            constructor(vorname, nachname, alter, adapter) {
              this.vorname = vorname;
              this.nachname = nachname;
              this.alter = alter;
              this.adapter = adapter;
            }
          
            information(): string {
              return (`Mein Name ist ${this.vorname} ${this.nachname} und ich bin ${this.alter} Jahre alt!!!!1`);
            }
            log(): void {
                this.adapter.log(this.information());
            }
          }
         
        module.exports = { Person};
        

        muss nur noch raus bekommen welchen Type adapter haben sollte.

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von
        #37

        @ticaki sagte in (ERLEDIGT!) TypeScript, viele common/global Scripte --> CPU:

        this.adapter.log(this.information());

        hm, geht wahrscheinlich nix kauptt, aber ich würde dann lieber this.log nehmen.
        this.adapter.log ist die funktion des javascript adapters.
        damit umgehst du wahrscheinlich eigene log verarbeitung des javascript-adapters.
        ich würde alles was bei this.adapter verfügbar ist in ruhe lassen und nicht verwenden.

        wäre glaube ich ein hinsweis darauf, das die sandbox des javascript-adapters ein loch hat

        lustig ist das adapter in der auflistung, des kleinen testscripts nicht mit aufgeführt wird

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

        T 1 Antwort Letzte Antwort
        0
        • OliverIOO OliverIO

          @ticaki sagte in (ERLEDIGT!) TypeScript, viele common/global Scripte --> CPU:

          this.adapter.log(this.information());

          hm, geht wahrscheinlich nix kauptt, aber ich würde dann lieber this.log nehmen.
          this.adapter.log ist die funktion des javascript adapters.
          damit umgehst du wahrscheinlich eigene log verarbeitung des javascript-adapters.
          ich würde alles was bei this.adapter verfügbar ist in ruhe lassen und nicht verwenden.

          wäre glaube ich ein hinsweis darauf, das die sandbox des javascript-adapters ein loch hat

          lustig ist das adapter in der auflistung, des kleinen testscripts nicht mit aufgeführt wird

          T Nicht stören
          T Nicht stören
          ticaki
          schrieb am zuletzt editiert von ticaki
          #38

          @oliverio
          Lese den Code nochmal this ist Person this.adapter ist this im javascript adapter :)

          Heißt

          ---lib ------------------ Javascript Adapter
          this.adapter.log('bla') == this.log('bla')
          

          Hab das extra in adapter umbenannt, weils auch so im adapter gemacht wird (zumindest von mir)

          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

          Spenden

          OliverIOO 1 Antwort Letzte Antwort
          0
          • T ticaki

            @oliverio
            Lese den Code nochmal this ist Person this.adapter ist this im javascript adapter :)

            Heißt

            ---lib ------------------ Javascript Adapter
            this.adapter.log('bla') == this.log('bla')
            

            Hab das extra in adapter umbenannt, weils auch so im adapter gemacht wird (zumindest von mir)

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von
            #39

            @ticaki

            ah jetzt, hab nicht in den constructor geschaut.
            so sieht es auch aus wenn du einen adapter entwickelst.
            da bekommst du über das adapter attribut auch zugriff
            aber ist nicht das selbe wie im adapter

            hier ist übrigens die typeinformation für die befehle im javascript adapter.
            https://github.com/ioBroker/ioBroker.javascript/blob/939b0b0a70dd857684afc10be6732467fb3a5208/lib/javascript.d.ts

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

            T 1 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              @ticaki

              ah jetzt, hab nicht in den constructor geschaut.
              so sieht es auch aus wenn du einen adapter entwickelst.
              da bekommst du über das adapter attribut auch zugriff
              aber ist nicht das selbe wie im adapter

              hier ist übrigens die typeinformation für die befehle im javascript adapter.
              https://github.com/ioBroker/ioBroker.javascript/blob/939b0b0a70dd857684afc10be6732467fb3a5208/lib/javascript.d.ts

              T Nicht stören
              T Nicht stören
              ticaki
              schrieb am zuletzt editiert von ticaki
              #40

              @oliverio
              Danke da bin ich schon dran, das hier geht, muss nur noch types entfernen, bin aber zu faul :) Hab eine class SkriptAdapter in der javascript.d.ts in meinem repo hinzugefügt.
              https://github.com/ticaki/script-library-example/blob/b51649045526c4c1466da759a05d4edd26b1c871/.iobroker/types/javascript.d.ts#L1728

              https://github.com/ticaki/script-library-example

              class Person {
                  private nachname: string;
                  private vorname: string;
                  private alter: string;
                  private adapter: ScriptAdapter;
              

              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

              Spenden

              U 1 Antwort Letzte Antwort
              1
              • T ticaki

                @oliverio
                Danke da bin ich schon dran, das hier geht, muss nur noch types entfernen, bin aber zu faul :) Hab eine class SkriptAdapter in der javascript.d.ts in meinem repo hinzugefügt.
                https://github.com/ticaki/script-library-example/blob/b51649045526c4c1466da759a05d4edd26b1c871/.iobroker/types/javascript.d.ts#L1728

                https://github.com/ticaki/script-library-example

                class Person {
                    private nachname: string;
                    private vorname: string;
                    private alter: string;
                    private adapter: ScriptAdapter;
                
                U Offline
                U Offline
                uwe72
                schrieb am zuletzt editiert von
                #41

                @ticaki

                Habe zwar hier die letzten 2 Kommentare nicht mehr im Detail verstanden, den
                grundsätzlichen Ansatz aber schon. Freue mich das Ganze auszuprobieren. Leider erst ab der 2. Wochenhälfte. Auch wenn die Diskussionen auf 2-3 Threads verteilt waren, waren sie dennoch zielführend :-)

                Werde erst einmal die ursprüngliche Lösung, reines externe TS-File, dieses zu einem *.js "kompilieren" versuchen. Wenn man den Adapter im Konstruktor mit rein gibt, müsste es ja auch ohne Fehlermeldung die *.js Datei erstellen können.

                T 1 Antwort Letzte Antwort
                0
                • U uwe72

                  @ticaki

                  Habe zwar hier die letzten 2 Kommentare nicht mehr im Detail verstanden, den
                  grundsätzlichen Ansatz aber schon. Freue mich das Ganze auszuprobieren. Leider erst ab der 2. Wochenhälfte. Auch wenn die Diskussionen auf 2-3 Threads verteilt waren, waren sie dennoch zielführend :-)

                  Werde erst einmal die ursprüngliche Lösung, reines externe TS-File, dieses zu einem *.js "kompilieren" versuchen. Wenn man den Adapter im Konstruktor mit rein gibt, müsste es ja auch ohne Fehlermeldung die *.js Datei erstellen können.

                  T Nicht stören
                  T Nicht stören
                  ticaki
                  schrieb am zuletzt editiert von ticaki
                  #42

                  @uwe72 sagte in (ERLEDIGT!) TypeScript, viele common/global Scripte --> CPU:

                  @ticaki

                  Habe zwar hier die letzten 2 Kommentare nicht mehr im Detail verstanden, den
                  grundsätzlichen Ansatz aber schon.

                  Dabei geht es um Typen - wenn du mein github repo als basis nimmst werden dort folgende Befehle kompiliert.

                  // das ist richtig
                  const irgendwas: ScriptAdapter;
                  irgendwas = thisVomJavascriptadapter
                  irgendwas.setState()
                  
                  // folgendes wird ebenfalls kompiliert ist aber falsch und geht nicht
                  setState()
                  // werde das die Tage noch aus der d.ts datei löschen.
                  

                  Wenn du vscode benutzt um zu programmieren, geht mit dem repo ebenfalls das Autovervollständigen und Tooltips zu Funktionen.

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  U 1 Antwort Letzte Antwort
                  0
                  • T ticaki

                    @uwe72 sagte in (ERLEDIGT!) TypeScript, viele common/global Scripte --> CPU:

                    @ticaki

                    Habe zwar hier die letzten 2 Kommentare nicht mehr im Detail verstanden, den
                    grundsätzlichen Ansatz aber schon.

                    Dabei geht es um Typen - wenn du mein github repo als basis nimmst werden dort folgende Befehle kompiliert.

                    // das ist richtig
                    const irgendwas: ScriptAdapter;
                    irgendwas = thisVomJavascriptadapter
                    irgendwas.setState()
                    
                    // folgendes wird ebenfalls kompiliert ist aber falsch und geht nicht
                    setState()
                    // werde das die Tage noch aus der d.ts datei löschen.
                    

                    Wenn du vscode benutzt um zu programmieren, geht mit dem repo ebenfalls das Autovervollständigen und Tooltips zu Funktionen.

                    U Offline
                    U Offline
                    uwe72
                    schrieb am zuletzt editiert von uwe72
                    #43

                    @ticaki Ok, ich werde mir deinen Weg auch noch anschauen.

                    Aber eine sehr simple/schlichte Lösung ist die:

                    Eine Datei buch.ts in einem externen Verzeichnis, ohne das drum herum

                    class Buch  {
                    
                        private adapter: any;
                    
                        constructor(adapter) {
                           this.adapter = adapter;
                        }
                    
                        public getCurrentWeekdayAsString() : string {
                            var now = new Date();
                            let weekday = now.getDay();
                    
                                        this.adapter.sendTo("email.0", {
                                            from:    "uwe.clement@gmail.com",                                                                
                                            to:      "uwe.clement@gmail.com",
                                            subject: "Test1",
                                            html: "test2"
                                        });	
                    
                    
                            return this.getWeekdayAsString(weekday);
                        }
                    
                        public getWeekdayAsString(weekday: number) : string {
                            let weekdayAsString;
                            if (weekday == 1) {
                                weekdayAsString = "Montag";
                            } else if (weekday == 2) {
                                weekdayAsString = "Dienstag";
                            } else if (weekday == 3) {
                                weekdayAsString = "Mittwoch";
                            } else if (weekday == 4) {
                                weekdayAsString = "Donnerstag";
                            } else if (weekday == 5) {
                                weekdayAsString = "Freitag";
                            } else if (weekday == 6) {
                                weekdayAsString = "Samstag";
                            } else if (weekday == 7) {
                                weekdayAsString = "Sonntag";
                            } else if (weekday == 0) {
                                weekdayAsString = "Sonntag";
                            }
                            return weekdayAsString;
                        }  
                    
                    }
                    
                    module.exports = { Buch};
                    

                    Buch.ts zu buch.js "kompilieren" (Sorry, Fachbegriff wieder vergessen). Unter Docker muss man im Container drin sein, d.h. z.B. docker exec -it iobroker bash

                    npx tsc buch.ts
                    

                    In Iobroker:

                    const { Buch } = require('/opt/iobroker/my_scripts/buch.js');
                    const myBook = new Buch(this);
                    log("Heute ist: " + myBook.getCurrentWeekdayAsString());
                    

                    Funktionierende Log + Emailversand:

                    aecf0085-fbbb-41b0-a101-7420e3c30827-image.png

                    3e55042d-6cb8-492d-bf51-173d1e2c928c-image.png

                    Ich freue mich nun auf alle Fälle, dass ich alle global-Scripte eliminieren kann. Halte wie gesagt von dieser Architektur nicht so viel.

                    T 1 Antwort Letzte Antwort
                    0
                    • U uwe72

                      @ticaki Ok, ich werde mir deinen Weg auch noch anschauen.

                      Aber eine sehr simple/schlichte Lösung ist die:

                      Eine Datei buch.ts in einem externen Verzeichnis, ohne das drum herum

                      class Buch  {
                      
                          private adapter: any;
                      
                          constructor(adapter) {
                             this.adapter = adapter;
                          }
                      
                          public getCurrentWeekdayAsString() : string {
                              var now = new Date();
                              let weekday = now.getDay();
                      
                                          this.adapter.sendTo("email.0", {
                                              from:    "uwe.clement@gmail.com",                                                                
                                              to:      "uwe.clement@gmail.com",
                                              subject: "Test1",
                                              html: "test2"
                                          });	
                      
                      
                              return this.getWeekdayAsString(weekday);
                          }
                      
                          public getWeekdayAsString(weekday: number) : string {
                              let weekdayAsString;
                              if (weekday == 1) {
                                  weekdayAsString = "Montag";
                              } else if (weekday == 2) {
                                  weekdayAsString = "Dienstag";
                              } else if (weekday == 3) {
                                  weekdayAsString = "Mittwoch";
                              } else if (weekday == 4) {
                                  weekdayAsString = "Donnerstag";
                              } else if (weekday == 5) {
                                  weekdayAsString = "Freitag";
                              } else if (weekday == 6) {
                                  weekdayAsString = "Samstag";
                              } else if (weekday == 7) {
                                  weekdayAsString = "Sonntag";
                              } else if (weekday == 0) {
                                  weekdayAsString = "Sonntag";
                              }
                              return weekdayAsString;
                          }  
                      
                      }
                      
                      module.exports = { Buch};
                      

                      Buch.ts zu buch.js "kompilieren" (Sorry, Fachbegriff wieder vergessen). Unter Docker muss man im Container drin sein, d.h. z.B. docker exec -it iobroker bash

                      npx tsc buch.ts
                      

                      In Iobroker:

                      const { Buch } = require('/opt/iobroker/my_scripts/buch.js');
                      const myBook = new Buch(this);
                      log("Heute ist: " + myBook.getCurrentWeekdayAsString());
                      

                      Funktionierende Log + Emailversand:

                      aecf0085-fbbb-41b0-a101-7420e3c30827-image.png

                      3e55042d-6cb8-492d-bf51-173d1e2c928c-image.png

                      Ich freue mich nun auf alle Fälle, dass ich alle global-Scripte eliminieren kann. Halte wie gesagt von dieser Architektur nicht so viel.

                      T Nicht stören
                      T Nicht stören
                      ticaki
                      schrieb am zuletzt editiert von ticaki
                      #44

                      @uwe72
                      Das ist keine "simple" Lösung sondern einfach nur aufwendiger wie javascript zu schreiben. Typescript mit any ist javascript nur transpilierbar :D

                      Aber im Ernst, die Lösung ist doch das gleich was ich weiter oben vorgeschlagen habe, der Nachschlag ist nur eine Verbesserung dazu.

                      Mit Typen wird dir halt this.adapter.setstate() als Fehler angezeigt, weil es this.adapter.setState() sein müsste.

                      Hat spass gemacht. :)

                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                      Spenden

                      U 2 Antworten Letzte Antwort
                      0
                      • T ticaki

                        @uwe72
                        Das ist keine "simple" Lösung sondern einfach nur aufwendiger wie javascript zu schreiben. Typescript mit any ist javascript nur transpilierbar :D

                        Aber im Ernst, die Lösung ist doch das gleich was ich weiter oben vorgeschlagen habe, der Nachschlag ist nur eine Verbesserung dazu.

                        Mit Typen wird dir halt this.adapter.setstate() als Fehler angezeigt, weil es this.adapter.setState() sein müsste.

                        Hat spass gemacht. :)

                        U Offline
                        U Offline
                        uwe72
                        schrieb am zuletzt editiert von
                        #45

                        @ticaki Ich habe nun eben schon alles in TS, deswegen ist es für mich nicht aufwendiger.

                        Eine Stufe simpler wäre, dass ich nur das buch.js schreibe, nicht transpilieren muss und es dennoch einbinden kann in iobroker.

                        Dennoch verstehe ich noch nicht den Sinn von dem "drum herum", d.h. die vielen anderen Datei tsconfig,json,.../types/javascript.d.ts?

                        U 1 Antwort Letzte Antwort
                        0
                        • T ticaki

                          @uwe72
                          Das ist keine "simple" Lösung sondern einfach nur aufwendiger wie javascript zu schreiben. Typescript mit any ist javascript nur transpilierbar :D

                          Aber im Ernst, die Lösung ist doch das gleich was ich weiter oben vorgeschlagen habe, der Nachschlag ist nur eine Verbesserung dazu.

                          Mit Typen wird dir halt this.adapter.setstate() als Fehler angezeigt, weil es this.adapter.setState() sein müsste.

                          Hat spass gemacht. :)

                          U Offline
                          U Offline
                          uwe72
                          schrieb am zuletzt editiert von uwe72
                          #46

                          @ticaki ok, das mit den Fehlermeldungen....da wirst Du wohl recht haben. So weit bin ich noch nicht :-)

                          U 1 Antwort Letzte Antwort
                          0
                          • U uwe72

                            @ticaki ok, das mit den Fehlermeldungen....da wirst Du wohl recht haben. So weit bin ich noch nicht :-)

                            U Offline
                            U Offline
                            uwe72
                            schrieb am zuletzt editiert von
                            #47

                            @ticaki Auch wenn wir noch leicht unterschiedliche Lösungen haben, würde ich sagen, dass das gemeinsame Wochenende erfolgreich war.

                            1 Antwort Letzte Antwort
                            0
                            • U uwe72

                              @ticaki Ich habe nun eben schon alles in TS, deswegen ist es für mich nicht aufwendiger.

                              Eine Stufe simpler wäre, dass ich nur das buch.js schreibe, nicht transpilieren muss und es dennoch einbinden kann in iobroker.

                              Dennoch verstehe ich noch nicht den Sinn von dem "drum herum", d.h. die vielen anderen Datei tsconfig,json,.../types/javascript.d.ts?

                              U Offline
                              U Offline
                              uwe72
                              schrieb am zuletzt editiert von uwe72
                              #48

                              @ticaki und mal im Ernst, das ist schon eine krasse Verbesserung zum bisherigen Konzept, Code über die global.Scripte einzubinden. Man kann nun gezielt Code-Frakmente eibinden an Stellen wo man sie benötigt. Und dies auch noch in TS

                              1 Antwort Letzte Antwort
                              0
                              • T Nicht stören
                                T Nicht stören
                                ticaki
                                schrieb am zuletzt editiert von
                                #49

                                Hab die Types noch in Ordnung gebracht. setState() ist jetzt ein Fehler.

                                Richtig:

                                const einVariablenName: ScriptAdapter = thisVomJavascriptAdapter;
                                einVariablenName.setState();
                                

                                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                Spenden

                                U 1 Antwort Letzte Antwort
                                0
                                • arteckA Offline
                                  arteckA Offline
                                  arteck
                                  Developer Most Active
                                  schrieb am zuletzt editiert von arteck
                                  #50

                                  @uwe72 sagte in (ERLEDIGT!) TypeScript, viele common/global Scripte --> CPU:

                                  Ich habe aus ca. 40 (kleineren) Common-Scripte ca. 25 (größere) gemacht und von 8 global Scripten auf 5 reduziert.

                                  Ich laufe nun zumindest nicht mehr in das CPU-Problem rein. Das Speichern nach dem Ändern eines Global-Script dauert nun ca. 5 Minuten.

                                  Übrigens, das Ändern von Common-Scripten ist nie ein Problem, auch vor der "Optimierung" nicht.

                                  ach.ne...hab ich dir das nicht auf Facebook gesagt... reduziere die Global scripte...
                                  wie war nochmal deine Antwort..ach ja... ICH WEISS

                                  zigbee hab ich, zwave auch, nuc's genauso und HA auch

                                  U 1 Antwort Letzte Antwort
                                  -1
                                  • arteckA arteck

                                    @uwe72 sagte in (ERLEDIGT!) TypeScript, viele common/global Scripte --> CPU:

                                    Ich habe aus ca. 40 (kleineren) Common-Scripte ca. 25 (größere) gemacht und von 8 global Scripten auf 5 reduziert.

                                    Ich laufe nun zumindest nicht mehr in das CPU-Problem rein. Das Speichern nach dem Ändern eines Global-Script dauert nun ca. 5 Minuten.

                                    Übrigens, das Ändern von Common-Scripten ist nie ein Problem, auch vor der "Optimierung" nicht.

                                    ach.ne...hab ich dir das nicht auf Facebook gesagt... reduziere die Global scripte...
                                    wie war nochmal deine Antwort..ach ja... ICH WEISS

                                    U Offline
                                    U Offline
                                    uwe72
                                    schrieb am zuletzt editiert von uwe72
                                    #51

                                    @arteck ich weiß, dass global-Scripte in common reinkopiert werden. Die Lösung ist es nicht nur global-Scripte zu reduzieren wenn das Ziel ist redundantfreien code zu erzeugen. Wenn du die threads vom Wochenende hier verfolgt, dann gibt es bessere Ansätze. Dein Hinweis brachte mir einfach keinen Mehrwert.

                                    1 Antwort Letzte Antwort
                                    0
                                    • Z Offline
                                      Z Offline
                                      zi_manuel
                                      schrieb am zuletzt editiert von
                                      #52

                                      Hallo habe heute mal probiert wie bei uwe72 die class Buch von extern aufzurufen habe dafür mittlerweile sogar den gleichen Pfad eingerichtet aber leider ohne Erfolg hab auch zu der Fehlermeldung nichts gefunden. Kann mir dazu jemand weiterhelfen?

                                      const { Buch } = require('/opt/iobroker/my_scripts/buch.js');
                                      const myBook = new Buch(this);
                                      log("Heute ist: " + myBook.getCurrentWeekdayAsString());
                                      

                                      66b47860-dcf7-48c3-b209-4fb659dfd927-image.png

                                      das ist der Fehler und ich komme nicht darauf woher dieser kommt.

                                      OliverIOO 1 Antwort Letzte Antwort
                                      0
                                      • Z zi_manuel

                                        Hallo habe heute mal probiert wie bei uwe72 die class Buch von extern aufzurufen habe dafür mittlerweile sogar den gleichen Pfad eingerichtet aber leider ohne Erfolg hab auch zu der Fehlermeldung nichts gefunden. Kann mir dazu jemand weiterhelfen?

                                        const { Buch } = require('/opt/iobroker/my_scripts/buch.js');
                                        const myBook = new Buch(this);
                                        log("Heute ist: " + myBook.getCurrentWeekdayAsString());
                                        

                                        66b47860-dcf7-48c3-b209-4fb659dfd927-image.png

                                        das ist der Fehler und ich komme nicht darauf woher dieser kommt.

                                        OliverIOO Offline
                                        OliverIOO Offline
                                        OliverIO
                                        schrieb am zuletzt editiert von
                                        #53

                                        @zi_manuel

                                        Dazu
                                        Muss man Buch.js sehen

                                        Wahrscheinlich ist da keine Klasse definiert

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

                                        Z 1 Antwort Letzte Antwort
                                        0
                                        • OliverIOO OliverIO

                                          @zi_manuel

                                          Dazu
                                          Muss man Buch.js sehen

                                          Wahrscheinlich ist da keine Klasse definiert

                                          Z Offline
                                          Z Offline
                                          zi_manuel
                                          schrieb am zuletzt editiert von zi_manuel
                                          #54

                                          @oliverio als mit klassen bin ich erst vor kurzen dahinter gestiegen und versuche mich daran. sollte aber so passen. hab das von oberen Post heraus kopiert.

                                          warum ist eigentlich bei module.exports = { Buch } in den klammern, genauso wie bein const { Buch } =?

                                          class Buch {
                                              constructor(adapter) {
                                                this.adapter = adapter
                                              }
                                            
                                              getCurrentWeekdayAsString() {
                                                var now = new Date()
                                                let weekday = now.getDay()
                                            
                                                /*this.adapter.sendTo("email.0", {
                                                  from: "uwe.clement@gmail.com",
                                                  to: "uwe.clement@gmail.com",
                                                  subject: "Test1",
                                                  html: "test2"
                                                })*/
                                            
                                                return this.getWeekdayAsString(weekday)
                                              }
                                            
                                              getWeekdayAsString(weekday) {
                                                let weekdayAsString
                                                if (weekday == 1) {
                                                  weekdayAsString = "Montag"
                                                } else if (weekday == 2) {
                                                  weekdayAsString = "Dienstag"
                                                } else if (weekday == 3) {
                                                  weekdayAsString = "Mittwoch"
                                                } else if (weekday == 4) {
                                                  weekdayAsString = "Donnerstag"
                                                } else if (weekday == 5) {
                                                  weekdayAsString = "Freitag"
                                                } else if (weekday == 6) {
                                                  weekdayAsString = "Samstag"
                                                } else if (weekday == 7) {
                                                  weekdayAsString = "Sonntag"
                                                } else if (weekday == 0) {
                                                  weekdayAsString = "Sonntag"
                                                }
                                                return weekdayAsString
                                              }
                                            }
                                            
                                            module.exports = { Buch }
                                          
                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          486

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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