@azamir Ja, ich denke das ist der Fall. Aber Skripte laufen doch auch so unabhängig voneinander. Ich wüsste nicht, wie man Daten zwischen denen teilen kann.
NEWS
Best posts made by zerraxys
-
RE: Modulare Skripe
Latest posts made by zerraxys
-
RE: Unifi-Adapter Anmeldeprobleme
@looxer01 Mit dem Fix treten die Timeouts immer noch gelegentlich auf. Er sollte es dann aber eine Minute später (oder was auch immer das Update-Interval ist) erneut versuchen. Das heißt, der Adapter sollte sich nicht mehr komplett weghängen.
-
RE: Modulare Skripe
@azamir Ja, ich denke das ist der Fall. Aber Skripte laufen doch auch so unabhängig voneinander. Ich wüsste nicht, wie man Daten zwischen denen teilen kann.
-
RE: Modulare Skripe
Ich stehe vor dem selben Problem und experimentiere gerade mit einer Lösung über eval (ich weiß, das ist eigentlich evil). Als globale Funktion habe ich ein load Skript, dass wir folgt aussieht
const loadCache = {}; function load (filename) { if (!loadCache[filename]) { const path = require("path"); const fs = require("fs"); const fn = path.resolve("opt", "iobroker", "iobroker-scripts", "scripts", "Modules", filename) + ".js"; const source = fs.readFileSync(fn, "utf8"); var module = {}; eval(source); loadCache[filename] = module.exports; } return loadCache[filename]; };
In meinen Skripten kann ich miit einem einfachen
var meinModul = load("mein_modul");
die Datei /opt/iobroker/iobroker-scripts/scripts/Modules/mein_modul.js laden und deren "module.exports"-Wert bekommen. Offene Ideen sind im Moment noch:
- Das globale require überladen, damit es natürlicher aussieht
- Den Pfad irgendwie zur Laufzeit bestimmen, damit er nicht hart eingebrannt ist
Aber zumindest läuft es erstmal und ich kann anfangen, etwas Ordnung zu schaffen.