NEWS
(ERLEDIGT!) TypeScript, viele common/global Scripte --> CPU
-
@uwe72
Das ist keine "simple" Lösung sondern einfach nur aufwendiger wie javascript zu schreiben. Typescript mit any ist javascript nur transpilierbarAber 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 esthis.adapter.setState()
sein müsste.Hat spass gemacht.
-
@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?
-
@ticaki ok, das mit den Fehlermeldungen....da wirst Du wohl recht haben. So weit bin ich noch nicht
-
@ticaki Auch wenn wir noch leicht unterschiedliche Lösungen haben, würde ich sagen, dass das gemeinsame Wochenende erfolgreich war.
-
@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
-
Hab die Types noch in Ordnung gebracht.
setState()
ist jetzt ein Fehler.Richtig:
const einVariablenName: ScriptAdapter = thisVomJavascriptAdapter; einVariablenName.setState();
-
@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 -
@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.
-
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());
das ist der Fehler und ich komme nicht darauf woher dieser kommt.
-
-
@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 }
-
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