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.
  • 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
                      • T ticaki

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

                        Richtig:

                        const einVariablenName: ScriptAdapter = thisVomJavascriptAdapter;
                        einVariablenName.setState();
                        
                        U Offline
                        U Offline
                        uwe72
                        schrieb am zuletzt editiert von uwe72
                        #55

                        Habe für mich mal eine funktionierende Lösung in einem neuen Post aufgeschrieben:
                        https://forum.iobroker.net/topic/78632/info-auslagerung-von-scripte-aus-global-aufs-filesystem

                        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

                        950

                        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