Wir arbeiten gerade an neuem JS-Controller Mode - "Compact".
In diesem Modus startet js-controller alle Adapter (die diesen Modus unterstützen) in dem selben Prozess wie js-controller.
Dabei gewinnt man speicher, die für gemeinsame npm Module benutz wird, aber verliert an der Stabilität.
Per Adapter spart man minimum 40MB RAM. Dieses Modus ist für die Systeme mit wenig Speicher gedacht. Z.b Raspi Zero mit 512 MB.
Aktuell können und sollten nur die erfahrene Entwickler diesen Modus ausprobieren. Ich denke, ab März werden dann keine neue Adapter akzeptiert ohne Unterstützung für diesen Modus.
Ich konnte ca. 8 Adapter in einer Stunde umbauen. Dafür muss man folgendes tun:
1. io-package.json => common.compact = true setzen.
2. main.js modifizieren
War
const adapter = new utils.Adapter({
name: ...,
stateChange: function () {...},
...
});
Ändern auf:
let adapter;
function startAdapter(options) {
options = options || {};
Object.assign(options, {
name: ...,
stateChange: function () {...},
...
});
adapter = new utils.Adapter(options);
return adapter;
});
Und ganz am Ende von der Datei:
// If started as allInOne/compact mode => return function to create instance
if (module && module.parent) {
module.exports = startAdapter;
} else {
// or start the instance directly
startAdapter();
}
3. Alle process.exit ersetzen auf:
adapter.terminate ? adapter.terminate() : process.exit()
4. Um diesen Modus bei js-controller zu aktivieren sollte man in iobroker-data/iobroker.json => system.compact = true setzen. (wie hier https://github.com/ioBroker/ioBroker.js … t.json#L12)
Natürlich diesen Modus unterstützt nur der js-controller vom git (branch master) : https://github.com/ioBroker/ioBroker.js ... /master
Wenn Ihr Eure Adapter umgebaut habt bitte eine kurze Info in https://docs.google.com/spreadsheets/d/ ... sp=sharing eintragen. Hier auch bitte "Planned" reinschreiben wenn man einen/seinen Adapter startet und Status eintragen